web-dev-qa-db-ja.com

メッセージ付きのページへのphpリダイレクト

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

私が持っているものは:

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

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

8
user1386906

リダイレクトが発生し、_$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
_
21
Andreas Wong

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

sessions を使用してデータを永続化します。

3
deceze

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

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']);
}
3
Mihai Iorga

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

2
Jocelyn

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

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

index.phpで

$msg=$_GET['message'];
echo $msg;
1
Anoop S S

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

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

index.php

if(!empty($_GET['message'])) {
$message = $_GET['message'];
 echo '<p class="message"> '.$message.'</p>';
}
0
Snake Plissken