我设计了评论框以获取评论。我没有使用验证码插件,而是准备了5位数字的自定义验证码。当我提交详细信息时,仍然会收到错误页面。我检查了Google中的各个网站,但找不到正确的答案。
我无法解决错误所在。请在这方面帮助我。 comments.html和submit.php的源代码如下所示。
====== COMMENTS.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>
============= SUBMIT.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');
?>
答案 0 :(得分:0)
你需要
session_start()
位于submit.php
的最顶层,启动或恢复您的session
,以便您可以访问$_SESSION
答案 1 :(得分:0)
您应该首先检查表单是否已提交,然后处理代码。例如:
if(isset($ _ POST ['submit'])){//处理东西}
你没有显示你得到的具体错误,所以我只是将你链接到我之前在一些项目中使用的这个简单的PHP-GD验证码,并且像魅力一样工作。实现起来非常简单易行。
答案 2 :(得分:0)
看起来它可能与你的正则表达式验证有关,总是返回false。
您可能想要测试您设置的规则是否正确。另外,我在php.net上看到eregi()现在在5.3.0中已经过时,所以也许使用带有PCRE_CASELESS标志的preg_match()?