ホームページ >php教程 >php手册 >PHP は Cookie を使用してユーザーとのセッションを実装し、phpcookie はセッションを実装します

PHP は Cookie を使用してユーザーとのセッションを実装し、phpcookie はセッションを実装します

WBOY
WBOYオリジナル
2016-06-16 09:16:361130ブラウズ

php は Cookie を使用してユーザーとのセッションを実装し、phpcookie はセッション

を実装します

この記事の例では、PHP が Cookie を使用してユーザーとのセッションを実装する方法について説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。

PHP には、単純な Cookie や本格的なユーザー セッションなど、ユーザー情報の管理と記録に使用できる関数が多数含まれています。セッションでは、スーパーグローバル変数を参照するのと同じくらい簡単に状態を保存できる、PHP 言語に組み込まれたテクノロジを使用します。

1. クッキーの紹介

PHP スクリプトで Cookie を使用して、ユーザーに関する小規模な情報を保存できます。 Cookie は、サーバーまたはスクリプトからのリクエストに応じてユーザーのブラウザによって保存される少量のデータです。ユーザーのブラウザを通じて、1 人のホストが 20 個の Cookie の保存をリクエストできます。各 Cookie には、名前、値、有効期限に加えて、ホストとパスの情報が含まれています。 1 つの Cookie のサイズ制限は 4KB です。

Cookie を設定した後は、リクエストを行ったホストのみがデータを読み取ることができるため、ユーザーのプライバシーが確実に尊重されます。さらに、ユーザーは自分を介したすべての Cookie リクエストを受け入れるか拒否するようにブラウザを設定できます。したがって、Cookie は慎重に使用する必要があり、実装がユーザーに警告するように設計されていない環境では必須の要素として依存すべきではありません。

Web ブラウザが Cookie を保存するように設定されている場合、有効期限が切れるまで Cookie ベースの情報が保持されます。ユーザーがブラウザを使用して Cookie のパスとドメインに一致するページを閲覧すると、Cookie がサーバーに再送信されます。その後、PHP スクリプトは Cookie にアクセスできます。Cookie は環境変数 HTTP_COOKIE に含まれるか、または $COOKIE スーパーグローバル変数の一部として、次の 3 つの方法でアクセスできます。

コードをコピー コードは次のとおりです。

echo $_SERVER["HTTP_COOKIE"]; echo getenv("HTTP_COOKIE");

echo $_COOKIE["vegetable"];

2. PHP を使用して Cookie を設定します

PHP スクリプトで Cookie を設定するには 2 つの方法があります。まず、header() 関数を使用して SetCookie ヘッダーを設定します。 Header() 関数は、サーバー応答のヘッダー部分に含まれる文字列を予期します。ヘッダーは自動的に送信されるため、Jehol 出力がブラウザーに送信される前に header() を呼び出す必要があります。


コードをコピー コードは次のとおりです:head("Set Cookie:vegetable=artichoke; Expires=Tue,07-Mar-06 14: 39:58 GMT;パス=/;ドメイン=yourmain.com");

難しいことではありませんが、Cookie を設定するこの方法では、ヘッダー文字列を構築する関数を記述する必要があります。この例のように日付と URL エンコーディングの名前と値のペアをフォーマットすることは特に難しい作業ではありませんが、PHP にはこれを行うための関数 setcookie() が用意されているため、繰り返しの作業となります。


Setcookie() 関数は、その名前が示すとおりの動作を行い、Set-Cookie ヘッダーを出力します。したがって、他のコンテンツがブラウザに送信される前に呼び出す必要があります。この関数は、Cookie 名、Cookie 値、UNIX タイムスタンプ形式の有効期限、パス、ドメイン、および最初のパラメータに加えて、Cookie が安全な接続を介してのみ送信される場合は 1 に設定される整数を受け入れます。この関数はオプションです。


コードをコピー コードは次のとおりです: setcookie ( "vegetable" , "artichoke" , time ()+3600, "/" , ".yourdomain.com" , 0);


if ( isset ( $_COOKIE [ "vegetable" ])){
echo "

またこんにちは。" . $_COOKIE [ "vegetable" ] ;
}
他 {
echo "

こんにちは。初めての訪問かもしれません。

" ;
}
?>

スクリプトの最初の実行時に Cookie を設定したとしても、この時点では $_COOKIE["vegetable"] 変数は作成されません。 Cookie はブラウザがサーバーに送信するときにのみ読み取られるため、ユーザーがこのドメイン内のページに再度アクセスするまでは読み取れません。

