ホームページ >バックエンド開発 >PHPチュートリアル >phpセッションの応用を詳しく解説

phpセッションの応用を詳しく解説

墨辰丷
墨辰丷オリジナル
2018-05-24 16:33:201932ブラウズ

phpセッションの応用を詳しく解説

この記事では主にphpセッションのアプリケーションに関する関連情報を詳しく紹介しますので、必要な方は参考にしてください

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

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

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

関連トピックの推奨事項: phpセッション (画像、テキスト、ビデオ、ケースを含む)

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 つのパラメータ (関数) に分かれています。オブジェクト指向プログラミングを完了すると、誰もがより明確に理解できるようになります。

(1) session_open() 関数をカプセル化します。コードは次のとおりです。 phpセッションの応用を詳しく解説

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 タイムスタンプに現在時刻を設定し、$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 と codeigniter での

session

-Cookie の詳細な使用

以上がphpセッションの応用を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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