一、php防止站外远程提交表单的方法 例子一:我们每一次打开提交页面生成一个token然后保存在sess
一、php防止站外远程提交表单的方法
例子一:我们每一次打开提交页面生成一个token然后保存在session中,当表单提交时我们来判断当前的token值与session是否一致,如果是的就是正常提交否则就是无效提交了。
具体代码如下:
<?php session_start(); if ($_POST['submit'] == "go"){ //check token if ($_POST['token'] == $_SESSION['token']){ //strip_tags $name = strip_tags($_POST['name']); $name = substr($name,0,40); //clean out any potential hexadecimal characters $name = cleanHex($name); //continue processing.... }else{ //stop all processing! remote form posting attempt! } } $token = md5(uniqid(rand(), true)); $_SESSION['token']= $token; function cleanHex($input){ $clean = preg_replace("![\][xX]([A-Fa-f0-9]{1,3})!", "",$input); return $clean; } ?> < form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> < p><label for="name">Name</label> < input type="text" name="name" id="name" size="20" maxlength="40"/></p> < input type="hidden" name="token" value="<?php echo $token;?>"/> < p><input type="submit" name="submit" value="go"/></p> < /form>
例子二:增加验证码
if($_POST['vcode'] != get_vcode()) { exit('验证码校验失败,无法入库'); }
二、php 解决和避免form表单重复提交的方法
利用js设置按钮点击后变成灰色
$(document).ready(function(){ $(input:submit).click(){ setTimeout(function(){obj.disabled=true;},100) }; });
利用session
加载提交的页面时候,生成一个随机数,
$code = mt_rand(0,1000000);
存储在表单的隐藏输入框中:
< input type="hidden" name="code" value="“>
<?php session_start(); if(isset($_POST['code'])) { if($_POST['code'] == $_SESSION['code']){ // 重复提交表单了 }else{ $_SESSION['code'] =$_POST['code']; //存储code } }?>
利用cookies
if(isset($_POST['submit'])){ setcookie("tempcookie","",time()+30); header("Location:".$_SERVER[PHP_SELF]);exit(); } if(isset($_COOKIE["tempcookie"])){ setcookie("tempcookie","",0);echo "您已经提交过表单"; }
上一篇:JS常用代码合集一
下一篇:php各种优酷,土豆,视频封装类
评论列表
发表评论
热评文章
相关阅读