Cookies de contrôle de session PHP en PHP
Dans cette section, nous découvrirons les cookies à travers un exemple dans lequel un utilisateur n'a pas besoin de ressaisir son nom d'utilisateur et son mot de passe après s'être connecté au site Web pour la première fois.
Tout d'abord, permettez-moi de vous présenter comment définir les cookies en php.
php fournit une fonction qui nous permet de définir des cookies. Cette fonction est :
bool setcookie ( string $名字 [, string $值] [, int $过期时间 = 0] [, string $路径] [, string $域名] [, bool $安全 = false] [, bool $http只读 = false] );
Description du paramètre
$Name Required. Spécifie le nom du cookie.
$value Facultatif. Spécifie la valeur du cookie.
$La période de validité est facultative. Spécifie la durée de validité du cookie.
$Chemin Facultatif. Spécifie le chemin du serveur pour les cookies.
$Nom de domaine Facultatif. Spécifie le nom de domaine du cookie.
$Sécurité Facultatif. Spécifie si les cookies sont transmis via une connexion HTTPS sécurisée.
$http安Read est facultatif. Si c'est vrai, alors js ne peut pas lire et modifier le cookie, ce qui augmente la sécurité.
De manière générale, nous n'utilisons pas autant de paramètres que ci-dessus. Pour cette fonction, nous l'utilisons généralement comme ceci : setcookie (nom du cookie, valeur du cookie, période de validité du cookie) ; >Oui, seulement 3. De cette façon, nous pouvons lire le cookie via $_COOKIE['name'] côté serveur.
Voici un exemple :
Nous nommerons le fichier : cookie.php.
Simulons l'exemple le plus courant que nous voyons sur Internet : le processus de saisie d'un nom d'utilisateur et d'un mot de passe et de connexion réussie.
Créons une base de données de connexion, qui comporte une table user et deux champs : nom d'utilisateur et mot de passe.
<?php //第一次登陆的时候,通过用户输入的信息来确认用户 if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) { $userName = $_POST['username']; $password = $_POST['password']; //从db获取用户信息 //PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码 $conn = mysqli_connect('localhost','root','root'); mysqli_select_db($conn,'test'); $sql = "select * from user where `username` = '$userName' "; $res = mysqli_query($conn,$sql); $row = mysqli_fetch_assoc($res); if ($row['password'] == $password) { //密码验证通过,设置cookies,把用户名和密码保存在客户端 setcookie('username',$userName,time()+60*60*24*30);//设置时效一个月,一个月后这个cookie失效 setcookie('password',$password,time()+60*60*24*30); //最后跳转到登录后的欢迎页面 header('Location: welcome.php' . "?username=$userName"); } } //再次访问的时候通过cookie来识别用户 if ( ($_COOKIE['username'] != null) && ($_COOKIE['password'] != null) ) { $userName = $_COOKIE['username']; $password = $_COOKIE['password']; //从db获取用户信息 //PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码 $conn = mysqli_connect('localhost','root','root','test'); $res = mysqli_query($conn,"select * from user where `username` = '$userName' "); $row = mysqli_fetch_assoc($res); if ($row['password'] == $password) { //验证通过后跳转到登录后的欢迎页面 header('Location: welcome.php' . "?username=$userName"); } } ?> <html> <head> </head> <body> <form action="" method="POST"> <div> 用户名:<input type="text" name="username" /> 密 码:<input type="text" name="password" /> <input type="submit" value="登录"> </div> </form> </body> </html>
Le code bienvenue.php qui passe à
<?php $user = $_GET['username']; ?> <html> <head> </head> <body> welcome,<?php echo $user;?> </body> </html>
De cette façon, lorsque je visite cookie.php pour la première fois, je dois saisir le nom d'utilisateur et le mot de passe, et après avoir entré ça, je saute pour accueillir .php. Ensuite, j'ai fermé le navigateur et ouvert à nouveau cookie.php. Cette fois, on ne m'a pas demandé de saisir les informations utilisateur, mais je suis passé directement à Welcome.php, car les informations sur les cookies que nous avions enregistrées auparavant étaient automatiquement envoyées au serveur par le navigateur, et le Le serveur l'a fait Après le traitement, nous sautons directement sur Welcome.php. Le serveur nous connaît ! Sachant que je suis l'utilisateur qui s'est connecté auparavant, nous utilisons la technologie des cookies pour maintenir l'état du protocole HTTP sans état.
Suivez ceci et je pense que vous pourrez utiliser des cookies.
Rien que ! ! ! seulement! ! ! seulement! ! ! Je dois dire des choses importantes à trois reprises. Nous ne mettons généralement pas de noms d'utilisateur et de mots de passe dans les cookies car cela n'est pas sûr et peut facilement divulguer vos propres informations. Veuillez ne pas mettre d'informations importantes dans les cookies. Le nôtre n’est qu’un exemple d’apprentissage des cookies.