0

別のページに保存されているセッション変数にアクセスしようとしています。Cookieを有効にすると機能しますが、Cookieを無効にするとセッション変数が失われます。

次に例を示します。

<?php
//page1.php

session_start();

$_SESSION['startTime'] = time();

echo("<a href=\"page2.php?" . session_name() . "=" . session_id() . "\">Page2</a><br />\n");

echo("Session-ID: " . session_id() . "<br />");
echo("Session-Content: " . print_r($_SESSION));

// output:
// <a href="page2.php?PHPSESSID=ou1n4mrotvqc6dod41q8t0a432">Page2</a><br />
// Session-ID: ou1n4mrotvqc6dod41q8t0a432<br />Array
// (
//     [startTime] => 1339177944
// )
// Session-Content: 1
?>

<?php
//page2.php

session_start();

session_id($_GET[session_name()]);

echo("Session-ID: " . session_id() . "<br />\n");
echo("Session-Content: " . print_r($_SESSION));

session_destroy();

// output
// Session-ID: ou1n4mrotvqc6dod41q8t0a432<br />
// Array
// (
// )
// Session-Content: 1
?>

私は何か間違ったことをしていますか?Cookieを無効にした状態でセッション変数を使用するにはどうすればよいですか?

4

4 に答える 4

4

デフォルトでは、PHPセッションではCookieを有効にする必要があります。しかし、それはクッキーなしで行うことができます:クッキーなしのPHPセッション

于 2012-06-08T18:05:04.107 に答える
4

php.ini設定を変更して、セッションIDをクエリ文字列で渡せるようにする必要がありsession.use_only_cookiesます0SIDの代わりにマジック定数を使用することもできますsession_name() . "=" . session_id()

于 2012-06-08T18:05:39.947 に答える
1

.htaccessファイルに以下を追加してみてください。

php_flag session.use_cookies 0
于 2012-06-08T18:05:42.867 に答える
1

セッションIDはCookieに保存されます。サーバーは、それがサーバーと通信しているのと同じブラウザーであることを他にどのように知ることができますか?

(セッションIDをURLに保存できるので、これはちょっとしたトリックの質問ですが、それは良い考えではありません)。

クッキーはセッションを保存するために使用されます。それらがないと、セッションを(安全に)保存できません。

于 2012-06-08T18:05:50.243 に答える