0

これがここに投稿された他の質問と似ている場合は、ご容赦ください。提供されたすべての回答を既に確認しましたが、問題は解決していません。問題を最小限に抑えました。

  1. 2 つのページがあります (page1.php、page2.php)
  2. Page1.php はセッション変数を作成し、セッション変数が設定されている場合は、ブラウザーを Page2.php に送信します。
  3. page2.php では、ブラウザーは Page1 で設定されたセッション変数の値を表示することになっています。php
  4. 私の問題は、page2.php がセッション変数を設定されていないと見なすことです。
  5. 以下のコードからわかるように、スタックオーバーフローで他のユーザーが投稿したすべてのソリューションを試しました。

Page1.php

<?php
//start the session
session_start();

//set the session
$_SESSION['mysession'] = "Hello";


if(isset($_SESSION['mysession'])){
    //redirect the person to page 2
    session_write_close();
    header("Location: page2.php?PHPSESSID=".session_id());
    exit();
} else {
 echo "Session Not Set";
}
?>

Page2.php


<?php
//start the session
session_start();
session_id($_GET['PHPSESSID']);

if ( isset ($_SESSION['mysession']) )
   echo $_SESSION['mysession'];
else
   echo "Session not set!";
?>
4

2 に答える 2

2

session_id() は session_start() の前に呼び出す必要があります

idを指定すると、現在のセッション ID が置き換えられます。そのためには、session_start() の前に session_id() を呼び出す必要があります。セッション ハンドラーによっては、セッション ID 内ですべての文字が許可されているわけではありません。たとえば、ファイル セッション ハンドラーでは、az AZ 0-9 、 (コンマ) および - (マイナス) の範囲の文字のみが許可されます。

: セッション cookie を使用する場合、session_id() に id を指定すると、現在のセッション id が設定されているものと同じであるかどうかに関係なく、session_start() が呼び出されたときに常に新しい cookie が送信されます。

session_id()-マニュアル

また、Cookie ベースの認証が設定されているかどうかを確認することもできます。

ユーザーが URL を投稿すると、セッションが別のクライアントに引き継がれる可能性があることに注意してください。

于 2012-07-09T14:48:55.973 に答える
1

で、最初の2page2.php行を入れ替えます。変化する

session_start();
session_id($_GET['PHPSESSID']);

session_id($_GET['PHPSESSID']);
session_start();

ここのセクションを参照してくださいParameters..http://php.net/manual/en/function.session-id.php

于 2012-07-09T14:52:28.650 に答える