2

この関数を含むinsert_comment.phpというフォームがあります:

function died($error) { // if something is incorect, send to given url with error msg
  header("Location: http://mydomain.com/post/error.php?error=" . urlencode($error));
  die();
}

コードのさらに下では、$error_message が関数 die に送信され、次に関数 die がユーザーを mydomain.com/post/error.php にリダイレクトします。ここで、URL からエラー メッセージを取得します。

$error = $_GET["error"];

echo 'some text '. $error .' sometext';

POST リダイレクトを使用してまったく同じことを行う方法はありますか? URL にエラー メッセージ全体を表示するのは好きではありません。

4

1 に答える 1

3

複雑ではありますが、POST でそれを行うことは可能ですが、それは間違った戦略であり、POST 要求の目的ではありません。

適切な戦略は、この情報を sessionに配置し、そこから表示し、表示されたらセッション キーを削除することです。

// session_start() must have been called already, before any output:
// Best to do this at the very top of your script
session_start();

function died($error) {
  // Place the error into the session
  $_SESSION['error'] = $error;
  header("Location: http://mydomain.com/post/error.php");
  die();
}

エラー.php

// Read the error from the session, and then unset it
session_start();

if (isset($_SESSION['error'])) {
  echo "some text {$_SESSION['error']} sometext";

  // Remove the error so it doesn't display again.
  unset($_SESSION['error']);
}

まったく同じ戦略を使用して、リダイレクト後にアクションの成功などの他のメッセージをユーザーに表示できます。$_SESSION必要なだけ配列内のさまざまなキーを使用し、メッセージがユーザーに表示されたら設定を解除します。

于 2013-03-10T01:40:12.410 に答える