PHP - 连续输入两次输入后的处理


PHP - Processing after input is entered twice in a row

我的表单有问题。

我有一个HTML表单,如下所示:

<form action="index.php" method="post">
    <input type="text" name="text" id="text">
    <input type="submit" value="Send" name="send">
</form>

现在我的问题是:

每次我第一次处理此表单时,它都应该输出一个错误。如果这是第一次尝试,则必须每次都显示错误。

如果我输入相同的输入值两次,它应该会成功。

我想过设置一个会话变量,$_SESSION['first_visit]如果我是第一次处理表单。

我还考虑过将 $_POST['text'] - 值保存到会话中,但它每次都被覆盖。

谢谢你的回答。

<?php
extract($_POST);
if( isset($send) )
{
    if( $fired <= 0 )
    {
        $fired++;
        echo "Nope, error. send again to succeed";
    }
    else
    {
        echo "Yay success";
    }
}
?>
<form action="" method="post">
    <input type="hidden" name="fired" value="<?php echo isset($fired) ? $fired : 0 ?>">
    <input type="text" name="text" id="text">
    <input type="submit" value="Send" name="send">
</form>

这是一些快速而肮脏的片段。我们设置了一个初始值为 0 的隐藏输入字段,并在每次发送表单时对其进行计数。之后唯一要做的就是检查隐藏字段的值是否大于0

您可以使用 cookie 代替会话

<form action="index.php" method="post" id="exampleForm">
   <input type="text" name="text" id="text">
   <input type="button" value="Send" name="send" onClick="checkVisit()">
</form>
<script>
   function checkVisit(){
      var isFirstVisit = getCookie("first_visit");
      if(isFirstVisit  == "" || isFirstVisit  == 1){
         setCookie("first_visit",0,1);
      }else if (isFirstVisit == 0){
         setCookie("first_visit",1,1);
         document.getElementById("myForm").submit();
      }
   }
</script>

感谢您的快速回答!你的Tipp帮助我解决了我的问题。

这是工作脚本:

<?php
session_start();
if(isset($_POST['go'])) {
	$text =  $_POST['text'];
	$fired = $_POST['fired'];
	if($fired <= 0) {
		$fired++;
		echo "Nope";
		$_SESSION['val'] = $_POST['text'];
	}
	else {
		if($fired > 0 && $_SESSION['val'] == $_POST['text'] ) {
			echo "Success";
		}
		else {
			echo "Failed";
			$_SESSION['val'] = $_POST['text'];
 		}
	}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
<form action="test2.php" method="post">
	<input type="text" name="text" id="text">
	<input type="hidden" name="fired" value="<?php echo isset($fired) ? $fired : 0 ?>">
	<input type="hidden" name="val" id="val" value="">
	<input type="submit" value="Senden" name="go">
</form>
</body>
</html>