0

我有一个名为“index.php”的登录页面,格式如下:

<form action="auto_mail.php" method="post">
   <input id="signup" class="span8" type="text" placeholder="Your email" name="signup">
   <input type="submit">
   <?php
     if (isset($_SESSION['got_it']))
     {echo "<b>You're all signed up!</b>}
   ?></form>

auto_mail.php我的文件中:

// code scrubbing user input...
$user_email = $_POST['signup'];
session_start();
$_SESSION['got_it'] = '1';
// code sending me an email when someone signs up.
echo <<<EOD
  </b>
  <meta http-equiv="refresh" content="0, url=index.php">
  </div>
  </body>
  </html>
EOD;
?>

我查看了其他一些 SO 问题(使用 $_SESSION 携带数据),但这不是我想要的。

我想要的只是让用户在输入有效电子邮件时看到“你们都已注册”;在后台发送电子邮件确认电子邮件。这段代码感觉笨拙和尴尬。它还会短暂地闪烁auto_mail.php页面。

我尝试设置<form action="index.php"...,但它不起作用,因为我已经设置auto_mail.php,您无法直接访问它。

如何使用中的代码auto_mail.php检查有效的电子邮件地址并发送确认电子邮件,而不同时处理$_POST$_SESSION,或者至少更好地使用它们?

4

3 回答 3

6

如果您不想重新加载任何页面,则必须使用 AJAX 发送表单,而不是使用表单POST

如果您使用 jQuery 或 Mootools,它们都内置了包装器来处理 ajax 调用。如果没有帮助程序库,您将不得不考虑自己创建XMLHttpRequest

除此之外,传统上,您会将用户重定向到“提交的表单”页面,或者表单action发送到同一页面(在您的情况下,index.php如果收到表单数据,则使用 PHP 代码处理表单数据) .

于 2013-03-15T23:08:22.523 回答
0

我没有完全得到你想要的。

我认为您尝试验证已发送该表格的邮件地址(之后?)。但是您无法通过进行验证的 http 访问该文件。

您是否考虑过包含 auto_mail.php?

于 2013-03-15T23:15:08.690 回答
-2

我认为您应该考虑使用流行的 PHP 框架之一。我猜你在上面的例子中没有使用任何东西。还提供 MVC 结构的良好框架允许以您甚至无法想象的简单方式进行这样的操作。

将其分解为 MVC 结构甚至可以使post在一个操作中处理发送和显示依赖关系和结果变得非常简单。一开始学习好的框架可能看起来是在浪费时间,但相信我——它会很快得到回报。

首先,我建议你看一下,Kohana Framework或者,如果你有野心的话 - Symfony Framework

于 2013-03-15T23:14:34.700 回答