定制机器人检查

时间:2015-07-21 14:02:14

标签: php

我的联系表格有问题。我有四个字段,名称,电子邮件,消息和一个字段,您输入字符以确认您不是机器人。 我从数组生成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,我被困,但至少告诉我,如果我正在思考正确的方向或我完全错了

0 个答案:

没有答案