批改状态:合格
老师批语:session_id是服务端生成的,不是客户端!一定要多加练习~!
cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
创建cookie可以使用setcookie()函数或者header()函数,函数需要在<html>标签之前。
setcookie():其语法是:setcookie(name, value, expire, path, domain),其中name和value是必选,其他参数根据情况可选
<?php// 示例:设置一个cookie,1小时后过期setcookie("user","Alice",time()+60*60);print_r($_COOKIE);

header()
<?php// 示例:设置一个cookieheader('Set-cookie:username = Jack');print_r($_COOKIE);


<?php// 方式一:查看单个echo $_COOKIE['user'],'<br>';// 方式二:查看所有print_r($_COOKIE);

<?php// 将cookie的过期时间设置为过去setcookie("user","Alice",time()-3600);print_r($_COOKIE);

<?php// 更新cookiesetcookie("username","Lisa");// 设置cookie后第一次刷新浏览器,cookie在response headers这里,这表示服务器告知浏览器有一个cookie需要你来保存一下// 第二次刷新后,cookie就会存在于request headers这里了// 更新cookie时,参数要一一对应setcookie("username","Lisa666");


<?php// setrawcookie():防止存放cookie时,浏览器对它进行URL编码// 先设置好两个示例cookie,开发工具中查看setcookie("user","小明");setcookie("email","666666@qq.com");// 然后使用setrawcookie()对cookie值更新setrawcookie("user","小王");setrawcookie("email","888888@qq.com");


PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。
Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。
在把用户信息存储到 PHP session 中之前,必须先启动会话,必须位于<html>标签之前。
先找到php.ini,设置 session.auto_start = 0

然后,开启会话:
<?php// 开启会话session_start();
<?php// 开启会话session_start();// 设置session$_SESSION["user"] = "Alice";$_SESSION["email"] = "123456@qq.com";

<?php// 开启会话session_start();// 设置session// $_SESSION["user"] = "Alice";// $_SESSION["email"] = "123456@qq.com";// 取回sessionecho $_SESSION['user'],'<br>';echo $_SESSION['email'];

<?php// 开启会话session_start();// 设置session// $_SESSION["user"] = "Alice";// $_SESSION["email"] = "123456@qq.com";// 取回session// echo $_SESSION['user'],'<br>';// echo $_SESSION['email'];// 销毁session// 方式一:销毁单个// unset($_SESSION['user']);// echo $_SESSION['user'],'<br>';// echo $_SESSION['email'];// 方式二:销毁所有session_destroy();echo $_SESSION['user'],'<br>';echo $_SESSION['email'];


<!-- 第二步:获取表单中的用户名和密码 --><?php// 表单提交后拿到提交过来的值$posts = $_POST;// 清除两侧空白字符foreach ( $posts as $key => $value ) {$posts[$key] = trim($value);}// 接收数据(用户名和密码)$username = $posts['username'];$password = $posts['password'];// 自定义一个函数,用于清除页面的cookie信息,function cleCookie () {setcookie("username"," ",time()-3600);setcookie("password"," ",time()-3600);setcookie("isLogin"," ",time()-3600);}// 判断用户是否点击了登录按钮if ($posts['submit']) { // 如果submit存在,表示点击了登录if ( $username == 'longlong' and $password == '123456' ) {cleCookie();setcookie("username",$username,time()+7*24*60*60);setcookie("password",$password,time()+7*24*60*60);setcookie("isLogin","1",time()+7*24*60*60);// 将正确的cookie储存好以后跳转到主页header("Location:4.index.php");} else {exit('用户名或密码有误,请重新登录');}}// 当退出账户时if ($_GET['action' == 'out']) {cleCookie();}?><!-- 第一步,写好登录页面 --><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>用户登录</title></head><body><h2 style="text-align: center;">用户登录</h2><!-- action为空,表示提交到当前页面 --><form action="" method="POST" style="text-align: center;"><div><label for="username">用户名:</label><input type="text" name="username" id="username"></div><div><label for="password">密 码:</label><input type="password" name="password" id="password"></div><div style="margin-top: 5px;"><input type="submit" name="submit" value="登录" style="width: 80px;"></div></form></body></html>

<!-- 检查用户是否登录成功 --><?phpif (!isset($_COOKIE['isLogin']) or $_COOKIE['isLogin'] != "1") {exit('<script>alert("请您先登录再访问");location.href="3.login.php";</script>');}?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>龙大商城</title></head><body><h2>龙大商城主页</h2><?php echo '欢迎' . $_COOKIE['username'] . '的到来!' ?><a href="3.login.php?action=out" style="text-decoration: none;color: white;background: gray;">退出账户</a></body></html>




这次作业,感觉懵懵懂懂的写完了,貌似效果也出来了,但是全程都是用的cookie在操作,清除cookie,重新设置cookie,设置cookie过期时间,也不知道到底是我设置的cookie起了作用,还是浏览器在帮我自动保存,有点懵,只不过现在去登录,已经自动保存了用户名和密码。另外session没有用到,我在想是不是应该定义一个session变量,来控制cookie是否储存,后面我再敲敲代码试试。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号