ホームページ  >  記事  >  バックエンド開発  >  PHPセッションのアプリケーションコード例の詳細な紹介

PHPセッションのアプリケーションコード例の詳細な紹介

黄舟
黄舟オリジナル
2017-03-22 09:42:281565ブラウズ

この記事では、主にphpセッションの詳細なアプリケーションに関する関連情報を紹介します。必要な友人は、

phpセッションの高度なアプリケーション

を参照してください。Webページはステートレス接続プログラムであるため、セッションはWebテクノロジーにおいて非常に重要です。 , そのため、ユーザーの閲覧状況を知ることはできません。セッションを通じて、ユーザーがこの立場で Web サーバーにリクエストを再度送信するときに、確認のためにユーザーの関連情報を記録できます。

例: ユーザーが電子商取引 Web サイトを閲覧するときに、セッションがない場合、ユーザーは閲覧するたびにアカウントのパスワードを入力する必要があります。

1、セッション一時ファイル

サーバーでは、すべてのユーザーセッションが一時ディレクトリに保存されると、サーバーのセキュリティと効率が低下します。サーバーに保存されているサイトを開くと非常に時間がかかります。

PHP 関数session_save_path() 関数を使用してセッション一時ファイルを保存すると、一時ファイルの保存によって引き起こされるサーバー効率の低下やサイトを開くのが遅くなるという問題を軽減できます。

サンプルコードは次のとおりです:

<?php
$path ="./tmp/";    //设置session存储的路径
session_save_path($path);
session_start();
$_SESSION[&#39;userName&#39;]=true;
?>


session_save_path() は session_start() の前に実行する必要があります。

2、セッションキャッシュ

セッションキャッシュとは、WebページのコンテンツをIEクライアントのインターネット一時ファイルフォルダーに一時的に保存することで、キャッシュ時間を設定することができます。

セッション キャッシュは session_cache_limiter() 関数を使用します。その構文は次のとおりです:

string session_cache_limiter([string cache_limiter]);

パラメーターcache_limiter はパブリックまたはプライベートです。 Colleagues セッションはサーバー側ではなく、クライアント側にあります。サーバーには表示されません。

キャッシュ時間を設定するには、関数 session_cache_expire() を使用します。構文は次のとおりです:

int session_cache_expire([int new_cahche_expire]);

パラメーター new_cahche_expire は、セッション キャッシュの時間番号 (分単位) です。

注:

これら 2 つのセッション関数は session_start() 関数の前に実行する必要があります

セッション キャッシュ ページのサンプル コードは次のとおりです:

<?php

session_cache_limiter("private");
$cache_limit =session_cache_limiter();   //开启客户端缓存
echo "缓存限制为:".$cache_limit."\n";
session_cache_expire(30);
$cache_expire = session_cache_expire();  //设定客户端缓存时间
echo "客户端缓存时间为:".$cache_expire."分钟\n";
session_start();

?>

実行結果は次のとおりです:

PHPセッションのアプリケーションコード例の詳細な紹介

3、セッションデータベースストレージ

PHPにおけるセッションのデータベースストレージは、主にsession_set_save_handler()関数を通じて実装されます。 具体的な構文は次のとおりです。
bool session_set_save_handler(string open, string close, string read, string write, string destroy, string gc); 以下は、これら 6 つのパラメータ (関数) に分かれています。
オブジェクト指向

プログラミングPHPセッションのアプリケーションコード例の詳細な紹介を完了すると、誰もがより明確に理解できるようになります。

(1) session_open() 関数をカプセル化します。コードは次のとおりです。

function _session_open($save_path,$session_name){
global $handle;
$handle =mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;)or die(&#39;数据库连接失败!&#39;);
mysql_select_db(&#39;db_database11&#39;,$handle)or die(&#39;数据库不存在&#39;);
return(true);
}
(2) session_close() 関数をカプセル化します。コードは次のとおりです。
function _session_close(){
global $handle;
mysql_close($handle);
return(true);
}
(3) session_read() 関数をカプセル化します。 、UNIX
timestamp

関数に現在時刻を設定し、$keyに基づいてセッション名刺とコンテンツを検索します。コードは次のとおりです:

function _session_read($key){
golbal $handle;     //全局变量$handle 连接数据库
$time =time();     //设定当前时间
$sql ="select session_data from tb_session where session_key = &#39;$key&#39; and session_time>&#39;$time&#39;";
$result =mysql_query($ssql,$handle);
$row =mysql_fetch_array($result);
if($row){
return($row[&#39;session_data&#39;]);
}else{
return(false);
}
}

(4) この関数はセッションの有効期限を設定し、クエリ結果が空の場合はセッションの名前と内容を検索します。次に、session_id、session_name、有効期限、

に従って、ページ内のセッションをデータ ライブラリに挿入します。クエリ結果が空でない場合は、$key に基づいてデータベース内のセッション ストレージ情報を変更します。コードは次のとおりです。

function _session_write($key,$data){
global $handle;
$time = 60*60;
$lapse_time =time()+$time;   //得到UNIX时间戳
$sql = "select session_data from tb_session where session_key =&#39;$key&#39; and session_time>$lapse_time";
$result =mysql_query($sql,$handle);
if(mysql_num_rows($result)==0){  //没有结果
$sql ="insert into tb_session values(&#39;$key&#39;,&#39;$data&#39;,$lapse_time)";
$result =mysql_query($sql,$handle);
}else{
$sql ="update tb_session set session_key=&#39;$key&#39;,session_data =&#39;$data&#39;,session_time =$lapse_time where session_key =&#39;$key&#39;";
$result =mysql_query($sql,$handle);
}
return($result);
}

(5) は session_destroy() をカプセル化し、$key に基づいてデータベース内の Sessin を削除します。 コードは次のとおりです。

function _session_destroy(){
global $handle;
$sql ="delete from tb_session where session_key =&#39;$key&#39;";
$result =mysql_query($sql,$handle);
}
(6) は session_gc() をカプセル化し、期限切れのセッションを削除します。セッションの有効期限に関するサンプルコードは次のとおりです:

functin _session_gc($expiry_time){
global $handle;
$sql ="delete from tb_session where session_expiry_time<$expiry_time";
$result =mysql_query($sql,$handle);
return($result);
}

以上がPHPセッションのアプリケーションコード例の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。