Php 添加简单的数学验证码
我用这个[教程][1]做了验证码 [1] 当前位置但在我看来它还没有完成。 我做了代码,但我可以发送电子邮件,即使我把错误的答案。我觉得我必须在php文件中编写额外的代码,但我不知道在哪里。非常感谢你的帮助Php 添加简单的数学验证码,php,Php,我用这个[教程][1]做了验证码 [1] 当前位置但在我看来它还没有完成。 我做了代码,但我可以发送电子邮件,即使我把错误的答案。我觉得我必须在php文件中编写额外的代码,但我不知道在哪里。非常感谢你的帮助 <div class="modal-body"> <form class="contact" name="contact"> <label class="label" for="name"&
<div class="modal-body">
<form class="contact" name="contact">
<label class="label" for="name">Имя</label><br>
<input type="text" name="name" class="input-xlarge"><br>
<label class="label" for="email">E-mail</label><br>
<input type="email" name="email" class="input-xlarge"><br>
<label class="label" for="message">Сообщение</label><br>
<textarea name="message" class="input-xlarge"></textarea>
</form>
</div>
<div class="modal-footer">
<p>2 + 3 =</p>
<input type="text" name="captcha" />
<input class="btn btn-warning" type="submit" value="Отправить" id="submit">
<a href="#" class="btn btn-danger" data-dismiss="modal">Закрыть</a>
<?php
$myemail = '';
if (isset($_POST['name'])) {
$name = strip_tags($_POST['name']);
$email = strip_tags($_POST['email']);
$message = strip_tags($_POST['message']);
$captcha = check_input($_POST['captcha']);
echo "<span class=\"alert alert-success\" >Сообщение отправлено</span><br><br>";
if (!preg_match("/5/", $captcha))
{
show_error("Check your math, Dude");
}
$to = $myemail;
$email_subject = "Contact form submission: $name";
$email_body = "You have received a new message. ".
" Here are the details:\n Name: $name \n ".
"Email: $email\n Message \n $message";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email";
mail($to,$email_subject,$email_body,$headers);
}?>
Бц
电子邮件
Сбббббббб
2+3=
好的,因此您需要检查输入值是否有效。如果没有,则显示错误,邮件无法发送。如果所有检查都通过,邮件就会被发送。因此,您需要检查$\u POST['email']
和$\u POST['captcha']
字段(如果需要,请检查其余字段是否为空或其他内容)
在php中,您可以这样做:
$myemail = "";
if(isset($_POST['name'])){ // check if a form is submitted
if(empty(trim($_POST['name'])) || empty(trim($_POST['message'])) || empty(trim($_POST['email'])) || empty(trim($_POST['captcha'])) ){ // check if values are not empty
echo "Please fill in all the required fields.";
}else if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){ // check email
echo "Please give a real e-mail address.";
}else if(!preg_match("/5/", $_POST['captcha'])){ // the code provided by your script
echo "Get your math right, dude!";
}else{ // all fields seem to be ok
// sanitize input using htmlspecialchars(), see http://stackoverflow.com/a/5788361/1319187
$name = htmlspecialchars($_POST['email']);
$email = $_POST['email']; // email doesn't need to be sanitized since it's been filtered
$message = htmlspecialchars($_POST['message']);
//Send the mail
$to = $myemail;
$email_subject = "Contact form submission: $name";
$email_body = "You have received a new message. ".
" Here are the details:\n Name: $name \n ".
"Email: $email\n Message \n $message";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email";
if(mail($to,$email_subject,$email_body,$headers)){
echo "Succes! Your mail has been sent!";
}else{
echo "Something went wrong with the sending of a mail.";
}
}
}
应该很简单,如果你不知道一些函数的功能,你可以用谷歌搜索它们
我也不知道
check\u input()
来自哪里。它不是一个本机PHP函数,您提供的链接没有显示它的功能。另外,检查验证码值是否为5的正则表达式有点愚蠢,您可以只检查$\u POST['captcha']='5'
。还请记住,您必须稍微随机化这些值。这是因为您没有验证电子邮件
字段。还有验证码。。检查输入的功能是什么?另外,您的验证码字段不在表单范围内。Putvande,谢谢您的回答。请告诉我,如果可能的话,我需要做什么来验证电子邮件字段?我是通过教程完成的,我认为在PHP中检查验证码字段最简单的方法是做一些类似于filter\u var($\u POST['email',filter\u VALIDATE\u email)
请告诉我,我需要把它放在我的PHP文件中的什么地方,谢谢你的回答!我刚刚将这段代码添加到我的php中。但我看到了错误,我犯了错误。我只懂一点php,对不起,你能提供完整的代码吗?我把你的代码放在echo“Сббббббббббббббб;用这个php替换所有php。您可能需要将
放在样式设置所需的位置。哦,我看到了致命错误:无法在第4行的写上下文中使用函数返回值。我做错了什么?我把这个代码放在$myemail=“”行的下面;第4行if(空(trim($_POST['name']))| |空(trim($_POST['message']))| |空(trim($_POST['email']))| |空(trim($_POST['captcha']){//检查值是否为空删除trim(
和它的右括号。另外,我发现您的表单中没有设置方法。通过设置
,使其成为POST
。未测试代码,因此可能存在一些错误。