PHP利用token防止表单重复提交

PHP利用token防止表单重复提交

ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器

<?php 
/* 
* PHP简单利用token防止表单重复提交 
*/


/*

基本思路:

1、先判断session中的token是否设置,如果没有则设置token的值(加密的时间格式)

2、判断是否提交了数据,如果没有提交数据,则显示表格,如果提交了数据则进行判断

3、进行数据判断的时候先拿表单提交的token值和Php中本身第一次设置的session值进行判断,一样则返回true,不一样返回false,然后再次重新设置session中token的值

4、最后进行显示,如果数据判断中返回的是true则提示提交成功,如果返回的是false则提示不能重复提交

*/
	//开启session
	session_start();
	//设置编码格式为UTF-8
	header("content-type:text/html;charset=utf-8");

	//设置token的值
	function set_token(){
		//给token令牌设定值,microtime返回的是unix时间戳
		$_SESSION['token']=md5(microtime(true));
	}

	//判断是否重复提交
	function valid_token(){
		$res=$_POST['token']==$_SESSION['token']?true:false;
		set_token();
		return $res;
	}

	//判断令牌是否为空
	if (empty($_SESSION['token'])) {
		set_token();
	}

	//判断是否提交了数据
	if (!empty($_POST['web'])) {
		if (!valid_token()) {
			echo '不要重复提交';
		}else{
			echo '提交成功';
		}
	}else{
?>
	<form method="post" action=""> 
	<input type="hidden" name="token" value="<?php echo $_SESSION['token'];?>"> 
	<input type="text" class="input" name="web" value="www.jb51.net"> 
	<input type="submit" class="btn" value="提交" /> 
	</form>
<?php
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值