2

2つのパートからなるクイズがあります。最初の部分はフォームで、2番目の部分はクイズの確認です。

フォーム:フォーム

POSTメソッドを使用しています。そのため、ユーザーがフォームを送信してお祝いページに移動して更新すると、メールが送信され続けます。私はそれを防ごうとしています。

関連するPHP:

私は次のコードで何かを変更しようとしています:

if($fname <> "" and $lname <> "" and $ydept <> "") {
    mail ($myEmail, $mailSubject, $msgBody, $header);
    mail ($userEmail, $sentMailSubject, $sentMailBody, $sentHeader);

このようなものに:

if($fname <> "" and $lname <> "" and $ydept <> "") {
    mail ($myEmail, $mailSubject, $msgBody, $header);
    mail ($userEmail, $sentMailSubject, $sentMailBody, $sentHeader);
header ("redirect me to another php page with the $fname included to be used as a variable");
}
else {
    display not complete exam page and redirect me to the form;
}

$ fnameまたはその他の変数をcongratulation.phpページに引き継いでほしいので、おめでとうページと同じページでメールを送信するのではなく、別のページになるので、ユーザーが何回行っても更新され、何も起こりません。

4

2 に答える 2

1

「$fnameまたはその他の変数をcongratulation.phpページに引き継ぐようにしたい」というコメントから、$_POST配列をセッション変数に渡すか、計算を実行して必要なデータを別の配列に保存することをお勧めします。 、およびその配列をセッション変数として渡します。それは理にかなっていますか?

参照。 http://www.phpriot.com/articles/intro-php-sessions/7

于 2013-02-26T21:15:20.310 に答える
1

ユーザーがページを更新してメールが再度送信されるのを防ぐために、必要なのは、別のページにリダイレクトすることです。ただし、リダイレクトされたページでは、のGET代わりにを使用しPOSTます。

$name = urlencode($name);
$email = urlencode($email);
header("Location: well_done_chap.php?var1=$name&var2=$email");

次に、well_done_chap.php(またはあなたがそれを呼ぶものは何でも)、ただ実行します:

if (isset($_GET['var1']) && isset($_GET['var2'])) {
    $name = $_GET['var1'];
    $email = $_GET['var2'];

    // Do your other stuff here

} else {
    echo "Invalid access";
}
于 2013-02-26T21:16:19.470 に答える