我的联系表格有问题。我有四个字段,名称,电子邮件,消息和一个字段,您输入字符以确认您不是机器人。 我从数组生成4个随机字符(数组由A-Z,a-z和0-9组成),使用联系表单的人需要输入该字符以确认他不是机器人。我的代码仍然是原始的,因为我正在处理它,它没有组织,分隔在不同的.php文件和函数中。问题是在我点击提交按钮后新的字符生成,当比较输入和生成的字符时,它们永远不会匹配(以某种方式提交刷新页面和PHP代码再次运行并生成不同的字符)。我的猜测是导致联系表单向自己发送值(同一页面)并刷新页面(再次运行php代码)
<?php
$nameErr = $emailErr = $messageErr = '';
$niz1 = range ('A', 'Z');
$niz2 = range ('a', 'z');
$niz3 = range ('0', '9');
$niz = array_merge($niz1, $niz3, $niz2);
$provera = "";
for ($i=0; $i<4; $i++) {
$j=rand(0, 61);
$provera .= $niz[$j];
}
$array[] = $provera;
if (isset($_POST['Submit1'])) {
$name = $_POST['name'];
$email= $_POST['email'];
$message= $_POST['message'];
$robot = $_POST['robot'];
$formcontent= "From: $name \n Message: \n $message";
$recipient= "someemail@gmail.com";
$subject= "Contact Form";
$mailheader= "From: $email \r\n";
if(strlen($name)==0) {
$nameErr = " Name is required";
}
elseif(strlen($email)==0) {
$emailErr = " Email is required";
}
elseif(strlen($message)==0) {
$messageErr = " Message is required";
}
else {
if ($robot == $provera) {
$confirmation = mail($recipient, $subject, $formcontent, $mailheader);
if ($confirmation == true) {
echo "$name, thank you for submitting message";
}
else {
echo "For some reason message could not be sent, please use some other way to contact me";
}
}
else {
print_r ($array); // this is only to check what i have
echo "<br />";
echo $robot;
}
}
}
?>
我已经尝试使用$ array来存储数组中生成的字符,所以如果点击提交以某种方式再次运行我的php代码它将存储在$ array [1]和$ array [0]中的旧字符中,所以我可以使用它或者prev($ array)将输入的字符与我的数组中先前位置的字符进行比较,但是点击提交$ array也从start开始重置,值存储在$ array [0]中。也许我可以通过发送值来解决这个问题联系表格到另一页,而不是在同一页面或使用session_start,我被困,但至少告诉我,如果我正在思考正确的方向或我完全错了