php cookiesの使い方の勉強メモを共有_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:25:27
オリジナル
716 人が閲覧しました

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)
echo($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 問題をシミュレーションする必要がある場合:

コードをコピーします コードは次のとおりです:
$y2k = mktime(0,0,0,1,1,2000);
setcookie('name','value',$y2k) ;
setcookie( 'name', 'value', time+3600);
setcookie('name', 'value', $y2k, '~/myhome', '.domain.com');

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

コードをコピー コードは次のとおりです:
$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

コードをコピーします コードは次のとおりです:
//データベースの場所
define('DB_HOST', 'localhost');
//ユーザー名
define( 'DB_USER', 'root ');
//パスワード
define('DB_PASSWORD', '19900101');
//データベース名
define('DB_NAME','test') ;
?>

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 mismatch_user WHERE username = '$user_username' AND "."password = SHA('$user_password')";
//用用户名和密码进行查询
$data = mysqli_query($dbc,$query);
//若查到的记录正好为一条,则设置COOKIE,同时进行页面重定向
if(mysqli_num_rows($data)==1){
$row = mysqli_fetch_array($data);
setcookie('user_id',$row['user_id']);
setcookie('username',$row['username']);
$home_url = 'loged.php';
header('Location: '.$home_url);
}else{//若查到的记录不对,则设置错误信息
$error_msg = 'Sorry, you must enter a valid username and password to log in.';
}
}else{
$error_msg = 'Sorry, you must enter a valid username and password to log in.';
}
}
}else{//如果用户已经登录,则直接跳转到已经登录页面
$home_url = 'loged.php';
header('Location: '.$home_url);
}
?>

   
        Mismatch - Log In
       
   
   
       

Msimatch - Log In


       
        if(empty($_COOKIE['user_id'])){
echo '

'.$error_msg.'

';
        ?>
       
       

           

                Log In️ id = "ユーザー名" name = "ユーザー名"

value = "& lt;? Php if (! Empty ($ user_username)) echo $ user_username;? & gt;
& lt; ;「パスワード」< lt;/label>
3. ログインページ: logged.php




コードをコピーします

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


//ログインしたユーザー名を表示するログインページ
if(isset($_COOKIE['username'])){
echo 'You are Logged as '.$_COOKIE['username'].'
';
//「ログアウト」をクリックして logOut.php ページに移動し、Cookie をログアウトします

echo '< ;a href="logOut .php"> ログアウト('.$_COOKIE['ユーザー名'].')';}

/**ログインしたページでは、$_COOKIE['username']、

* $_COOKIE['user_id'] などのユーザーの Cookie を使用してデータベースにクエリを実行したり、さまざまな操作を行うことができます。*/

?>

4. ログアウト cookie ページ: logOut.php (ログアウト後、lonIn.php にリダイレクト)
コードをコピーします

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


/**Cookieのログアウトページ* /
if (isset($_COOKIE['user_id'])){
//システムによって削除できるように、各 Cookie の有効期限を過去の時刻に設定します。時刻は秒単位です
setcookie( 'user_id',' ',time()-3600);
setcookie('username','',time()-3600);
}
//location ヘッダーにより、ブラウザは別のページにリダイレクトされます

$home_url = 'logIn.php ';

header('Location:'.$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.jb51.net",1);

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

Cookie はパス指向です。デフォルトのパス属性では、WEB サーバー ページは自動的に現在のパスをブラウザーに渡します。
1 つのディレクトリ ページに設定された Cookie が強制的に使用されます。別のディレクトリ ページ内は表示されません。

http://www.bkjia.com/PHPjc/825079.htmlwww.bkjia.com

tru​​e

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

技術記事

PHP の setcookie() 関数は、HTTP Cookie をクライアントに送信します。 Cookie は、サーバーによってブラウザに送信される変数です。 Cookie は通常、サーバーがユーザーのコンピュータに埋め込む小さなテキスト ファイルです...

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!