php防止数据重复提交,php 防止重复提交

PHP 怎么防止GET方式提交重复数据?

PHP 防止表单重复提交,使用令牌来做验证,即可解决。示例如下:

创新互联公司基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业四川雅安服务器托管报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。

index.php:

?php 

header("Content-type:text/html;charset=utf-8");

//开启session

session_start();

//如果令牌为空,则生成一个令牌

if(!isset($_SESSION['token'] )    || $_SESSION['token'] == ""){

//给当前表单生成一个令牌

$_SESSION['token'] = md5(microtime(true));

}

?

form method="get" action="deal.php"

名称: input type="text" name="names"br/

描述: input type="text" name="desc"br/

input type="text" name="token" value="?=$_SESSION['token']?"

input type="submit" value="提交"

/form

deal.php:

?php

header("Content-type:text/html;charset=utf-8");

//开启session

session_start();

//验证令牌

if($_REQUEST['token'] === $_SESSION['token']){

//表单已经提交,重新生成令牌

$_SESSION['token'] = md5(microtime(true));

echo "表单提交成功:br/";

print_r($_REQUEST);

}else{

echo "重复提交";

}

?

php选择框的session防止重复提交问题

大致看了下,主要两个问题:

1)session_start(),代码里仅在没有提交且没有生成过session时才执行,这直接导致提交时$_SESSION未定义

2)隐藏值originator,value="?=$value?",$value从哪来的?应该是$code吧。但如果是$code,那必然又和$_SESSION['code']一致了

可以考虑以$_SESSION['code']是否存作为判断是否第一次提交的依据,示例代码如下:

----------------------------------------------------------

?php session_start(); ?

!-- 页面显示部分 --

html

form id="form2" name="form2" method="post" action=""

div align="left"请选择数据:

select name="select" id="select"

?php

$App = new AppInfo();

$appData=$App-appInfo;

foreach ($appData as $k=$v) {

echo 'option value="', $v['id'], '"', $v['name'], '/option';

}

?

/select

input type ="submit" value ="提交"/

/div

/form

input type="button" value="返回主页" onclick="location.href='/player/server/views/index.html'"

!-- 提交处理部分 --

?php

if( isset( $_POST['select'] ) ){

if( isset( $_SESSION['code'] ) ){

echo '请不要刷新页面或重复提交表单!';

}else{

$uss = new UserAction();

$uss-userSubmit($_POST['select']);

$_SESSION['code'] = TRUE;

}

}?

/html

php 如何防止表单重复提交呢

在php中如何防止表单的重复提交

?php

/*

* php中如何防止表单的重复提交

*/

session_start();

if (empty($_SESSION['ip'])) {//第一次写入操作,判断是否记录了IP地址,以此知道是否要写入数据库

$_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; //第一次写入,为后面刷新或后退的判断做个铺垫

//...........//写入数据库操作

} else {//已经有第一次写入后的操作,也就不再写入数据库

echo '请不要再次刷新和后退'; //写一些已经写入的提示或其它东西

}

?

还有办法就是:

1、在页面生成随机码,也就是每次提交随机码都不一样,在提交的时候验证随机码!

2、在提交的时候,验证如果数据存在,就不提交了

php 提交表单到当前页面如何防止页面刷新重复提交~

最常用的方法就是利用token。即:

1、在生成页面的时候生成一个token(随机字符串),并把它同时写入表单的某个hidden中,和服务端的session中。

2、客户端提交表单到服务器时,比对表单中的token与session中的token是否一致。若不一致则认为是无效的请求。

3、不管第2步的校验是否通过,token只要使用一次后就立即作废(即:从session中销毁)。同时token也可以关联时间信息,超时后也自动作废。

这样,即便客户端重复提交,也只有第一次的请求能够成功。

PHP防止重复提交方法

你都已经会用token来做防提交了,用$_COOKIE来设定时间

提交成功,保存COOKIE

setcookie('lastposttime', time(), time()+86400*24);

然后判断发布时间

time() - $_COOKIE['lastposttime'])  60 (单位秒)

现在就不会重复提交了

php如何避免刷新页面重复提交

可以采用ajax配合使用php可以防止刷新页面重复提交

也可以使用框架同样可以防止

你直接访问数据处理页面的时候,$_POST['title'],$_POST['num] 应该是空值,所以你增加一个判断,必须有具体的值,再进行sql操作。


当前标题:php防止数据重复提交,php 防止重复提交
网页URL:http://azwzsj.com/article/hdepdi.html