この記事では主にphpセッションのアプリケーションに関する関連情報を詳しく紹介しますので、必要な方は参考にしてください
phpセッションの高度なアプリケーション
セッションはWebテクノロジーにおいて非常に重要です。目に見えないステータス接続プログラムを使用しているため、ユーザーの閲覧状況を知ることはできません。セッションを通じて、ユーザーがこの立場で Web サーバーにリクエストを再度送信するときに、確認のためにユーザーの関連情報を記録できます。
例: ユーザーが電子商取引 Web サイトを閲覧するときに、セッションがない場合、ユーザーは閲覧するたびにアカウントのパスワードを入力する必要があります。
関連トピックの推奨事項: phpセッション (画像、テキスト、ビデオ、ケースを含む)
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); }
(3) session_read() 関数をカプセル化します。 、関数 UNIX タイムスタンプに現在時刻を設定し、$key に基づいてセッション名刺とコンテンツを検索します。コードは次のとおりです:
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); } }
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); }
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 と codeigniter での
session-Cookie の詳細な使用
以上がphpセッションの応用を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。