0

嗨,我正在尝试将数据提交到 mysql 后重定向到下一页。我到目前为止

<?php
$name = "";
$email = "";
$msg_to_user = "";
if ($_POST['name'] != "") {
    include_once "newsletter/connect_to_mysql.php";

    // Be sure to filter this data to deter SQL injection, filter before querying database
    $name = $_POST['name'];
    $email = $_POST['email'];

    $sql = mysql_query("SELECT * FROM newsletter WHERE email='$email'");
    $numRows = mysql_num_rows($sql);

    if (!$email) {
      $msg_to_user = '<br /><br /><span style="font color="FF0000">Please type an email address ' . $name . '.</span>';

    } else if ($numRows > 0) {
      $msg_to_user = '<br /><br /><font color="FF0000">' . $email . ' is already in the system.</font>';

    } else {    
      $sql_insert = mysql_query("INSERT INTO newsletter (name, email, dateTime) 
        VALUES('$name','$email',now() )")  or die (mysql_error());
      $msg_to_user = '<br /><br /><div style="color=#F47926;">Thanks ' . $name . ', Now lets select what you need.</div>';
      $name = "";
      $email = "";
    }
    header("Location: order.php");
}
?>

这会将数据发送到我的数据库,一切正常,但我想将它发送到已经创建的 order.php 的另一个页面以继续。我现在得到的表格在这里

<form style="border:0;padding-left:10px;" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <fieldset style="text-align:left;" id="free"> 
  <span style="text-align:left;font-size:30px;color:#F47926;">
    Ready to get started?
  </span>
  <div class="centerForm">
    Name:<br />
    <input name="name" type="text" maxlength="36" size="35" value="" /><br /> 
    Email:<br />
    <input name="email" type="text" maxlength="36" size="35" value="" /><br />
    <br /><br /><div style="width:179px;margin-left:auto;margin-right:auto;"><input type="image" src="continue-to-selection.png" name="mySubmitBtn" alt="continue to selection" /></div>                        
  </fieldset> 
</form>

电子邮件功能以前可以工作,但随着我开始更改,它就停止工作了。我敢肯定这很简单,而且我敢肯定我可以解决。我的问题是我在向mysql提交数据后尝试重定向,将用户重定向到页面order.php。我需要进行的更改是在表单内还是通过标题:我尝试使用的位置。谢谢 注意:我缩短了网址以在此处的帖子预览中查看它,因此我知道 order.php 必须是完整路径。如果我错了,请纠正我,但只是让大家知道我知道这不是问题。

4

2 回答 2

0

我建议您尝试两种方法。第一种(个人比较喜欢)是使用ajax和jquery提交表单,然后在不刷新页面的情况下显示感谢信息。之后使用 settimeout 函数将重定向延迟 x 秒,然后重定向到订单页面。

第二种方法:在数据保存在数据库中后,在会话中存储成功消息。然后在订单页面的标题中,使用基于会话的 if 语句。如果成功或为真,则在订单页面中显示消息感谢您的消息。

如果您想查看所提供解决方案的示例,请告诉我。

谢谢

于 2013-05-21T01:34:30.417 回答
0

这是一个很好的规则 - 避免从 php 中回显 HTML。关闭脚本标签写你的 HTML 并继续你的 PHP

@vidit 也是对的。尝试这个

else {    
      $sql_insert = mysql_query("INSERT INTO newsletter (name, email, dateTime) 
        VALUES('$name','$email',now() )")  or die (mysql_error());
      $msg_to_user = '<br /><br /><div style="color=#F47926;">Thanks ' . $name . ', Now   
      lets select what you need.</div>';
      //$name = "";
      //$email = "";
      session_start();
      $_SESSION['name'] = $name;
      $_SESSION['email']=$email;
    }

在下一个文件中,您可以使用

session_start();
$email = $_SESSION['email'];
$name= $_SESSION['name'];

如果您使用的是 PHP>5.1,也可以考虑使用 PDO 作为替代方案

此外,添加一些您可以在此处学习的会话处理也没有什么坏处

干杯!

于 2013-05-21T01:36:40.420 回答