이 글에서는 반복적인 폼 제출을 방지하기 위한 PHP+Session 솔루션을 주로 소개하겠습니다. 필요하신 분들은 참고하시면 됩니다.
index.php
현재 폼 페이지는_submit으로 설정되어 있습니다. 0
SESSION_START(); $_SESSION['is_submit'] = 0; <form id="reg" action="post.php" method="post"> <p>用户名:<input type="text" class="input" name="username" id="user"></p> <p>密 码:<input type="password" class="input" name="password" id="pass"></p> <p>E-mail:<input type="text" class="input" name="email" id="email"></p> <p><input type="submit" name="submit" class="btn" value="提交注册"/></p> </form>
post.php
양식이 제출되면 현재 'is_submit'을 1로 설정하고 post.php를 새로 고치면 else 코드가 실행됩니다
SESSION_START(); if (isset($_POST['submit'])) { if ($_SESSION['is_submit'] == '0') { $_SESSION['is_submit'] = '1'; echo "代码块,要做的事,代码...<a onclick='history.go(-1);' href='javascript:void(0)'>返回</a>"; } else { echo "请不用重复提交<a href='index.php'>PHP+SESSION防止表单重复提交</a>"; } }
php 반복 제출 문제를 해결하기 위한 구현 방법 소개
[소개] 반복 제출은 개발 중에 자주 발생하는 문제로, 양식의 반복 제출을 방지하기 위해 js를 사용하는 것 외에도 php를 사용하여 여러 가지 방법을 사용할 수 있습니다. 반복 제출을 방지합니다.
예제 1 코드는 다음과 같습니다
중복 제출은 개발 중에 자주 발생하는 문제입니다. js를 사용하여 양식의 반복 제출을 방지하는 것 외에도 PHP를 사용하여 반복 제출을 방지할 수도 있습니다.
예제1
코드는 다음과 같습니다
<?php /* * php中如何防止表单的重复提交 */ session_start(); if (empty($_SESSION['ip'])) {//第一次写入操作,判断是否记录了IP地址,以此知道是否要写入数据库 $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; //第一次写入,为后面刷新或后退的判断做个铺垫 //...........//写入数据库操作 } else {//已经有第一次写入后的操作,也就不再写入数据库 echo '请不要再次刷新和后退'; //写一些已经写入的提示或其它东西 } ?>
구체적인 원리
세션 범위 변수 토큰을 방지합니다.
1. 세션 열기:
session_start();
session_start();
2. 如果有表单提交
代码如下 复制代码
if (isset($token))
2. 양식 제출이 있는 경우
코드는 다음과 같습니다. 코드를 복사하세요
if (isset($ token))
<input type="hidden" name="token" value="<?php echo $token; ?>" />
if ($_SESSION["token"] != $token) { // 不让重复提交,在此处理 // header("location:".$_SERVER['PHP_SELF']); } else { // 正常的表单提交,在此处理 // echo "已提交"; }
$token = mt_rand(0,1000000); $_SESSION['token'] = $token;
PHP 세션 개발 원칙 및 사용법에 대한 자세한 설명 ~ ~
위 내용은 반복적인 양식 제출을 방지하는 PHP 플러스 세션 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!