🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
这节我们通过一个用户首次登陆网站后,再次访问不需要重复输入用户名和密码的例子来学习Cookie。 首先介绍一下php中设置cookie的方法。 php中提供了一个函数来让我们设置cookie,这个函数是: ~~~ bool setcookie ( string $名字 , [ string $值] , [ int $过期时间 = 0] , [ string $路径] , [ string $域名] , [ bool $安全 = false] , [ bool $http只读 = false] ); ~~~ 参数 描述 $名字 必需。规定 cookie 的名称。 $值 可选。规定 cookie 的值。 $有效期 可选。规定 cookie 的有效期。 $路径 可选。规定 cookie 的服务器路径。 $域名 可选。规定 cookie 的域名。 $安全 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。 $http安读 可选。如果true,那么js就无法读取改cookie,增加安全性。 一般来说,我们其实用不到上面那么多参数,对于这个函数,我们一般这么用: setcookie(cookie名,cookie值,cookie有效期); 没错,就那么3个。如此一来,我们就可以在服务端通过$_COOKIE['name'] 来读取cookie了。 以下是示例: 我们将文件名命名为:cookie.php。 我们来模拟我们在互联网上见到最常见的例子:输入用户名和密码,登陆成功的过程。 我们来建一个数据库login,其中有表user,有username和passwd这两个字段。 ~~~ <?php //第一次登陆的时候,通过用户输入的信息来确认用户 if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) { $userName = $_POST['username']; $password = $_POST['password']; //从db获取用户信息 //PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码 $conn = mysqli_connect('host','user','passwd'); mysqli_select_db($conn,'login'); $sql = "select * from user where `username` = '$userName' "; $res = mysqli_query($conn,$sql); $row = mysqli_fetch_assoc($res); if ($row['passwd'] == $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('host','user','passwd','login'); $res = mysqli_query($conn,"select * from user where `username` = '$userName' "); $row = mysqli_fetch_assoc($res); if ($row['passwd'] == $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> ~~~ 跳转到的welcome.php代码 ~~~ <?php $user = $_GET['username']; ?> <html> <head> </head> <body> welcome,<?php echo $user;?> </body> </html> ~~~ 这样,当我第一次访问cookie.php的时候,我需要输入用户名和密码,输入完毕后跳转到了welcome.php。然后我关闭浏览器,再次打开cookie.php,这次没有要求我输入用户信息,而是直接跳转到了welcome.php,因为之前我们存的cookie信息被浏览器自动发送到了服务端,服务端做完处理直接跳转到了welcome.php,服务器认识我们了!知道我是之前那个登陆过的用户,这样我们就通过cookie技术让无状态的HTTP协议保持了状态。 照着这个做一遍,我相信你会用cookie了。 只不过!!!只不过!!!只不过!!!重要的事要说3遍,我们一般是不会把用户名和密码放到cookie中的,因为这并不安全,容易泄露自己的信息,请不要把重要的信息放到cookie中。我们这个只是一个学习cookie的例子。