代码如下 | 复制代码 |
<? ?> |
代码如下 | 复制代码 |
function Sec2Time($time){ if(is_numeric($time)){ $value = array( "years" => 0, "days" => 0, "hours" => 0, "minutes" => 0, "seconds" => 0, ); if($time >= 31556926){ $value["years"] = floor($time/31556926); $time = ($time%31556926); } if($time >= 86400){ $value["days"] = floor($time/86400); $time = ($time%86400); } if($time >= 3600){ $value["hours"] = floor($time/3600); $time = ($time%3600); } if($time >= 60){ $value["minutes"] = floor($time/60); $time = ($time%60); } $value["seconds"] = floor($time); return (array) $value; }else{ return (bool) FALSE; } } |
原理是
如果数据通过了上边的两次验证,说明数据是合法有效的数据。这时候我们把提交的数据串接为一个字符串,并用MD5加密后得到一个MD5的值,接着我们把这个值通过Cookie放进客户端,当用户下一次提交表单的时候我们就重新操作这一步,并且读出Cookie中的MD5值,进行比较,如果相同就可断定用户提交两次提交的表单是相同的,否则替换这个Cookie!
代码如下 | 复制代码 |
<?php //…… $lasthash = $HTTP_COOKIE_VARS["lasthash"]; //读取上一次设置的Cookie值 if(count($HTTP_POST_VARS)) { $long = ""; while(list($key,$value)=each($HTTP_POST_VARS))$long.=$value; $hash = md5($long); setcookie("lasthash",$hash,time()+60*60*24*30); //重新设置cookie } if($lasthash!=$hash) { // 如果两次的MD5值不一样就对数据进行进一步操作 } else { //如果两次MD5的值相同,告知用户提交失败 } //…… ?> |
行删除文件夹的操作时,必须首先确保您有这个权限!
代码如下 | 复制代码 |
<?php function removeDir($dirName) |
如何使用php做站内搜索并高亮显示关键字?
代码如下 | 复制代码 |
<?php require_once 'sqlTools.class.php';//封装类,可执行dql、dml语句 $info=$_POST['info']; $sql="select name,password,email from user_500 where name like '%$info%' or password like '%$info%' or email like '%$info%'"; $sqlTools=new SqlTools(); $res=$sqlTools->execute_dql($sql); while ($row=mysql_fetch_assoc($res)){ $row['name']=preg_replace("/($info)/i","<b style="color:red">\1</b>",$row['name']); $row['password']=preg_replace("/($info)/i","<b style="color:red">\1</b>",$row['password']); $row['email']=preg_replace("/($info)/i","<b style="color:red">\1</b>",$row['email']); echo $row['name']."-->".$row['password']."-->".$row['email']."<br>"; } ?> |
思路分析:
将sql语句中包含的%$info%交给DBMS执行的时候,他会查找字段中含有变量$info的值的信息,
%$info--->查找以$info的值结束的信息
$info%--->查找以$info的值开头的信息
通过正则函数preg_replace()将搜索到的关键字高亮显示,比如,
$row['name']=preg_replace("/($info)/i","<b style="color:red">\1</b>",$row['name']);
的意思是:通过POST方接收到的值$info替换为加上样式(红色加粗)的结果,并将结果重新赋给$row[‘name’]
如果要搜索多个关键字的话,可以对接收到值$info进行分割,比如$info_more=explode(" ",$info);//这种方式能对以空格隔开的关键字进行分割,再对分割后的结果挨个进行查询,同样,可以使用正则表达式函数进行替换工作,以高亮显示关键字
代码如下 | 复制代码 |
sqlTools.class.php的源代码: <?php class SqlTools{ private $host="localhost"; private $dbname="test"; private $dbuser="root"; private $dbpwd=""; private $conn; public function __construct(){ $this->conn=mysql_connect($this->host,$this->dbuser,$this->dbpwd); if(!$this->conn){ die("连接数据库失败".mysql_error()); } mysql_select_db($this->dbname,$this->conn) or die("找不到该数据库".mysql_error()); mysql_query("set names utf8"); } public function execute_dml($sql){ $bool=mysql_query($sql); if ($bool){ if ($bool>0) { return 1; }else{ return 2; } }else { return 0; } } public function execute_dql($sql){ $res=mysql_query($sql); return $res; } public function close_conn(){ mysql_close($this->conn); } } ?> |