这是一个简单的验证码表单,运行良好,并在我按‘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"
此文件的代码,但忽略验证码验证中的任何输入。
我需要mailer.php
验证码验证后打开。
我已经尝试了onsubmit
和其他一些选项,但它们都不能作为上述解决方案。
任何帮助将不胜感激。
您可以
尝试在$msgCaptcha = "valid code";
行之后include
邮件.php。
mailer.php 中的任何代码都将在该代码块中执行,并且 mailer.php 所需的任何$_POST
变量都将可用。
最重要的是,当您调用mailer.php时,您必须在该文件前面进行验证码验证,否则任何机器人/垃圾邮件发送者都可以绕过您的验证码保护,只需将表单直接提交给mailer.php
请记住,机器人通常会忽略javascript,因此验证必须在服务器端完成。
您可能希望在包含 mailer 之前设置一个变量.php它会检查,因此即使有人尝试直接提交给 mailer.php,除非包含该文件,否则它也不会处理表单。
如果这没有帮助,请发布 mailer 的代码.php以便我们知道该文件的内容是什么。
使用 header()
if ($secCode == $_SESSION['securityCode']) {
$msgCaptcha = "valid code";
header("Location: http://www.website.com/ ... /mailer.php");
}