一、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各种优酷,土豆,视频封装类
评论列表
发表评论
热评文章
相关阅读