如何在 html 形式中使用 php


How to use php in html form?

这是一个简单的验证码表单,运行良好,并在我按‘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");
  }