php利用cookie防止重复提交解决办法

 更新时间:2016年11月25日 17:31  点击:1961
本文章介绍了关于如何利用cookie来防止用户重复提交相同的数据的解决办法,

原理是
如果数据通过了上边的两次验证,说明数据是合法有效的数据。这时候我们把提交的数据串接为一个字符串,并用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+google api实现代码,有需要的朋友可以参考一下。
 代码如下 复制代码

<?
$xml = simplexml_load_file('http://www.google.com/ig/api?weather=长沙');
$information = $xml->xpath("/xml_api_reply/weather/current_conditions/condition");
echo $information[0]->attributes();

?>

php删除目录及文件的文件原是就是先检查此目录下是否有文件,如果有,是文件夹的话就再调用此函数删除,如果是文件就直接调用 unlink 删除,最后删除此目录。

行删除文件夹的操作时,必须首先确保您有这个权限!

 代码如下 复制代码

<?php
// 说明: 删除非空目录的解决方案

function removeDir($dirName)
{
    if(! is_dir($dirName))
    {
        return false;
    }
    $handle = @opendir($dirName);
    while(($file = @readdir($handle)) !== false)
    {
        if($file != '.' && $file != '..')
        {
            $dir = $dirName . '/' . $file;
            is_dir($dir) ? removeDir($dir) : @unlink($dir);
        }
    }
    closedir($handle);
 
    return rmdir($dirName) ;
}
?>

本文章介绍一篇较实用的文章关于php做站内搜索并高亮显示关键字,这个很多朋友直接利用preg_replace来操作,这是正确的哦,不过我觉得用str_replace更快一些哦。至于原因自己查查这两个函数的区别吧。

如何使用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);

              }

       }

?>

本文章主要是介绍了在php中操作json格式数据转换程序,我们利用了json_decode()和json_encode()这两个函数来进行操作方便很多,有需要学习的朋友可以参考一下本实例。

第一步我们利用json_encode()函数把数据转换成json数据

 代码如下 复制代码
<?php
//php中用数组表示JSON格式数据
$arr = array(
'firstname' => iconv('gb2312', 'utf-8', '非诚'),
'lastname' => iconv('gb2312', 'utf-8', '勿扰'),
'contact' => array(
'email' =>'fcwr@111cn.net',
'website' =>'http://www.111cn.net',
)
);
//将数组编码成JSON数据格式
$json_string = json_encode($arr);
//JSON格式数据可直接输出
echo $json_string;
?>

此转换函数只支持utf-8格式的如果中间有中文可以利用iconv或者mb转为UTF-8再进行json_encode,这样就不会有任何问题。

第二步,对数据进行解析我们也用一个php json处理函数json_decode()了,代码如下

 代码如下 复制代码
<?php
//php中用数组表示JSON格式数据
$arr = array(
'firstname' => iconv('gb2312', 'utf-8', '非诚'),
'lastname' => iconv('gb2312', 'utf-8', '勿扰'),
'contact' => array(
'email' =>'fcwr@111cn.net',
'website' =>'http://www.111cn.net',
)
);
//将数组编码成JSON数据格式
$json_string = json_encode($arr);
//将JSON格式数据进行解码,解码后不是JSON数据格式,不可用echo直接输出
$obj = json_decode($json_string);
//强制转化为数组格式
$arr = (array) $obj;
//按数组方式调用里面的数据
echo iconv('utf-8','gb2312',$arr['firstname']);
echo '</br>';
//输出数组结构
print_r($arr);
?>

好了实例就讲到了这里了关于
json_decode()参考 http://www.111cn.net/phper/18/32827.htm
json_encode()参考 http://www.111cn.net/phper/18/32827.htm

[!--infotagslink--]

相关文章

  • phpems SQL注入(cookies)分析研究

    PHPEMS(PHP Exam Management System)在线模拟考试系统基于PHP+Mysql开发,主要用于搭建模拟考试平台,支持多种题型和展现方式,是国内首款支持题冒题和自动评分与教师评分相...2016-11-25
  • PHP session_start()很慢问题分析与解决办法

    本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25
  • php中json_decode()和json_encode()用法与中文不显示解决办法

    本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。 php中json_decode()和json_encode() 1.json_decode(...2016-11-25
  • phpexcel导出数据身份证后四位0000解决办法

    在php中我们如果要导入excel数据我们通常会使用phpexcel插件了,但是有朋友会发与使用phpexcel导出数据出现身份证后四位是0000情况了,下面我们就来看解决办法。 最...2016-11-25
  • 401错误码代表什么 401错误解决办法

    401是HTTP状态码的一种,属于“请示错误”,表示请求可能出错,已妨碍了服务器对请求的处理。具体的401错误是指:未授权,请求要求进行身份验证。登录后,服务器可能会返回对页面...2017-01-22
  • apache网站提示503错误解决办法

    Apache status 503 的原因大致有如下几种情况 : 1、 CPU 负载过高,服务器响应不过来,返回503 2、 系统连接数超限,超过MaxVhostClients的上限,返回503 3、 单IP连接数超限,超过M...2016-01-28
  • Perl CPAN::Modulelist的解决办法

    今天用CPAN安装Term::ReadLine,报了个这样的错误 Going to read /root/.cpan/sources/modules/03modlist.data.gz Can't locate object method "data" via package "C...2016-11-25
  • phpStudy访问速度慢和启动失败的解决办法

    下面给大家介绍phpstudy访问速度慢的解决办法。1、修改mysql数据库链接地址为ip地址127.0.0.1。2、使用最新版本,这个坑了我好久时间。下面一段内容是关于phpstudy启动失败的解决办法。php5.3、5.4和apache都是用vc9编...2015-11-24
  • PHP Curl出现403错误的解决办法

    自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果...2014-05-31
  • JS使用cookie实现DIV提示框只显示一次的方法

    本文实例讲述了JS使用cookie实现DIV提示框只显示一次的方法。分享给大家供大家参考,具体如下:这里运用JavaScript的cookie技术,控制网页上的提示DIV只显示一次,也就是当用户是第一次打开网页的时候才显示,第二次自动隐藏起...2015-11-08
  • PHP判断上传文件类型的解决办法

    分享给大家php判断上传文件类型的方法,大家一起学习学习。/** * 读取文件前几个字节 判断文件类型 * @return String */ function checkTitle($filename){ $file=fopen($filename, "rb"); $bin=fread($file, 2); /...2015-10-21
  • PHP中SSO Cookie登录分析和实现

    什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • PHP中SSO Cookie登录分析和实现

    什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
  • MYSQL数据库使用UTF-8中文编码乱码的解决办法

    1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21
  • php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法

    最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21
  • PHP页面转UTF-8中文编码乱码的解决办法

    对于乱码这个问题php开发者几乎都会有碰到过,我们下面主要是介绍了php文件乱码和页面乱码。PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题...2015-10-21
  • vue项目中js-cookie的使用存储token操作

    这篇文章主要介绍了vue项目中js-cookie的使用存储token操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-14
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • Ubuntu15下mysql5.6.25不支持中文的解决办法

    apt-get install 安装的,不是源码包安装的mysql1 修改mysql的配置文件/etc/mysql/conf.d/mysql.cnf在[mysql]的下方加入如下语句:(注:这个文件下没有配置,只有【mysql】)no-auto-rehash default-character-set=utf8/etc/...2015-10-21