2012-01-07 20 views
0

送信ボタンをクリックすると、成功の注文ページにリダイレクトされるはずのフォームがあります。 hearer()を使用しようとしましたが、ヘッダーはすでに送信エラーが発生しました。私はこれをPHPファイルの先頭に置くことはできません。送信されたフォームにエラーがある場合、古い注文ページにリダイレクトする必要があります。フォームが成功裏に提出されると、成功のページへのリダイレクト

他の方法はありますか?

もう1つの疑問点は、 現在、私はすべてのセッションをクリアするために以下を使用しています!

<?php session_start(); 
    session_unset(); 
    session_destroy(); 
    session_write_close(); 
    setcookie(session_name(),'',0,'/'); 
    session_regenerate_id(true); ?> 

は、だから、私は上記の弾力n個のコードの後に​​同じページでセッションを使用する場合は、フォームに再びこの<?php session_start(); ?>を使用する必要がありますか?

答えて

2

  1. 使用 - 電子再びsession_start(); NEWセッションを再起動しますが、データがクリアされているので、あなたは、古いものを破壊した覚えへ<script type="text/javascript">parent.location.href = 'nextpage.php';</script>
  2. Output Bufferingを使用して、出力後にHTTPヘッダーを送信することができます。

    出力バッファリングがアクティブな間は、出力はスクリプトから(ヘッダー以外の)送信されず、出力は内部バッファに格納されます。

  3. は、あなたは、ユーザーに次のページへのリンクを表示し、彼はそれを自分自身をクリックさせることができますメタリフレッシュヘッダ<meta http-equiv="refresh" content="0;url=nextPage.php">
  4. を追加することができます。

+0

それは本当に問題になってますが、[OK] +投票ではないです);)問題になっていないことをどのように – Prof83

+0

? :)彼はリダイレクトについて尋ねました。私はセッションのことを忘れていましたが、あなたはすでにそれを世話しました;-) –

+0

ヘッダーが送信されている理由がわからないと、ちょっと混乱します。それはおそらく意図的ではなく、 、はい、あなたの解決策は良いですので、+投票...しかし、それはヘッダーが送信される理由を見つけるのを手伝っていないのですか? – Prof83

1

コンテンツをブラウザに送信している、つまりheader()を試行する前に何かがエコーされています。

何を検索して終了しますか?あなたがheader();問題に

を見つけるしようとする私は、それは非常に悪い習慣になるので、通常は、このことをお勧めしないだろうが、それを強制する:

ob_clean(); // Cleans the output buffer 
header("Location: redirect-url"); 

をセッションをクリアするには:

$_SESSION = array(); 
session_destroy(); 

更新

はいあなたは物事のカップルを行うことができます=新しいセッション空のセッション

+0

@oDxこれらの答えはあなたを助けている場合、正しい答えとしてそれらのいずれかをマークしてください。 – Prof83

関連する問題