正式に言えば、Cookie を削除するには、Cookie 名パラメータを指定して setcookies():
を呼び出すだけです。 setcookie("野菜");
ただし、このアプローチは常に機能するとは限らず、信頼できません。代わりに、Cookie を削除するには、有効期限が切れていることが確実な時刻を Cookie に設定します。これが最も安全な方法です:
Setcookie("野菜", "", time()-60, "/", "yourdomain.com", 0);
また、最初に Cookie を設定するために使用したものと同じパス、ドメイン、セキュリティ パラメータを setcookie() に渡すようにしてください。

3. セッション機能の概要

訪問者がセッション対応ページにアクセスすると、新しい識別子が割り当てられるか、ユーザーは以前の訪問ですでに確立されている識別子に再関連付けされます。すでにセッションに関連付けられている変数は、$_SESSION スーパーグローバル変数を通じてコードで使用できます。
通常、セッション状態は一時ファイルに保存されますが、session_set_save_handler() と呼ばれる関数を使用してデータベース ストレージを実装することもできます。

4. 会話を開始します

コードをコピー コードは次のとおりです:

session_start();
echo "

セッション ID は " .session_id () ;
?>


5. セッション変数を使用する

すべての PHP ドキュメント内の一意のセッション識別子にアクセスできることは、セッション機能の始まりにすぎません。セッションが開始されると、必要な数の変数をスーパーグローバル変数 $_SESSION に保存し、セッション対応のページからそれらの変数にアクセスできます。

次のプログラムは、スーパーグローバル変数 $_SESSION に 2 つの変数を追加します。

コードをコピー コードは次のとおりです:

session_start();
$_SESSION [ "product1" ] = "ソニック ドライバー" ;
$_SESSION [ "product2" ] = "HAL 2000" ;
echo "製品は登録されました。" ;
?>


上記のプログラムの魔法は、ユーザーが新しいページに移動するまで実現されません。次のプログラムは、スーパーグローバル変数 $_SESSION に格納されている変数にアクセスする単一の PHP スクリプトを作成します。

コードをコピー コードは次のとおりです:

session_start();
echo "選択した製品は次のとおりです:" ;
エコー "
" echo "

  • " . $_SESSION [ "product1" ;
    echo "
  • " . $_SESSION [ "product2" ;
    エコー "" ;
    ?>


    次のプログラム リストは、ユーザーが複数の製品を選択できるフォームを作成します。セッション変数を使用して、基本的なショッピング カートを作成できます。
    arraysession.php:

    コードをコピー コードは次のとおりです:

    session_start();
    ?>

    <頭>
    セッションを使用した配列の保存


    製品選択ページ


    if ( isset ( $_POST [ "form_products" ])){
    If (! empty ( $_SESSION [ "products" ])){
    $products = array_unique (
    array_merge ( unserialize ( $_SESSION [ "products" ]),
    $_POST [ "form_Produces" ]));
    }
    それ以外
    {
    $_SESSION [ "products" ] = シリアル化 ( $_POST [ "form_products" ]);
    }
    echo "

    あなたの製品は登録されました!

    ;
    }
    ?>
    " >

    いくつかの製品を選択してください:

    <名前を選択 = "form_product[]" 複数 = "複数" サイズ = "3" >
    <オプション値 = "ソニック ドライバー" > ソニック ドライバー
    <オプション値 = "ハル 2000" > ハル 2000
    <オプション値 = "ターディス" > ターディス
    <オプション値 = "ORAC" >/オプション>
    <オプション値 = "トランスポーター ブレスレット" > トランスポーター ブレスレット



    コンテンツ ページに移動





    session1.php:

    コードをコピー コードは次のとおりです:

    /*
      ※2011年1月19日作成
      *
      * この生成されたファイルのテンプレートを変更するには、
    にアクセスしてください。   * ウィンドウ - 設定 - PHPeclipse - PHP - コード テンプレート
      */
      session_start();
    ?>

    <頭>
    セッション変数へのアクセス


    コンテンツ ページ


    if ( isset ( $_SESSION [ "products" ])){
        echo "あなたのカート:
      " ;
          foreach ( unserialize ( $_SESSION [ "products" ]) as $p ){
             エコー「
    1. 」 。 $p 。 "
    2. " ;
          }
          エコー「
    」 ;
    }
    ?>

    製品選択ページに戻る




    6.在查询字符串中传递会话ID

    7.销毁会话と重置变量

    8. 一つの带に注目册用户の環境で会话を使用する

    ここで説明されている大規模な php プログラムの設計が役立つことを望みます。

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