PHP - セッションが初期化されていません

私は、イベントの後にユーザーが記入するための小さなフォームを作成しました。私は自分のForm.phpを持っており、フォームアクションはMail.phpです。それはユーザーがフォームに記入してsubmitを押すと、Mail.phpがすべて処理します。

セッションを使用して、ユーザーが戻って2回目に私に送信できないことを確認しています。残念ながら、私のセッションは、私がオンラインで公開しても、それはローカルではありません。

Form.php

session_start();

if(isset($_SESSION['Finished']))
{
    header("Location: http://www.google.com");
}   

Mail.php

session_start();

if(isset($_SESSION['INGEVULD']))
{
    header('Location: http://www.google.com');
}
else
{ 
    ..(mailing + check)..
    $_SESSION['Finished'] = true;
}

私が間違っていることを誰に見てもらうか、より良い提案がありますか?

0
あなたがそれを必要とする場所@tom
追加された 著者 Rene Pot,
try-catchブロック内にsession_startを入れて、セッションが開始しない理由を確認してください: try {session_start();} catch(Exception $ e){var_dump($ e-> getMessage();}
追加された 著者 Al_,
おそらく両方のページで session_start(); の後に、おそらく。
追加された 著者 Zar,
保存されたものと保存されていないものを確認するには、セッション配列 print_r($ _ SESSION)をダンプしてみてください。何かエラーがありますか?
追加された 著者 Zar,
form.phpとmail.phpが本当に必要ですか? 1つのファイルですべてを行うことができます。成功したらフォームを非表示にし、メールを送り、ouput "ありがとう"。
追加された 著者 djot,
なぜあなたは(あなたと思うのですか)form.phpに$ _SESSION ['Finished']が必要ですか?あなたは避けたいですか?それは2回送信されますか?そして、2つの電子メールを送ろうとしている人はどうですか?
追加された 著者 djot,
はい、すべてのページで機能しますが、page_1のデータにアクセスしようとすると、後でpage_2に設定されます。
追加された 著者 djot,
はい、mail.phpに設定しましたが、form.phpに設定しましたか?これは設定されません:if(isset($ _ SESSION ['Finished'])))、そうですか?
追加された 著者 djot,
したがって、form.php $ _SESSION ['Finished']はTRUEになることはありません。これはmail.php
追加された 著者 djot,
あなたはform.phpを呼び出し、フォームをmail.phpに提出してから? form.phpに戻る?
追加された 著者 djot,
出口を置くべきです。各ヘッダの後ろに();ライン。
追加された 著者 djot,
あなたが$ _SESSION ['Finished'] = ...のようにセッションデータを設定したコードを表示する
追加された 著者 djot,
私はそれをどこに印刷することをお勧めしますか?
追加された 著者 CustomX,
私はMail.php上でArray()を取得し、Form.php上では何も取得しない
追加された 著者 CustomX,
@djot、出口?
追加された 著者 CustomX,
私はちょうどスパミングを防止したい。ブラウザを閉じると2回送信できます:P
追加された 著者 CustomX,
ですから、Page2はある意味でリフレッシュする必要がありますか?または詳細を送った後、私は3番目のページにリンクする必要がありますありがとうございますページ?または、おそらくForm.phpにして、sessiosnでif-else構造を使用しますか?
追加された 著者 CustomX,
あたかも私のMail.phpがセッションをリロードしたりロードしたりしないかのようです。
追加された 著者 CustomX,
正解ですが、セッションの作業が異なるページはありませんか?
追加された 著者 CustomX,
form.php(フォームを表示)、mail.php(フォームをチェックしてエラーを表示、電子メールを送信、ありがとう)
追加された 著者 CustomX,
いいえ、mail.phpは最終的な宛先です。
追加された 著者 CustomX,
$ _SESSION ['Finished']はMail.phpの最後にTRUEに設定されていますので、これは間違っていますか?私はそれをbutton_clickに割り当てることができますか?
追加された 著者 CustomX,

1 答え

出口を置くべきです。各ヘッダの後ろに();ライン。

header("Location: http://www.google.com");
exit;
0
追加された
@トム:pff、ありがとう...これは、とにかくここにpiflingたわごとです。
追加された 著者 djot,
@Downvoter:説明してください...
追加された 著者 djot,
現在のスクリプトを停止します。さもなければ、ヘッダー行の背後にあるコードが実行される可能性があります。ほとんどの場合、ヘッダー()を実行するときには必要ありません。
追加された 著者 djot,
私は知っている、これは答えではないが、トムは私のコメントを得ていない。
追加された 著者 djot,
0に戻るためにUpvoted :)
追加された 著者 CustomX,
ああ、チップのおかげで!
追加された 著者 CustomX,
この exit は何をしますか?
追加された 著者 CustomX,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com