这是一个简单的Captcha表单,运行良好并在按‘submit’
后打印请求的结果。
<?php
session_start();
$msgCaptcha = "";
?>
<?php
if (isset($_POST['submit'])){
$secCode = isset($_POST['secCode']) ? strtolower($_POST['secCode']) : "";
if ($secCode == $_SESSION['securityCode']) {
$msgCaptcha = "valid code";
$result = true;
}
else {
$msgCaptcha = "wrong security code";
$result = false;
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
name:<input name="myname" type="text"><br />
Security code: <input class="text" name="secCode" type="text">
<img src="securityCode.php" /><br />
<?php echo $msgCaptcha ?>
<input name="submit" type="submit" value="submit">
</form>
。即。
如果我的输入与图片中的相同,那么打印是“有效的安全代码” 如果输入不相同,则打印是“错误的安全代码”。
当我将代码更改为action="mailer.php"
时,此文件被打开,但忽略了Captcha验证中的任何输入。
我需要mailer.php
在Captcha验证后打开。
我尝试了onsubmit
和其他一些选项,但它们都不能解决上述问题。
非常感谢任何帮助。
答案 0 :(得分:1)
您可以在include
行之后尝试$msgCaptcha = "valid code";
mailer.php。
mailer.php中的任何代码都将在该代码块中执行,并且mailer.php所需的任何$_POST
变量都可用。
最重要的是,当您调用mailer.php时,您必须在该文件前面进行验证码验证,否则任何僵尸/垃圾邮件发送者都可以通过直接将表单提交给mailer.php来绕过验证码保护
请记住,机器人通常会忽略javascript,因此验证必须在服务器端完成。
你可能想要在包含mailer.php之前设置一个变量,它会检查,所以即使有人确实尝试直接提交给mailer.php,它也不会处理表单,除非文件被包含在内。
如果这没有帮助,请发布mailer.php的代码,以便我们知道该文件的内容是什么。
答案 1 :(得分:0)
使用header()
if ($secCode == $_SESSION['securityCode']) {
$msgCaptcha = "valid code";
header("Location: http://www.website.com/ ... /mailer.php");
}