В этом скрипте я проверяю, являются ли поля пустыми, а адрес электронной почты синтаксически корректен. Как добавить текстовый ввод в нижней части моей формы для основного вопроса суммы, например (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-]+)*(\.[az]{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>"; }
Если вы просто хотите проверить статическую сумму, например, вы знаете, что она всегда будет (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))
Тем не менее, я бы предложил использовать RECAPTCHA, как предложил Роберт Подвика .
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