ホームページ > バックエンド開発 > PHPチュートリアル > PHP Cookie メソッドの学習メモの共有_PHP チュートリアル

PHP Cookie メソッドの学習メモの共有_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:50:18
オリジナル
776 人が閲覧しました

php の Cookie は他のプログラムと何ら変わりません。Cookie は、ユーザーのログインやパスワードの記憶など、セキュリティ要件の低い一部のアプリケーションでよく使用されます。 phpクッキーの勉強メモ。

PHP setcookie() 関数は、HTTP Cookie をクライアントに送信します。 Cookie は、サーバーによってブラウザに送信される変数です。 Cookie は通常、サーバーがユーザーのコンピュータに埋め込む小さなテキスト ファイルです。この Cookie は、コンピュータがブラウザを通じてページを要求するたびに送信されます。 Cookie の名前は、同じ名前の変数として指定されます。たとえば、送信される Cookie の名前が「name」の場合、Cookie の値を含む $user という名前の変数が自動的に作成されます。

Cookie は、他の出力が送信される前に割り当てる必要があります。この関数は、成功した場合は true を返し、そうでない場合は false を返します。

1 setcookie(名前、値、有効期限、パス、ドメイン、安全)
•名前は必須です。クッキーの名前を指定します。
•値は必須です。 Cookieの値を指定します。
•expire オプション。 Cookieの有効期間を指定します。
•パスはオプションです。 Cookie のサーバー パスを指定します。
•ドメインはオプションです。 Cookieのドメイン名を指定します。
•secure オプション。 Cookie が安全な HTTPS 接続を介して送信されるかどうかを指定します。
「user」という名前の Cookie の値には、$HTTP_COOKIE_VARS["user"] または $_COOKIE["user"] を介してアクセスできます。 Cookie を送信すると、Cookie の値は自動的に URL エンコードされます。 URL デコードは受信時に行われます。これが必要ない場合は、代わりに setrawcookie() を使用できます。

例、PHPの設定とCookieの取得

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

setcookie('mycookie','value');

//関数プロトタイプ: int setcookie(文字列名, 文字列値, int期限切れ, 文字列パス, 文字列ドメイン, int secure)
エコー($mycookie);
echo($HTTP_COOKIE_VARS['mycookie']);
echo($_COOKIE['mycookie']);

Cookieを削除する

(1) name パラメーターのみを指定して setcookie() を呼び出します。
(2) 有効期限を time() または time-1;

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

setcookie('mycookie'); または setcookie('mycookie','') または setcookie("mycookie",false); //setcookie('mycookie','',time()-3600);
echo($HTTP_COOKIE_VARS['mycookie']);
print_r($_COOKIE);

推奨される削除方法:

コードは次のとおりですコードをコピー
setcookie('mycookie','',time()-3600);

PHP は非常に便利な関数 mktime() を提供します。

表現したい時、分、秒、月、日付、年を順番に mktime() に渡すだけです
mktime() は、1970 年 1 月 1 日からの合計秒数を返します。
Y2K 問題をシミュレーションする必要がある場合:

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

Cookieの有効期限を取得する方法

$y2k = mktime(0,0,0,1,1,2000);

setcookie('名前','値',$y2k);
setcookie('名前', '値', 時間+3600);
setcookie('名前', '値', $y2k, '~/myhome', '.domain.com');

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

$expire = time() + 86400 // 有効期間を 24 時間に設定します
setcookie ("var_name", "var_value", $expire); // var_name という名前の Cookie を設定し、有効期間を設定します
setcookie ("var_name_expire", $expire, $expire); // 次に、var_name の有効期限を知ることができるように、有効期限を Cookie に設定します

注:

Cookie を送信すると、Cookie の値は自動的に URL エンコードされます。 URL デコードは受信時に行われます。
これが必要ない場合は、代わりに setrawcookie() を使用できます。


例、ユーザーのログイン情報を保存するCookie


1. データベース接続設定ページ: connectvars.php

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

//データベースの場所
定義('DB_HOST', 'ローカルホスト');
//ユーザー名
定義('DB_USER', 'root');
//パスワード
定義('DB_PASSWORD', '19900101');
//データベース名
定義('DB_NAME','テスト') ;
?>


2. ログインページ: logIn.php

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

//データベースへの接続に関する関連情報を挿入します
require_once 'connectvars.php';

