5

スクリプトでCookieの代わりにURLセッションIDを使用しようとしています。次のページでは、URLの変数をセッションIDとして取得していません。私は何かが欠けているに違いありません。

最初のページhttp://www.website.com/start.php

ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
session_start();
$session_id = session_id();
header("location: target.php?session_id=". $session_id );

次のページ-http://www.website.com/target.php?session_id= rj3ids98dhpa0mcf3jc89mq1t0

ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
print_r($_SESSION);
print(session_id())

結果は異なるセッションIDであり、セッションは空白です。

配列([デバッグ] =>いいえ)pt1t38347bs6jc9ruv2ecpv7o2

4

5 に答える 5

6

URL を使用してセッション ID を渡す場合は注意してください。リファラーを介したセッション ハイジャックにつながる可能性があります。

于 2009-05-06T05:24:54.190 に答える
3

2 ページ目でsession_start()を呼び出すだけでよいようです。

ドキュメントから:

session_start() は、GET、POST、Cookie などのリクエストを介して渡される現在のセッション ID に基づいて、セッションを作成するか、現在のセッションを再開します。

編集:

とはいえ、クエリ文字列からセッション ID を手動で取得することもできます。2 番目のページでは、次のようにする必要があります。

ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
session_id($_GET['session_id']);
print_r($_SESSION);
print(session_id());

session_id()関数は、id をパラメーターとして渡すと、id を設定することに注意してください。

于 2009-05-06T03:45:17.220 に答える
2

hardcoding の代わりに、'PHPSESSID'これを使用します。

session_id($_GET[session_name()]);
于 2011-01-02T15:48:34.497 に答える