ホームページ >バックエンド開発 >PHPチュートリアル >php cookiesの使い方の勉強メモを共有_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の取得
//関数プロトタイプ: int setcookie(文字列名, 文字列値, int 有効期限, 文字列パス, 文字列ドメイン, int secure)
echo($mycookie);
echo($HTTP_COOKIE_VARS['mycookie']);
echo($ _COOKIE['mycookie']);
Cookieを削除する
(1) name パラメータのみを指定して setcookie() を呼び出します。
(2) 有効期限を time() または time-1 に設定します。
表現したい時、分、秒、月、日、年を順番に mktime() に渡すだけで、
mktime() は 1970 年 1 月 1 日からの合計秒数を返します。
Y2K 問題をシミュレーションする必要がある場合:
Cookie を送信すると、Cookie の値は自動的に URL エンコードされます。 URL デコードは受信時に行われます。
これが必要ない場合は、代わりに setrawcookie() を使用できます。
例、ユーザーのログイン情報を保存するCookie
1. データベース接続設定ページ: 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);
}
?>
'.$error_msg.'
';/**ログインしたページでは、$_COOKIE['username']、
* $_COOKIE['user_id'] などのユーザーの Cookie を使用してデータベースにクエリを実行したり、さまざまな操作を行うことができます。*/?>
header('Location:'.$home_url);
?>
http://www.bkjia.com/PHPjc/825079.htmlwww.bkjia.com
true
http://www.bkjia.com/PHPjc/825079.html
技術記事
PHP の setcookie() 関数は、HTTP Cookie をクライアントに送信します。 Cookie は、サーバーによってブラウザに送信される変数です。 Cookie は通常、サーバーがユーザーのコンピュータに埋め込む小さなテキスト ファイルです...