ホームページ >バックエンド開発 >PHPチュートリアル >学習メモ: PHP の使い方について語る Session_PHP Tutorial

学習メモ: PHP の使い方について語る Session_PHP Tutorial

WBOY
WBOYオリジナル
2016-07-15 13:28:12942ブラウズ

PHP については学ぶべきことがたくさんあります。ここでは主に PHP セッションの使用方法を紹介します。 PHP 開発における Cookie と比較して、セッションはサーバー側に保存されるセッションであり、Cookie のような保存長制限がなく、比較的安全です。 以下に PHP セッションの使い方を簡単に紹介します。

セッションはテキストファイルの形式でサーバー側に保存されるため、クライアントがセッションの内容を変更する心配はありません。実際、サーバー側のセッション ファイルでは、PHP がセッション ファイルのアクセス許可を自動的に変更し、システムの読み取りおよび書き込みアクセス許可のみを保持し、ftp 経由では変更できないため、より安全です。 PHPChina オープンソース コミュニティ ポータル Cookie の場合、ユーザーがログインしているかどうかを確認したいと仮定すると、ユーザー名とパスワード (おそらく md5 暗号化文字列) を Cookie に保存し、ページがリクエストされるたびに検証する必要があります。ユーザー名とパスワードがデータベースに保存されている場合、毎回データベース クエリを実行する必要があり、データベースに不要な負担がかかります。

一度だけの検証はできないからです。理由は、クライアント Cookie の情報が変更される可能性があるためです。ユーザーがログインしているかどうかを示す $admin 変数を格納する場合、$admin が true の場合はログインしていることを意味し、false の場合はログインしていないことを意味します。初めて検証に合格した後、$ を格納します。 admin が cookie 内で true に等しいので、次回は検証する必要はありません。これは間違っていますか?管理者権限を取得するのは非常に危険です。

セッションは異なります。セッションはサーバー側に保存されます。リモート ユーザーはセッション ファイルの内容を変更できません。そのため、ログインするかどうかを決定するために $admin 変数を保存するだけです。最初の検証に合格した後、 $admin 値を true に設定します。後で、値が true であるかどうかを確認します。そうでない場合は、ログイン インターフェイスに移動します。これにより、多くのデータベース操作が軽減されます。また、Cookie を検証するために毎回パスワードを渡すという危険性も軽減できます (SSL セキュリティ プロトコルを使用しない場合、セッション検証は 1 回だけ行う必要があります)。パスワードが md5 で暗号化されている場合でも、簡単に傍受できます。

もちろん、セッションを使用することには、簡単な制御やユーザー定義のストレージ (データベースに保存される) など、多くの利点があります。ここではこれ以上多くは言いません。 PHP セッションは php.ini に設定する必要がありますか? 誰もが PHP.ini を変更する権限を持っているわけではないため、通常は必要ありません。セッションのデフォルトの保存パスは、サーバーのシステム一時フォルダーに保存されるようにカスタマイズできます。 in 自分のフォルダにあります。これは後ほど紹介します。

セッションの作成方法の紹介を始めます。本当に、とてもシンプルです。セッションを開始して $admin 変数を作成します:

<ol class="dp-xml">
<li class="alt"><span><span>// 启动 session  </span></span></li>
<li class=""><span>session_start();  </span></li>
<li class="alt"><span>// 声明一个名为 admin 的变量,并赋空值。  </span></li>
<li class=""><span>$_session["admin"] = null;  </span></li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span>
</li>
</ol>

Seesion を使用する場合、または PHP ファイルが Session 変数を呼び出したい場合は、session_start() 関数を使用して、Session を呼び出す前にセッション変数を開始する必要があります。他に何も設定する必要はありません。PHP が自動的にセッション ファイルを作成します。このプログラムを実行すると、システムの一時フォルダーでセッション ファイルが見つかります。通常、ファイル名は sess_4c83638b3b0dbf65583181c2f89168ec の後に 32 ビットでエンコードされたランダムな文字列が続く形式になります。エディタで開き、その内容を見てみましょう:

一般に、内容は次のような構造になっています:

<ol class="dp-xml">
<li class="alt"><span><span>// 表单提交后...  </span></span></li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">posts</font></span><span> = $_POST;  </span>
</li>
<li class="alt"><span>// 清除一些空白符号  </span></li>
<li class="">
<span>foreach ($posts as $</span><span class="attribute"><font color="#ff0000">key</font></span><span> =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> $value)  </span>
</li>
<li class="alt"><span>{  </span></li>
<li class=""><span>$posts[$key] = trim($value);  </span></li>
<li class="alt"><span>}  </span></li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">password</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">md5</font></span><span>($posts["password"]);  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">username</font></span><span> = $posts["username"];  </span>
</li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">query</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">"SELECT `username` FROM `user` WHERE `password` = '$password'"</font></span><span>;  </span>
</li>
<li class="alt"><span>// 取得查询结果  </span></li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">userInfo</font></span><span> = $DB-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>getRow($query);  </span>
</li>
<li class="alt"><span>if (!empty($userInfo))  </span></li>
<li class=""><span>{  </span></li>
<li class="alt"><span>if ($userInfo["username"] == $username)  </span></li>
<li class=""><span>{  </span></li>
<li class="alt"><span>// 当验证通过后,启动 session  </span></li>
<li class=""><span>session_start();  </span></li>
<li class="alt"><span>// 注册登陆成功的 admin 变量,并赋值 true  </span></li>
<li class=""><span>$_session["admin"] = true;  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>else  </span></li>
<li class="alt"><span>{  </span></li>
<li class=""><span>die("用户名密码错误");  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span>else  </span></li>
<li class=""><span>{  </span></li>
<li class="alt"><span>die("用户名密码错误");  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span>我们在需要用户验证的页面启动 session,判断是否登陆:  </span></li>
<li class=""><span>// 防止全局变量造成安全隐患  </span></li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">admin</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">false</font></span><span>;  </span>
</li>
<li class=""><span>// 启动会话,这步必不可少  </span></li>
<li class="alt"><span>session_start();  </span></li>
<li class=""><span>// 判断是否登陆  </span></li>
<li class="alt"><span>if (isset($_SESSION["admin"]) && $_session["admin"] === true)  </span></li>
<li class=""><span>{  </span></li>
<li class="alt"><span>echo "您已经成功登陆";  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span>else  </span></li>
<li class=""><span>{  </span></li>
<li class="alt"><span>// 验证失败,将 $_session["admin"] 置为 false  </span></li>
<li class=""><span>$_session["admin"] = false;  </span></li>
<li class="alt"><span>die("您无权访问");  </span></li>
<li class=""><span>}  </span></li>
<li class="alt">
<span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span>
</li>
</ol>


$_session をサーバー側に保存されている配列と考えるだけで十分です。登録する値 変数は配列のキーであり、配列を使用するのと何ら変わりません。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446470.html技術記事 PHP については学ぶべきことがたくさんあります。ここでは主に PHP セッションの使用方法を紹介します。 PHP 開発における Cookie と比較すると、セッションはサーバー側に保存されるセッションであり、比較的安全で...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。