ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルのセッションと Cookie についての深い理解

PHP_PHP チュートリアルのセッションと Cookie についての深い理解

WBOY
WBOYオリジナル
2016-07-21 15:04:12703ブラウズ

ページに Cookie を設定するときは、$_COOKIE を使用して変数の値を取得する前に、ページを更新するか次のページに移動する必要があります。これは、ページがブラウザによって初めて読み込まれるときに Cookie が設定されるためです。クライアントが指定した保存場所に送信して保存するため、クライアントが送信した Cookie 変数の値は、更新するとき、または次のページに移動するときに送信されます。ページ プログラムがサーバー上で実行される前に、アドレスに対応する Cookie がサーバー側に送信されるため、端的に言えば、各ページにアクセスしたときに、クライアントがそれに対応する Cookie を見つけた場合に、$_COOKIE は値を取得できます。アクセスアドレスを指定すると、サーバー側のプログラムで実行されますので、実行前にこのクッキーをサーバーに送信してください。 phpでcookieの配列を設定する場合、phpのようなものは使えません データの追加方法:



コードをコピー
コードは以下の通り:

setcookie('my_cookie [] '、1);データはカバーされています! これから、デフォルトではデータの最初の要素の位置、つまりインデックス 0 の位置を指します
を取得します。今後Cookieデータを使用する際に配列要素を指定する Index!

$my_cookie[] = 1;
$my_cookie[] = 2;
print_r($my_cookie); //Array ( [0] => 1 [ 1] => 2)
?>



Cookie 変数を削除する 2 つの方法:

1.php



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

setcookie('user_name_1', 'zhaofei299', time()+ 3600); // 有効期間は 1 時間です setcookie('user_name_2', 'ZHAOFEI299', time()+3600); // 有効期間は 1 時間です
?>
2.php
コードをコピーします

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


setcookie('user_name_1') // 最初のタイプ
setcookie('user_name_2'); , "", time()-1); // 2 番目のタイプ (Print_r ($ __cookie); // ページを 2 回以上更新すると配列が出力されます) と
user_name_2 の 2 つの変数の削除方法が削除されたためですか?
最初のもの: Cookie の有効期間を設定しますが、デフォルトではその値を空に設定するだけで、有効期間はブラウジングと同じです。ブラウザと同様に、Cookie はブラウザを閉じたときにのみ削除されます。ブラウザを再度開いてアドレスを出力すると、すべての Cookie 変数が削除されていることがわかります。2.php の 2 つの setcookie() 関数部分をコメントアウトしてください。確認してください (アドレスを再出力します)。 : Cookie の有効期間も設定されており、これにより Cookie の有効期間が期限切れになり、Cookie が削除されるため、新しいページを更新すると、クライアントはそれをサーバーの Cookie に送信します。$_COOKIE は Cookie 変数の値を取得できませんでした!*/?>
セッション ID はデフォルトでクライアント Cookie に保存されます!



コードをコピーします

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


session_start();
print_r($_COOKIE)
?>


Cookieを設定するには2つの方法があります
header('set-cookie:user=zhaofei299');
setcookie('user', 'zhaofei299');
セッション変数をGETデータまたはPOSTデータにすることはできませんオーバーロードです!
セッション変数を使用して配列を渡します。オブジェクトをシリアル化する必要はありません!
セッション変数を使用してオブジェクトを渡す場合は、session_start() を呼び出す前にクラス オブジェクトの定義を含める必要があります。これは逆シリアル化にも当てはまります
(シリアル化) )!
単一のセッション変数を削除するには、unset($_SESSION['***']) を使用して直接削除できます。
すべてのセッション変数を削除するには、unset($_SESSION) を使用することはできません。 COOKIE の PHPSESSID に保存されているものを含むすべてのセッション情報
は、2 つのページ間のセッション接続を破棄します。セッション ID を削除してページ間の接続を失うには、$_SESSION = array();
を使用する必要があります。
session_destroy() ;
プログラムリスト 1.1
コードをコピーします コードは次のとおりです:

session_start();
header('content-type:text/html;charset=utf-8' );
$_SESSION['a'] = 'a';
$_SESSION['b'] = 'b';
unset($_SESSION) //テスト後、再度コメントします
$_SESSION['user'] = 'zhaofei299';
echo 'SESSION_ID: '.session_id().'
';
echo 'テスト ';
?> ;

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

session_start();
echo $_SESSION['user'];
echo session_id() ; //セッション変数が変更されました
? >

