PHPセッションとCookie

WBOY
リリース: 2016-06-23 14:34:28
オリジナル
897 人が閲覧しました

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 は安全ではないと考えており (実際には安全ではありません)、Cookie を無効にすることがよくあります。実際、PHP プログラムでは、クライアントが Cookie をオンにするかどうかに関係なく、Cookie の代わりにセッションを使用できます。 したがって、Cookie を使用してセッションを使用することもできます。つまり、ユーザーが Cookie を閉じるときに SESSION を使用するか、コンパイル時に「--enable-trans-sid」オプションをオンにして PHP を自動的に実行できるようにします。セッション ID をページ間で渡します。
2. URL を通じて値を手動で渡し、非表示のフォームを通じてセッション ID を渡します。
3. セッション ID をファイル、データベースなどに保存し、クロスページ プロセス中に手動で呼び出します。

パス 1 例:
--------------------------------------- ----- -------------------------------------- ----- -----------------------
中華人民共和国 "; $ url =" & lt; a href = "http:/ /laiguowei2004.blog.163.com/blog/
?> ---------------------------- ------------------ -------------------------------- ------------------ ------------------------

---- ------------------------ ---------------------------- ------------------------ ---------------------------- ------------
php
使用する 使用する を通じて使用する スルーする スルーする スルーする スルーする オフ ''s' ‐ to ‐ ‐‐‐‐‐‐‐‐--- ------------
-------------------------------------- ------------------------ -------------------------------------------- --------

上記のコードを実行すると、クライアントの Cookie が正常であれば「中華人民共和国」という結果が得られるはずです。 ここで、クライアントの Cookie を手動でオフにしてから実行すると、結果が得られない可能性があります。結果が得られない場合は、php.ini ファイルで「session.use_trans_sid = 1」を設定するか、コンパイル時に「--enable-trans-sid オプション」をオンにすると、「中華人民共和国」という結果が得られます。 」。

パス 2 例:
--------------------------------------- ----- -------------------------------------- ----- -----------------------
人民共和国";
$sn = session_id(); $url="次のページ";
echo $url; ---- ------------------------------------------------ ---- ------------------------------------

-------- ---- ------------------------------------------------ ---- ------------------------------------------------ ---- ---
session_id(;
------------------------------------------------------------------------------------------ -------- ---------------------

パス 3 の例:
-------------- ---------- -------------------------------------- ---------- -------------------------------------- -------
オフ ;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 🜜 equiv= "Content-Type" content="text/html; charset=gb2312" > mylogin1.php">
ユーザー名:

パスワード: ---------------------------------------------- -------------------------------------------------- -- -
---------------------------------------------- ------------------------------------------------- - ------------------------------------------------- - -----------------
mylogin1.php
$name=$_POST['name']
$pass=$_POST['pass'];
if(!$name || !$pass) {
echo "ユーザー名またはパスワードが空です。再度ログインしてください"; }
if (! ($ Name == "Laigw" && $ Pass == "1234") {
Echo "ユーザー名またはパスワードが間違っています。 & lt; a href =" http://laiguowei2004.blog.163 .com/blog/login.html">再度ログイン"; ['ユーザー'] = $name;
$psid=session_id()
$fp=fopen("D:tmpphpsid.txt ","w+");
fwrite($fp,$psid); /認証成功、関連操作
Echo "ログインしました & lt; br & gt;";
echo "& lt; //laiguowei2004.blog.163.com/blog/mylogin2.php "& gt; 次のページ";
------------------ ------------------------ ---------------------------- ---------------------- ------------------------

------------------------ ------------------------ ------------------------ ------------------------ ------------------------
Mylogin2.php

session_start ()
if (isset ($ _ session ['user']) && $ _Session ['user'] = "laigw" {
echo "ログインしました!";
----------------------- ------------------------ ------------------------ ---

また、Cookie テストをオフにしてください。ユーザー名: laigw; パスワード: 1234; これはファイルを通じて保存されます。セッション ID については、ファイル名またはパスを決定してください。あなたのシステムに従って。

要約すると、上記のメソッドには 1 つの共通点があります。それは、前のページでセッション ID を取得し、それを次のページに渡す方法を見つけて追加することです。コード セッション ID (渡されたセッション ID)。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート