ホームページ  >  記事  >  バックエンド開発  >  PHPでのセッション時間設定の詳細説明

PHPでのセッション時間設定の詳細説明

伊谢尔伦
伊谢尔伦オリジナル
2017-04-28 11:52:222611ブラウズ

ほとんどのフォーラムでは、ログイン時に有効期限を選択できます (1 週間保存、1 か月保存など)。このとき、Cookieを使用してログイン有効期限を設定できます。セッションの有効期限を設定するには、主にいくつかの方法があります:

1. クライアントは Cookie を禁止しません

(1) session_set_cookie_params() を使用してセッションの有効期限を設定します。この関数はセッションの組み合わせです。 Cookie を使用して有効期限を設定します。セッションを 1 分後に期限切れにする場合のコード例は次のとおりです:

<?php
 $time = 1*60;                   //设置session失效时间
 session_set_cookie_params($time);      // 使用函数
 session_start();                 //初始化  session
 $_SESSION["username"] = &#39;tom&#39;;
?>

注: session_set_cookie_params() は session_start() の前に呼び出す必要があります。

注: この機能は、一部のブラウザでは問題が発生するため、使用はお勧めできません。 したがって、有効期限は通常手動で設定されます。

(2) setcookie() 関数を使用して、セッションの有効期限を設定します。1 分後にセッションが期限切れになるようにするには、コード例は次のとおりです。

<?php
 session_start();
 // session失效时间
 $time = 1*60;                    
 // 使用 setcookie 手动设置 session失效时间      
 setcookie(session_name(),session_id(),time()+$time.&#39;/&#39;);    
 $_SESSION["username"] = &#39;tom&#39;;
?>

説明: 上記のコード例では、setcookie( ) 関数では、session_name はセッションの名前、session_id はクライアント ユーザーの ID です。 session_id はランダムに生成された一意の名前であるため、セッションは比較的安全です。有効期限は Cookie の有効期限と同じです。最後のパラメータはオプションで、Cookie が配置されるパスです。

2. クライアントで Cookie を無効にする

クライアントで Cookie を無効にすると、セッション ページ間の転送が無効になります。会員カードはスーパーマーケットカードのいずれかに入会できますが、スーパーマーケット間にインターネット接続がないため、会員カードは申し込んだスーパーマーケットでのみ使用できます。 この問題を解決するには、いくつかの方法があります:

(1) ログインする前に Cookie をオンにする必要があることをユーザーに通知します。これは多くのフォーラムで行われています。

(2) php.ini ファイルで session.use_trans_sid =1 を設定するか、コンパイル時に -enable-trans-sid オプションをオンにして、PHP がページ間で session_id を自動的に渡すようにします。

(3) session_idをGETメソッドと隠しフォームで渡します。

(4) ファイルまたはデータベースを使用して session_id を保存し、ページ間の転送中に手動で呼び出します。

上記の 2 番目の方法は、ユーザーがサーバー内の php.ini ファイルを変更できないため、詳しくは紹介しません。 3 番目の方法では、Cookie を使用して有効期限を設定することはできませんが、ログイン状態は変わりません。 4 番目の最も重要な方法は、エンタープライズ レベルの Web サイトを開発するときにサーバーの速度を低下させる

session ファイルに遭遇した場合に使用できます。ここでは、 GET メソッドを使用した 3 番目の送信方法を紹介します。 サンプル コードは次のとおりです。

<?php
  $session_name = session_name();        //取得 session 名称
  $session_id = $_GET[$session_name];    // 取得 session_id GET方式
  session_id($session_id);               // 关键步骤
  session_start();
  $_SESSION[&#39;admin&#39;] = &#39;soft&#39;;
?>

注: セッションは、ページをリクエストした後に session_id を生成します。今度は Cookie が session_id を渡すことができません。次のページをリクエストするときに session_id が再生成されるため、ページ間のセッションの受け渡しが失敗します。

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

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