$error_msg = "";
// ユーザーが Cookie を設定しているかどうかを判断します。 $_COOKIE['user_id'] が設定されていない場合は、次のコードを実行します
if(!isset($_COOKIE['user_id'])){
If(isset($_POST['submit'])){//ユーザーがログインフォームを送信したかどうかを判断し、送信した場合は次のコードを実行します
$dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
$user_username = mysqli_real_escape_string($dbc,trim($_POST['username']));
$user_password = mysqli_real_escape_string($dbc,trim($_POST['password']));

if(!empty($user_username)&&!empty($user_password)){
//MySql の SHA() 関数は、文字列の一方向暗号化を実行するために使用されます
$query = "SELECT user_id, username FROM missmatch_user WHERE username = '$user_username' AND "."password = SHA('$user_password')";
// ユーザー名とパスワードを使用してクエリを実行します
$data = mysqli_query($dbc,$query);
// レコードが 1 つだけ見つかった場合は、COOKIE を設定し、同時にページをリダイレクトします
If(mysqli_num_rows($data)==1){
$row = mysqli_fetch_array($data);
setcookie('user_id',$row['user_id']);
setcookie('ユーザー名',$row['ユーザー名']);
$home_url = 'loged.php';
header('場所: '.$home_url);
}else{// 見つかったレコードが間違っている場合は、エラー メッセージを設定します
$error_msg = '申し訳ありませんが、ログインするには有効なユーザー名とパスワードを入力する必要があります。';
}
}その他{
$error_msg = '申し訳ありませんが、ログインするには有効なユーザー名とパスワードを入力する必要があります。';
}
}
}else{//ユーザーがすでにログインしている場合は、ログインしたページに直接ジャンプします
$home_url = 'loged.php';
header('場所: '.$home_url);
}
?>

<頭>
不一致 - ログイン



                                                                                                          & Lt;!-$ __Cookie ['user_id'] を使用すると、ユーザーがログインに失敗した場合、ログイン フォームが表示され、ユーザー名とパスワードを入力します-& gt; If(空($_COOKIE['user_id'])){
echo '

'.$error_msg.'

';
?>


                                                                                                                                                                                  &lt; legend&gt; login&lt;/legend&gt;


               
                                value="" />
               

               
               
               
           

           
       
                }
        ?>
   

3、ログイン页面:loged.php

代码如下 复制幣
//已登录页面,显示登录用户名
if(isset($_COOKIE['ユーザー名'])){
    echo 'あなたは '.$_COOKIE['username'] としてログインしています。'
';
    //点击“ログアウト”,则转到logOut.php页面行cookieの注销
    echo 'ログアウト('.$_COOKIE['ユーザー名'].')';
}
/**ログインページでは、$_COOKIE['username']、
などのユーザーのCookieを使用できます。 * $_COOKIE['user_id'] はデータベースにクエリを実行し、さまざまな操作を行うことができます*/
?>

4、注销cookie页面:logOut.php(注销後重定向到lonIn.php)

代码如下 复制幣
/**Cookieのログアウトページ*/
if(isset($_COOKIE['user_id'])){
    // 各 Cookie の到達時間は、システムによって除外されるように、終了する特定の時間に設定されます。時間は秒単位です
    setcookie('user_id','',time()-3600);
    setcookie('ユーザー名','',time()-3600);
}
//location首部使用浏览器重定向向一页面
$home_url = 'logIn.php';
header('場所:'.$home_url);
?>

最後に皆さんが注目すべき3つのポイントをまとめます

1: Cookieを設定する際の注意事項

同じページ上の Cookie の設定は、実際には後ろから前の順に行われます。最初に Cookie を削除してから Cookie を書き込む場合は、最初に write ステートメントを記述し、次に delete ステートメントを記述する必要があります。そうしないとエラーになります。発生しました。

2: setcookie の例

単純: setcookie("mycookie","value_of_mycookie"); 有効期限付き: setcookie("withExpire","Expire_in_1_hour",time()+3600); すべてが含まれています: setcookie("FullCookie","Full_cookie_value",time+3600,"/forum","www.bKjia.c0m",1);

3: クッキーのいくつかの特徴

Cookie はパス指向であり、デフォルトのパス属性を使用すると、WEB サーバー ページは現在のパスをブラウザーに自動的に渡します。

サーバーは設定されたパスを使用します。 あるディレクトリ ページに設定された Cookie は、別のディレクトリ ページでは見ることができません。


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

tru​​ehttp://www.bkjia.com/PHPjc/632661.html技術記事 PHP の Cookie は、他のプログラムと何ら変わりません。Cookie は、ユーザーのログインやパスワードの記憶など、セキュリティ要件が低いアプリケーションでよく使用されます。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート