ページにリダイレクトしてからメッセージを表示したい:
私が持っているものは:
if (mysqli_affected_rows($link) == 1)
{
//succes
$message = 'succes';
redirect_to('index.php');
}
私が持っているインデックスページで:
if (!empty($message)) {
echo '<p class="message"> '.$message.'</p>';
}
リダイレクト機能は正常に機能しています。
function redirect_to( $location = NULL ) {
if ($location != NULL) {
header("Location: {$location}");
exit;
}
}
しかし、それは私のメッセージを表示しません。空っぽです。
リダイレクトが発生し、_$location
_で表されるPHPスクリプトが実行されるまでに、_$message
_変数はずっとなくなっていたでしょう。
これに取り組むには、GET
変数を使用して、ロケーションヘッダーでメッセージを渡す必要があります。
header("Location: $location?message=success");
そして
_if(!empty($_GET['message'])) {
$message = $_GET['message'];
// rest of your code
_
sessions を調べることもできます
_session_start();
$_SESSION['message'] = 'success';
header("Location: $location");
_
次に、宛先スクリプトで:
_session_start();
if(!empty($_SESSION['message'])) {
$message = $_SESSION['message'];
// rest of your code
_
スクリプトが終了すると、変数は存在しなくなります。それぞれの個別のリクエスト、それぞれの個別のPHPスクリプト呼び出しは、他の呼び出しからのデータがないまったく新しいコンテキストです。
sessions を使用してデータを永続化します。
セッションを使用できます
if (mysqli_affected_rows($link) == 1)
{
//succes
$_SESSION['message'] = 'succes';
redirect_to('index.php');
}
とインデックスに
if (!empty($_SESSION['message'])) {
echo '<p class="message"> '.$_SESSION['message'].'</p>';
unset($_SESSION['message']);
}
header("Location: {$location}");
を実行しているため、index.phpがロードされると、$location
の値(最初のファイルで設定)は失われます。
次のコードを使用してください。
header("Location: index.php?message=success");
index.phpで
$msg=$_GET['message'];
echo $msg;
リダイレクト機能を回避して、ページでこのコードを使用できます
header("Location: $locationpage?message=success")
index.php
if(!empty($_GET['message'])) {
$message = $_GET['message'];
echo '<p class="message"> '.$message.'</p>';
}