セッション ID (session_id) は 2 つの方法で渡されます:
1.cookie
2.url
デフォルトのセッションは Cookie に基づいており、Cookie は次の 2 つの方法で渡されます。 http プロトコルに従って送信されるため、Cookie とは異なります。同様に、
session_start() の前に出力はありません!
次に 2 番目の URL を介してセッション ID を渡すことについて説明します
SID 定数は定義されていますphp でセッション ID を取得するには
sesssin_id use!
コードをコピーします コードは次のとおりです:

session_start();
echo defined('SID')?'true' :'false'; // true
echo SID; //何もありません?>

セッションがデフォルトで Cookie に基づいているためです。 SID は、session_id が URL を介してデータを渡す場合にのみ割り当てられます
!
「ブラウザーで Cookie を無効にする」では、null ではなく SID が出力されることがわかります。
セッションを削除するには、


をコピーする必要があります。コード

コードは次のとおりです:
session_destroy( ; );
セッション変数がサーバー側に保存されることは誰もが知っています。つまり、セッション変数は php.ini の session.save_path に保存されます。デフォルトのセッションの有効期間はブラウジングが閉じられると終了しますが、セッションの有効期限が切れた後、ページが開かれると、 session_start() がセッション ID が存在するかどうかを判断し、存在しない場合はセッション ID を作成することを知っておく必要があります。有効期限が切れた session_id は新しく作成されますが、サーバー側に保存されているセッション ファイルは削除されていないため (ブラウザを閉じ、セッション ファイルを開いて保存して確認してください) session_destory() 関数を使用する必要があります。セッション ID をクリアし、同時に対応するセッション ファイルをクリアする必要があります。

session_id セッション変数データを渡すために URL を使用する場合、session_start が必要になります。 () は、セッションを開くときにセッション ID が存在するかどうかを判断します。存在しない場合は、セッション ID の変数をページに読み込みます。

ただし、セッション ID を渡すために URL が使用されます。ページが更新/入力されるとセッション ID が生成されるため、別のページで session_id 変数が設定されている場合、セッションを使用する意味がありません。
session_start() の前に、ページが前のページを取得できるように、ページの session_id を手動で設定します。次のコードが示すように、
session 変数を設定することでセッション転送も実現します。
//Cookie が無効です
1。 php



コードをコピーします

コードは次のとおりです:
session_start();$_SESSION['user'] = 'zhaofei299';
echo '次のページ';
?>

1.php のコードの 4 行目は、echo '次のページ';セッションでphp.iniを設定できます。use_trans_sidは1なので、URLを使用してセッションIDを渡すと、ブラウザは自動的にセッションIDを最後に追加します ブラウザに www.baidu.com と入力するだけで、ブラウザが自動的に追加します http://www.baidu.com/2.php


コードをコピーします

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

session_id($_GET['PHPSESSID']); // session_id を手動で設定します。前のページの
session_id 変数を使用して、セッションを実現します。 ();
print_r($_SESSION);
?>


よく使用されるセッション関数:

コードをコピーします

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


bool session_start(void);セッションの初期化
bool session_destroy(void): サーバー側のセッション関連ファイルを削除します。
string session_id() 現在のセッションの ID
string session_name() 現在アクセスされているセッションの名前。クライアントがセッション ID を保存する Cookie 名です。デフォルトの PHPSESSID。 array session_get_cookie_params() このセッションに関連付けられたセッションの詳細
string session_cache_limiter() セッションを使用してページのクライアント キャッシュを制御します
ini session_cache_expire() クライアント キャッシュ時間を制御します
bool session_destroy() サーバー側に保存されたデータを削除しますセッション情報 ファイル
void session_set_cookie_params ( int lifetime [, string path [, string domain [, boolsecure [, bool httponly]]]] ) は、このセッションに関連付けられたセッションの詳細を設定します bool session_set_save_handler ( callback open, callback close、callback read、callbackwrite、callback destroy、callback gc) はセッションを処理する関数を定義します (デフォルトのメソッドは使用しません)bool session_regenerate_id([bool delete_old_session]) 新しいセッション ID を割り当てます





http://www.bkjia.com/PHPjc/327786.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/327786.html

技術記事

ページに Cookie を設定するときは、$_COOKIE を使用して変数の値を取得する前に、ページを更新するか、次のページに移動する必要があります。その理由は、ページがブラウザに初めて読み込まれるときです。 .

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