ReCaptcha不接受任何字符串
ReCaptcha doesn't accept any string
我第一次尝试将 recaptcha 添加到联系表单中,我已经取得了一些进展,但现在我有点卡住了。
它不允许我发送任何电子邮件,我也找不到原因。在我遇到recaptcha没有阻止错误答案的问题之前,但是在我将recaptcha代码放在表单顶部之后,它现在会显示出来并保护表单。
下面是执行的操作的代码:
<?php
require_once('recaptchalib.php');
$privatekey = "xxxxxxxxxxxxxxxxxxxxxx";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
// Your code here to handle a successful verification
if(@mail($your_email,$email_subject,$email_content)) {
echo 'Message sent!'; }
}
if(!$_POST) exit;
$email = $_POST['email'];
//$error[] = preg_match('/'b[A-Z0-9._%-]+@[A-Z0-9.-]+'.[A-Z]{2,4}'b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("@",$email )){
$error.="Invalid email address entered";
$errors=1;
}
if($errors==1) echo $error;
else{
$values = array ('name','email','telephone','message');
$required = array('name','email','telephone','message');
$your_email = "email@mydomain.com";
$email_subject = "New Message from XXX: ".$_POST['subject'];
$email_content = "New message:'n";
foreach($values as $key => $value){
if(in_array($value,$required)){
if ($key != 'subject' && $key != 'telephone') {
if( empty($_POST[$value]) ) {
echo 'PLEASE FILL IN REQUIRED FIELDS'; exit;
}
}
$email_content .= $value.': '.$_POST[$value]."'n";
}
}
if(@mail($your_email,$email_subject,$email_content)) {
echo 'Message sent!';
}
else {
echo 'ERROR!';
}
}
?>
这是表单中的代码:
<form action="./contact.php" method="post" id="contactform">
<?php
require_once('./recaptchalib.php');
$publickey = "xxxxxxxxxxxxxxxxxx"; // you got this from the signup page
echo recaptcha_get_html($publickey);
?>
<ol>
<li>
<label for="name">Name</label>
<input id="name" name="name" class="text" />
</li>
<li>
<label for="email">Email</label>
<input id="email" name="email" class="text" />
</li>
<li>
<label for="telephone">Telephone</label>
<input id="telephone" name="telephone" class="text" />
</li>
<li>
<label for="message">Message</label>
<textarea id="message" name="message" rows="6" cols="50"></textarea>
</li>
<li class="buttons">
<input type="image" name="imageField" id="imageField" src="images/send.gif" class="send" />
<div class="clr"></div>
</li>
</ol>
</form>
感谢您的帮助!
"不让我发送邮件"是什么意思?验证码是否失败,并且您收到"验证码输入不正确"?
还是它试图发送邮件但没有任何显示?
- 不要使用 eregi。不推荐使用整套 ereg 函数。我看到你在上面有一个preg_match等效物,所以改用它。如果你使用的是 PHP 5.2+,你应该改用
filter_var($email, FILTER_VALIDATE_EMAIL)
,这将比你的正则表达式做得更好。 - 不要用
@
来压制mail()
通话。邮件本身不会输出任何错误消息,它只会返回真/假。检查该返回值,如果为 false,则输出错误消息。目前,你只有在它是真的时才输出。 - 检查您的SMTP服务器日志,如果您有权访问它,假设PHP和邮件实际上正在工作并试图交出邮件。也许SMTP服务器出现故障,邮件卡在传出队列中
毕竟,您似乎正在尝试发送带有$your_email
,$email_subject
等的邮件...在设置这些变量并从 $_POST 中检索值之前。因此,您很可能正在使用空变量调用mail()
,而空变量什么也不做。
相关文章:
- jQuery中是否内置了任何字符串格式化函数
- jsi18n-django.catogue没有'不包含任何已翻译的字符串(但是djangojs.mo包含)
- 是否有任何JavaScript UI组件可以显示字符串之间的差异
- json字符串的Javascript帖子:没有任何东西传入或返回
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- Javascript中的正则表达式,用于只有数字的字符串,并且不应在除数字以外的任何位置包含任何字符
- 如果URL中有任何字符串变体匹配,则返回true
- 如何检查数据表是否有任何包含字符串的行并获取它的行索引
- 正则表达式,用于匹配不是字符串“ABCD”的任何内容
- 在另一个由非字母数字字符分隔的字符串中搜索(任何)字符串
- 有任何方法可以转换这个字符串:;库德纳ção”;对此:“;Coordena&#231&#2
- 从任何jquery选择器字符串创建元素的最有效方法
- Regex:检查字符串的任何部分是否包含SSN
- 当用户在命令提示符中选择任何字符串时,节点Js不为任何请求提供服务
- 查找任何未定义的变量并从url字符串中隐藏
- 使用jQuery检查html元素中是否存在任何字符串
- Google Spreadsheets脚本可以删除找到字符串的任何行
- 如何在Jquery中使用给定的任何特定排序顺序对字符串数组进行排序
- Regex-仅当字符串包含任何其他字符时才允许使用某些字符
- 如何在mongodb的边界框中获取任何项目(点,线字符串,多边形)