PHP での Cookie セッション制御
Cookie を使用して、サーバーから毎回呼び出すことなくクライアントにユーザー情報を記録します。これにより、Web ページの効率が向上し、サーバーへの負荷が軽減されます。
以下の例は、Cookie 呼び出しを使用したログイン インターフェイス操作をシミュレートしています。
インターフェイス表示 (美化されていません)
必要なファイル
index.php をルート ディレクトリに作成し、最初にテーブルを書き込みます図のようにフォーム出力
<html> <head> <title>用户登录</title> </head> <body> <form action="login.php" method="post"> <table align="center" border="1" width="300"> <caption><h1>用户登录</h1></caption> <tr> <th>用户名</th> <td><input type="text" name="name"></td> </tr> <tr> <th>密码</th> <td><input type="password" name="password"></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" name="sub" value="登录"> </td> </tr> </table> </body></html>
users テーブルを作成し、データを挿入します。ここでのデータ挿入情報には、ユーザー名、パスワード、権限が含まれます
。ルート ディレクトリに conn.inc を作成します。php はデータベース接続を保存するために使用されます
conn.inc.php
<?php $mysqli=new mysqli("localhost","root","XXXXX","sqldb");
<?php if(isset($_POST["sub"])){ include "conn.inc.php"; $sql="select id from users where name='{$_POST["name"]}' and password='".md5($_POST["password"])."'"; $result=$mysqli->query($sql); //保存数据 if($result->num_rows > 0){ $row=$result->fetch_assoc(); $time=time()*1800; setCookie("username", $_POST["name"],$time); setCookie("uid", $row["id"],$time); setCookie("isLogin",1); header("Location:index.php"); //跳转界面 } echo "用户名密码有误"; }?>
comm.php:
"isLogin" が返された場合は、ログイン成功後、index.php ページにジャンプします ログイン失敗した場合は、再度ログインに戻ります
<?php //判断:如果没登录自动跳转到登录页面 if(!$_COOKIE["isLogin"]){ header("Location:login.php"); }
最後に 2ページ目と3ページ目はindex.php
Logout<?php include "comm.php"; //判断是否登录成功 include "conn.inc.php"; echo "用户<b>".$_COOKIE["username"]."</b>你好!这是网站首页"; echo "你的权限如下:<br>"; $sql="select allow_1,allow_2,allow_3,allow_4 from users where id='{$_COOKIE["uid"]}'"; $result=$mysqli->query($sql); $user=$result->fetch_assoc(); if($user["allow_1"]){ echo "111111111111<br>"; } if($user["allow_2"]){ echo "222222222222<br>"; } if($user["allow_3"]){ echo "333333333333<br>"; } if($user["allow_4"]){ echo "444444444444<br>"; } ?> <a href="test.php">第二页</a><br> <a href="test2.php">第三页</a><br> <a href="logout.php">退出</a><br>logoutと同じように記述します。 php
ユーザー情報をログアウトする必要があります
<?php include "comm.php"; //判断是否登录成功 $username=$_COOKIE["username"]; //取出用户名 //注销 setCookie("username"); setCookie("uid"); setCookie("islogin"); echo $username."再见";?><br><a href="login.php">重新登录</a>
login.php:
<?php if(isset($_POST["sub"])){ include "conn.inc.php"; $sql="select id from users where name='{$_POST["name"]}' and password='".md5($_POST["password"])."'"; $result=$mysqli->query($sql); //保存数据 if($result->num_rows > 0){ $row=$result->fetch_assoc(); $time=time()*1800; setCookie("username", $_POST["name"],$time); setCookie("uid", $row["id"],$time); setCookie("isLogin",1); header("Location:index.php"); //跳转界面 } echo "用户名密码有误"; }?><html> <head> <title>用户登录</title> </head> <body> <form action="login.php" method="post"> <table align="center" border="1" width="300"> <caption><h1>用户登录</h1></caption> <tr> <th>用户名</th> <td><input type="text" name="name"></td> </tr> <tr> <th>密码</th> <td><input type="password" name="password"></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" name="sub" value="登录"> </td> </tr> </table> </body></html>