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にリダイレクトしようとしていることです。私が行う必要がある変更は、フォーム内または使用しようとしている header:location を介して行う必要があります。ありがとうございます: ここの投稿プレビュー内で表示するために URL を短縮したので、order.php はフル パスでなければならないことを認識しています。私が間違っている場合は訂正してください。ただし、私が認識しており、これは問題ではなかったことを皆さんにお知らせするだけです。

4

2 に答える 2

0

これが良いルールです - PHP から HTML をエコーし​​ないでください。script タグを閉じて、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 に答える