3

在这个脚本中,我正在检查字段是否不为空并且电子邮件地址在语法上是否正确。如何在表单底部为基本求和问题添加文本输入,例如,(2+5)=我想在当前脚本中添加验证元素以检查它是否等于 7。

if (empty($name) || empty($phone) || empty($email) || empty($enquiry))
{
    echo "    * Sorry all fields are required.";
}
elseif(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $email)) 
{
    print "<p>Sorry the email address you entered looks like it's invalid.</p>";
}
else
{
    mail($to, $sub, $mes, $headers);
    print "<p>Thank you ".$name." for contacting us.<br /><br />We will be in touch shortly.</p>"; 
}
4

2 回答 2

1

1 如果您的会话未在第一行开始使用

session_start();

2 表格显示之前。添加此代码。另请记住,会话开始也必须在验证所在的文件中。

 $numa =  rand(1,5);
 $numb =  rand(0,4);
 $_SESSION['valid_res'] = $numa+$numb;

  echo "<p>To submit form please solve this equatation $numa + $numb = ?";
  echo '<input type="text name="result_val" />';

3 在验证功能中,您应该检查

  if(intval($_POST['resul_val']) != $_SESSION['valid_res'])
  {
     echo "sorry you put wrong result in validation form";
  }

但是,如果我是你,我会使用RECAPTCHA

于 2013-05-09T11:45:20.177 回答
1

如果您只是想验证一个静态总和,例如,您知道它总是(2 + 5) = 7

然后你可以写一个简单的函数来检查发布的值。

// this being your posted value;
$validate = 7; 

function SumCheck($value){

    if ( 2 + 5 == $value ){
        return true;
    }
    else{
        return false;
    }

}

然后将您的初始行更改为;

if (empty($name) || empty($phone) || empty($email) || empty($enquiry) || !SumCheck($validate))

但是,我建议按照Robert Podwika的建议使用 RECAPTCHA。

于 2013-05-09T11:58:12.410 回答