12

ページにリダイレクトしてからメッセージを表示したい:

私が持っているものは:

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;
        }
    }

しかし、それは私のメッセージを表示しません。空っぽです。

4

6 に答える 6

27

リダイレクトが発生し、図のように PHP スクリプト$locationが実行されるまでには、$message変数はとっくの昔になくなっているはずです。

これに取り組むには、GET変数を使用して、メッセージをロケーション ヘッダーに渡す必要があります。

header("Location: $location?message=success");

if(!empty($_GET['message'])) {
    $message = $_GET['message'];
// rest of your code

セッションを調べることもできます

session_start();
$_SESSION['message'] = 'success';
header("Location: $location");

次に、宛先スクリプトで:

session_start();
if(!empty($_SESSION['message'])) {
   $message = $_SESSION['message'];
   // rest of your code
于 2012-08-16T13:22:04.863 に答える
4

スクリプトが終了すると、変数は存在しなくなります。それぞれの個別のリクエスト、それぞれの個別の PHP スクリプト呼び出しは、他の呼び出しからのデータを持たないまったく新しいコンテキストです。

セッションを使用してデータを永続化します。

于 2012-08-16T13:21:57.377 に答える
3

セッションを使用できます

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']);
}
于 2012-08-16T13:22:10.070 に答える
2

header("Location: {$location}");(最初のファイルに設定されている)の値を実行しているため$location、index.php が読み込まれると失われます。

于 2012-08-16T13:22:24.920 に答える
2

リダイレクト機能を回避し、ページでこのコードを使用できます

header("Location: $locationpage?message=success")

index.php

if(!empty($_GET['message'])) {
$message = $_GET['message'];
 echo '<p class="message"> '.$message.'</p>';
}
于 2018-02-21T16:15:33.093 に答える
1

次のコードを使用してください....

header("Location: index.php?message=success");

index.php で

$msg=$_GET['message'];
echo $msg;
于 2012-08-16T13:24:33.670 に答える