Cookie が無効になっていますが、セッションは引き続き使用できますか?
リリース: 2016-07-28 08:28:21
Cookie とセッションは一般に 2 つの独立したものであると考えられています。セッションはサーバー側で状態を維持するソリューションを使用し、Cookie はクライアント側で状態を維持するソリューションを使用します。しかし、Cookie を無効にするとセッションを取得できなくなるのはなぜでしょうか?セッションはセッション ID を使用して現在の会話に対応するサーバー セッションを決定し、セッション ID は Cookie を介して渡されるため、Cookie を無効にすることはセッション ID を失うことと同等であり、したがってセッションは失われます。
Cookieを無効にするとセッションは確実に使用できなくなるって本当ですか?
1. ASP
ASP では、セッションは Cookie に依存して利用可能になります。セッションはサーバー側に保存されますが、相対的に言えば、セッションは Cookie よりも安全で信頼性が高くなります。
2. PHP
PHP では、関連する設定を通じて、Cookie に依存せずにセッションが存在できます。これは次の理由によるものです:
セッションはサーバー側に保存されます (デフォルトでは、セッションはファイルとして保存されます)。ユーザーのファイルはクライアントから提供されたセッション ID に従って取得され、変数の値が取得されます。 ID はクライアントの Cookie または Http1.1 プロトコルを使用できます。Query_String (アクセスされた URL の「?」以降の部分) がサーバーに送信され、サーバーはセッション ディレクトリを読み取ります。つまり、Session IDはサービス上に格納されているSession変数を取得するためのIDカードです。コード session_start(); が実行されると、サーバー上にセッション ファイルが生成され、それに一意に対応するセッションも生成されます。
ID は、生成されたセッション ファイルに特定の形式で保存されるセッション変数を定義します。セッション ID を通じて、定義された変数を取得できます。ページを通過した後、セッションを使用するには、session_start() を再度実行する必要があります。別のセッション ファイルが生成され、それに応じて、このセッション ID を使用して最初のセッション ファイルを取得することはできません。このセッション ID はそれを開くための「キー」ではないため、変数は入力されます。session_start(); の前にコード session_id($session id); を追加すると、新しいセッション ファイルは生成されず、この ID に対応するセッション ファイルが直接読み取られます。
PHP のセッションは、デフォルトでクライアントの Cookie を使用してセッション ID を保存するため、クライアントの Cookie に問題があるとセッションに影響します。 Session は必ずしも Cookie に依存する必要はなく、これが Cookie と比較した Session の利点でもあることに注意してください。クライアントの Cookie が無効になっている場合、または問題が発生している場合、PHP は自動的にセッション ID を URL に添付し、セッション ID を介してページ間でセッション変数を使用できるようにします。ただし、この添付ファイルには「php.ini の session.use_trans_sid」という特定の条件もあります。
= 1"、またはコンパイル時に "--enable-trans-sid" オプションがオンになります。
フォーラムを使用したことのある友人は、フォーラムに参加するときに、Cookie がオンになっているかどうかを確認するよう求められることがよくあることを知っています。これは、なぜなら、ほとんどのフォーラムはすべて Cookie に基づいており、Cookie は使いやすくするためにユーザー名やパスワードなどのユーザー情報を保存するために使用されます。さらに、多くの友人は Cookie が安全ではないと考えており (実際にはそうではありません)、PHP で無効にすることがよくあります。セッションを使用して Cookie を置き換えます。これは、クライアントが Cookie をオンにするかどうかには依存しません
したがって、Cookie を脇に置き、Session を使用することができます。つまり、ユーザーが Cookie をオフにすることを前提として、Session を使用する方法がいくつかあります。これを実現するには:
1. php.ini 設定ファイルで「session.use_trans_sid = 1」を設定するか、コンパイル時に「--enable-trans-sid」オプションをオンにして、PHP がページ間でセッション ID を自動的に渡すようにします
2 . URL を通じて値を手動で渡し、セッション ID を渡すためのフォームを非表示にします。
3. セッション ID をファイル、データベースなどに保存し、クロスページ プロセス中に手動で呼び出します。
---------------- --------------------------------- ----------------- --------------------------------- -----------------
iguowei2004.blog. 163.com/blog/.""s2.php">次のページ";
echo $url;
?>
--------------------------------------------- ----- -------------------------------------- -----
-------------------------------------- ---------------------------------------------------- ---- ----------------
// s2.php var1'];
?>
--------------- ------------------------ ------------------------ ------------------------ ------------------------
上記のコードを実行すると、クライアント Cookie が正常であれば、「中華人民共和国」という結果が得られるはずです。
ここで、クライアント上の Cookie を手動で閉じて再度実行すると、結果が得られない可能性があります。結果が得られない場合は、php.ini ファイルで「session.use_trans_sid = 1」を設定するか、コンパイル時に「--enable-trans-sid オプション」をオンにすると、「中華人民共和国」という結果が得られます。 」。
パス 2 例:
------------------------------------------ ---------------------------------------------------- ---- ----------------------------------
共和国";
$sn = session_id();
$url="次のページ";
echo $url;
---- ------------------------------------------------ ---- -----------------------------------
-------- ------ -------------------------------------------- ------ -------------------------------------- -----
session_id ($_GET['s']; ?>
------------------------------------ ------------ -------------------------------------- ------------ ------------------
---------------------------- --------------------------------- ------------------- ------------------------
login.html
---- ------------ -------------------------------------- ----------- -------------------------------------- -----------
mylogin1.php
|| !$pass) {
| "; E die ();
}
if (! ($ Name ==" laigw "&& $ pass ==" 1234 ") {
echo" ユーザー名 またはパスワードが間違っています。 & lt; a href = "http : //laiguowei2004.blog.163.com/blog/login.html "& gt; 再ログイン & lt;/a & gt;" "
die () ;
}
//登録ユーザー
phpsid.txt"," w+"); r fwrite ($ fp, $ psid);
fclose ($ fp);
// 認証が成功し、関連する操作
& & lt;";
echo "& lt; a href = "http://laiguowei2004.blog.163.com/blog/mylogin2.php">次のページ";
?>
---------------- ---------------------------- -------------------- ------------------------------ -------------------- -
---------------------------- -------------------- ------------------------------ -------------------- ------------------
mylogin2.php
$fp = fopen( "d:tmpphpsid.txt"、 "r");
$ sid = fread($ fp、1024);関連する操作を行うにはログインしてください
未
& & lt; a href =" http://laiguowei2004.blog .163.com/blog/login.html">ログイン閲覧";
die();
-------------------------------------- ----------- -------------------------------------- -----------
Cookie テストもオフにしてください。ユーザー名: laigw; パスワード: 1234; ファイルを通じてセッション ID を保存します。ファイルは D:/tmp/phpsid です。 txt のファイル名やパスはご自身のシステムに合わせて決めてください。
要約すると、上記のメソッドには 1 つの共通点があります。それは、前のページでセッション ID を取得し、それを次のページに渡す方法を見つけて、その前にコード セッション ID (渡されたセッション ID) を追加することです。 session_start(); コードは次のページにあります。
上記では、Cookie が無効になっている場合でもセッションは使用できるかについて紹介しました。 、関連コンテンツも含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31