この記事では、主にphpセッションの詳細なアプリケーションに関する関連情報を紹介します。必要な友人は、
phpセッションの高度なアプリケーション
を参照してください。Webページはステートレス接続プログラムであるため、セッションはWebテクノロジーにおいて非常に重要です。 , そのため、ユーザーの閲覧状況を知ることはできません。セッションを通じて、ユーザーがこの立場で Web サーバーにリクエストを再度送信するときに、確認のためにユーザーの関連情報を記録できます。
例: ユーザーが電子商取引 Web サイトを閲覧するときに、セッションがない場合、ユーザーは閲覧するたびにアカウントのパスワードを入力する必要があります。
1、セッション一時ファイル
サーバーでは、すべてのユーザーセッションが一時ディレクトリに保存されると、サーバーのセキュリティと効率が低下します。サーバーに保存されているサイトを開くと非常に時間がかかります。
PHP 関数session_save_path() 関数を使用してセッション一時ファイルを保存すると、一時ファイルの保存によって引き起こされるサーバー効率の低下やサイトを開くのが遅くなるという問題を軽減できます。
サンプルコードは次のとおりです:
<?php $path ="./tmp/"; //设置session存储的路径 session_save_path($path); session_start(); $_SESSION['userName']=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(); ?>
実行結果は次のとおりです:
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() 関数をカプセル化します。コードは次のとおりです。 function _session_open($save_path,$session_name){
global $handle;
$handle =mysql_connect('localhost','root','root')or die('数据库连接失败!');
mysql_select_db('db_database11',$handle)or die('数据库不存在');
return(true);
}
function _session_close(){
global $handle;
mysql_close($handle);
return(true);
}
timestamp
function _session_read($key){ golbal $handle; //全局变量$handle 连接数据库 $time =time(); //设定当前时间 $sql ="select session_data from tb_session where session_key = '$key' and session_time>'$time'"; $result =mysql_query($ssql,$handle); $row =mysql_fetch_array($result); if($row){ return($row['session_data']); }else{ return(false); } }
に従って、ページ内のセッションをデータ ライブラリに挿入します。クエリ結果が空でない場合は、$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 ='$key' and session_time>$lapse_time"; $result =mysql_query($sql,$handle); if(mysql_num_rows($result)==0){ //没有结果 $sql ="insert into tb_session values('$key','$data',$lapse_time)"; $result =mysql_query($sql,$handle); }else{ $sql ="update tb_session set session_key='$key',session_data ='$data',session_time =$lapse_time where session_key ='$key'"; $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 ='$key'";
$result =mysql_query($sql,$handle);
}
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 サイトの他の関連記事を参照してください。