我设计了用于获取评论的评论框。我没有使用captcha插件,而是准备了5位数的自定义captcha。当我提交详细信息时,我仍然会收到错误页面。我在谷歌上查过各种网站,但都找不到正确的答案。
- comments.html-注释框
- captcha.php-带有5位代码的自定义captcha
- submit.php-用于处理代码
- error.html-错误条目的错误页面
- thank.html-提交成功页面
我不知道错误在哪里。请在这方面帮助我。下面给出了comments.html和submit.php的源代码。
===========评论.HTML==============
<form action="submit.php" method="post">
Name: <input type="text" name="name" /> <br>
Email: <input type="text" name="email" /> <br>
Comments: <textarea name="coments" /> <br>
Enter Captcha <img src="captcha.php"><input type="text" name="vercode" /> <br>
<input type="submit" name='submit' onclick="show_confirm()" value="SUBMIT" />
</form>
=====================提交.PHP=====================
<?php
session_start();
if ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='')
{
//This page should not be accessed directly. Need to submit the form.
header('Location: error.html');
exit;
}
$name = $_POST['name'];
$email = $_POST['email'];
$comments = $_POST['comments'];
if(empty($name) || empty($email)||empty($comments))
{
header('Location:error.html');
exit;
}
if(!eregi("^[_a-z0-9-]+('.[_a-z0-9-]+)*@[a-z0-9-]+('.[a-z0-9-]+)*('.[a-z]{2,3})$", $_POST[email]))
{
header('Location:error.html');
exit;
}
$email_from = 'info@xxxxx.com';
$email_subject = "CONTACT FORM";
$email_body="============================'n".
"FULL NAME: $name'n".
"EMAIL-ID: $email'n".
"COMMENTS: $comments'n".
$to = "info2@xxxxx.com";
$headers = "From: $email_from 'r'n";
mail($to,$email_subject,$email_body,$headers);
//done. redirect to thank-you page.
header('Location: thank.html');
?>
您需要
session_start()
在submit.php
的最顶部,它启动或恢复session
,以便您可以访问$_SESSION
您应该先检查表单是否已提交,然后再处理代码。示例:
if(isset($_POST[‘submit’]){//处理原料}
你没有显示你得到了什么具体的错误,所以我只想把你链接到这个简单的PHP-GD captcha,我以前在一些项目中使用过它,它的效果很好。真的很简单,很容易实现。
简单的PHP-GD captcha图像
看起来这可能与regex验证总是返回false有关。
您可能需要测试您设置的规则是否正确。另外,我在php.net上读到eregi()在5.3.0中已经过时了,所以可能会将preg_match()与PCRE_CASELESS标志一起使用?