ホームページ > バックエンド開発 > PHPチュートリアル > php:セッションはCookie_PHPに依存する必要がありますか? チュートリアル

php:セッションはCookie_PHPに依存する必要がありますか? チュートリアル

WBOY
リリース: 2016-07-14 10:10:37
オリジナル
996 人が閲覧しました

PHP のセッションはデフォルトでクライアントの Cookie (通常の意味での Cookie と区別するために、セッション Cookie と呼びます。通常の意味での Cookie は Cookie です) を使用してセッション ID を保存できますが、PHP のセッションはセッション Cookie のみが使用されますか?

もちろんそうではありません。そうでない場合、わざわざセッションを作成する必要はありません。セッションの利点の 1 つは、クライアントの Cookie が無効になっていると、セッション ID が自動的に URL に付加されることです。セッション ID を通じて記憶できます。

確認のために以下の2つのファイルを書き込みます。まず、ブラウザのCookieを無効にします。

[php]
//ファイル名はtest1.phpです
セッション開始(); session_register("url"); $url="test2.php"; echo "goto test2.php"; ?>

//ファイル名はtest1.php
session_start();
session_register("url");
$url="test2.php";

echo "goto test2.php";

?> [php]
セッション開始(); if (session_is_registered("url")) {
エコー「おめでとうございます。」 $url="test1.php"; echo "goto test1.php"; }その他
エコー「失敗しました。」 ?>

session_start();
if (session_is_registered("url")) {
エコー「おめでとうございます。」;
$url="test1.php";
echo "goto test1.php";

エコー「失敗しました。」;
?>

次に、ブラウザに「http://localhost/test1.php」と入力し、リンクの上にマウスを移動して、ステータスバーのアドレスを確認します。これは単に「http://localhost/test2.php」ではありません。これの形式: "http://localhost/test2.php?phpsessid=6e3610749f7ded3784bc4a4dd10f879b"
HTML のソース ファイルを表示することもできます。ソース ファイルは次の形式です:
test2.php に移動
したがって、これは完全に PHP によるものであり、ブラウザとは何の関係もありません。つまり、セッションは、一部の人々が考えているような IE だけでなく、どのブラウザを使用しても有効であることを意味します。 ただし、ハイパーリンクステートメントは echo ステートメントによって出力されます。ハイパーリンクが <> に含まれていない場合はどうなるでしょうか。test1.php を少し修正してみましょう。

[html]
セッション開始(); session_register("url"); $url="test2.php"; echo "goto test2.php";?> (html フォーム)test2.php
session_start();

session_register("url");
$url="test2.php";
echo "goto test2.php";?>
(html フォーム)test2.php へ
ブラウザに「http://localhost/test1.php」と入力し、マウスを 2 つのリンクにそれぞれ移動して違いがあるかどうかを確認します。2 つのリンクがまったく同じであり、セッション ID が次のようになります。 php タグに含まれていないリンクは無効になることを心配しないでください。php はそれほど愚かではありません。
ただし、これを使用する場合は、このファイルに次のような HTML コードしかない場合でも、まず session_start() 関数を使用して php にセッションの使用を開始するように指示する必要があることに注意してください。

<頭>

gogogo
…………

この利点はlinux/unixでのみ実現できると言っていたのを覚えていますが、私はwin2000p+apache1.3.17+php4.0.4pl1を使用しており、phpはApacheモジュールモードですが、逆に、それでも動作します。 linux でテストしてみたところ、実際には機能しませんでした。PHP のデフォルトに従ってコンパイルする場合、この機能が有効かどうかを制御するのはコンパイル時のオプションです。必要なときに追加するだけです。私の設定は apache1.3.17+php4.0.4pl1 で、php は Apache モジュール モードであり、Linux で再コンパイルした後、テストは netscape navigator4.7 で合格することができます。ブラウザとは関係ありません)。 Cookie を有効にしても、ウィンドウ内に有効なセッション ID (URL ではなくセッション Cookie に記録されている) があり、新しいウィンドウを開いて同じページに入ると、セッションのみを複数のウィンドウで使用することはできません。前のウィンドウに影響を与えることなく、新しいセッション ID が再び取得されます。
複数のウィンドウ間で同じセッション ID を使用する場合は、URL の後にセッション ID を指定するだけです。つまり、セッション ID を含むウィンドウの URL をコピーし、新しく開いたウィンドウに貼り付けると、セッション ID が指定されます。セッション ID の原理を理解すれば、最初に現在の有効なセッション ID を取得し、それを Cookie に記録して、クロスウィンドウ セッションを実装することは難しくありません。他のウィンドウで現在のセッション ID を取得します。


http://www.bkjia.com/PHPjc/477502.html

tru​​ehttp://www.bkjia.com/PHPjc/477502.html技術記事 PHP のセッションは、デフォルトでクライアントの Cookie (通常の意味での Cookie と区別するために、セッション Cookie と呼びます。通常の意味での Cookie は Cookie です) を使用して sessi...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート