ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルでセッションと Cookie を使用した自動ログイン

php_PHP チュートリアルでセッションと Cookie を使用した自動ログイン

WBOY
WBOYオリジナル
2016-07-13 10:36:45993ブラウズ

セッションの使用法:

session_start(); $_SESSION 配列変数を定義します。

session_start() が使用される前は、php や html コードでの出力を含め、いかなる形式の出力もできません。

$_SESSION 配列では数値の添字は使用できず、文字列の添字のみが使用できます。

php.ini の session_save_path 設定項目により、セッションが保存される場所が決まります。

デフォルトでは、セッションはファイルに保存されます。 session_set_save_handler() 関数を使用して、セッション メカニズムを書き換えることができます。

有効時間を設定します

コードは次のとおりです
セッション:
ini_set('session.gc_maxlifetime',24*3600);//セッションは 1 日保存されます
session_start();
$_SESSION['web_name']='NetEase';

注: デフォルトの時間は: 20-24 分のようですが、ブラウザを閉じるとセッションは自動的に消えます!

セッションの削除:

要素を削除 unset($_SESSION[key]);

すべてのセッションを削除 $_SESSION=array();

セッションデータを保存したファイルを削除 session_destroy();

session_distroy() メソッドはサーバー側のセッション ファイルを削除するだけで、メモリ内の $_SESSION 変数を解放しません。 session_distroy() の直後に var_dump($_SESSION) を実行しても、セッションの出力は表示されます。したがって、セッションを完全に解放したい場合は、$_SESSION=array() を使用する必要があります。

Cookieの使用:

Cookie を設定します: setcookie (変数名、変数値、生存時間 (タイムスタンプ))。

Cookieの削除:setcookie(変数名,値,time()-1)。原則: Cookie の有効期間を期限切れに設定します。

Cookie: $_COOKIE[変数名]を読み取ります。

$path="/"; //Cookie ストレージのパスを設定します。 1. デフォルトのストレージはこのディレクトリにのみアクセスできます。 2. 「/」はルート ディレクトリに保存されることを意味します。 .「/foo/」のみ fooフォルダ配下のファイルのみアクセス可能

コードは次のとおりです


setcookie("cookiename","NetEase'", time()+intval(24*3600),$path); /* 有効期間 1 日 */

注: Cookie に保存される値は文字列型のみですが、数値を保存する場合の問題を解決する方法

ストレージ:

コードは次のとおりです

$array=array('a','b');
//"serialize:"戻り値は文字列です。場合によっては、データを文字列に変換して保存するために、データの元の構造と内容を保持したいことがあります。この機能を使用する必要があります。
$res=serialize($array);
setcookie("snsresult",$res,time()+intval(24*3600));

読み:

コードは次のとおりです

//シリアル化オブジェクトを復元します

$other = StripSlashes($_COOKIE['snsresult']);//このステップは実行する必要があります
$arr=unserialize($other);//最初に暗号化された Cookie をデコードします www.111Cn.net

注: setcookie がコード内の値にアクセスしているときは、その前にコンテンツを出力したり、空行を出力したりすることはできません。そうしないと、Cookie に値がありません。

1. $_COOKIE は Cookie の値を読み取るだけで、Cookie を設定することはできません。

2. setcookie を使用する前は、どのタイプの出力も存在できません。

3. スクリプトが初めて Cookie を設定した後は、現在のスクリプトで $_COOKIE を使用して取得することはできません。ページを更新するか、他のスクリプトで取得する必要があります。

自動ログイン

サーバーにアクセスするたびに、Cookie がブラウザーに保存され、2 つのリクエストが同じクライアントからのものであることがサーバーに認識されます。安全性が低くなります。 セッションはサーバー上に保存され、各リクエストは Cookie によってサーバーにもたらされたセッション ID によって照合されます。より高いセキュリティ。
コードは次のとおりです

//ユーザーがログインしているかどうかを確認します


関数 checklogin(){
If(empty($_SESSION['user_info'])){ //セッションが空かどうかを確認します
If(empty($_COOKIE['username']) || empty($_COOKIE['password'])){ //セッションが空で、ユーザーがログインステータスの記録を選択しなかった場合
header("location:login.php?req_url=".$_SERVER['REQUEST_URI']); //ログイン ページに移動し、要求された URL を記録し、ログイン後にそのページにジャンプします。ユーザー エクスペリエンスは良好です。
}else{ //ユーザーはログインステータスを記憶することを選択しました
$user = getUserInfo($_COOKIE['username'],$_COOKIE['password']) //ユーザーの個人情報を取得します
If(empty($user)){ //ユーザー名とパスワードが間違っているため、情報が取得されていません www.111Cn.net ログイン ページに移動します
header("location:login.php?req_url=".$_SERVER['REQUEST_URI']); }その他{
$_SESSION['user_info'] = $user; //ユーザー名とパスワードは正しいので、ユーザーの個人情報をセッションに入力します
}
}
}
}

2. ユーザーがログイン情報を送信します


ユーザー名 = トリム($_POST['ユーザー名']); $パスワード = md5(trim($_POST['パスワード'])); $validatecode = $_POST['validateCode']
$ref_url = $_GET['req_url']
$remember = $_POST['remember']

$err_msg = ''; if($validatecode!=$_SESSION['チェックサム']){
$err_msg = "確認コードが間違っています"; }elseif($username=='' || $password==''){
$err_msg = "ユーザー名とパスワードを空にすることはできません"; }その他{
$row = getUserInfo($ユーザー名,$パスワード);
if(空($row)){
$err_msg = "ユーザー名とパスワードが両方とも間違っています"; }その他{
$_SESSION['user_info'] = $行
; if(!empty($remember)){ //ユーザーが選択した場合、ログインステータスを記録し、ユーザー名と暗号化されたパスワードを Cookie に入れます
setcookie("ユーザー名", $ユーザー名, 時間()+3600*24*365); setcookie("パスワード", $password, time()+3600*24*365); }
if(strpos($ref_url,"login.php") === false){
header("場所:".$ref_url); }その他{
header("location:main_user.php"); }
}
}


3. ユーザーがクリックしてログアウトすると、ログイン状態をクリアします


//ログアウト


関数ログアウト(){
unset($_SESSION['user_info']); if(!empty($_COOKIE['ユーザー名']) || !empty($_COOKIE['パスワード'])){
setcookie("ユーザー名", null, time()-3600*24*365); setcookie("パスワード", null, time()-3600*24*365); }

}



両者の関係と違い:


連絡先:

どちらもセッションテクノロジーと呼ばれ、httpのステートレスな性質を解決するために使用されます。

SessionIDはCookieに保存されます。デフォルトでは、セッションは Cookie に依存します。ブラウザーで Cookie が完全に無効になっている場合、セッションは使用できません。ただし、セッションを有効に保つ別の方法があります。たとえば、URL を書き換える場合は、URL にセッション ID を入力し、フォームに隠しフィールドを追加し、セッション ID を隠しフィールドに保存してブラウザに送信します。

違い:

セッションの有効期間はsession_start()から始まり、ブラウザを閉じると終わります。

Cookieの有効期間を設定できます。デフォルトでは、ブラウザが Cookie を閉じると、Cookie は無効になり、サーバー側のセッション ファイルがまだ存在していても、セッション ID は失われます。

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

www.bkjia.com

tru​​e

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

技術記事

セッションの使用法: session_start(); $_SESSION 配列変数を定義します。 session_start() が使用される前は、php や html コードでの出力を含め、いかなる形式の出力も行うことはできません。 $_SESSION 配列はありません...

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