练习内容:
- 创建一个checkUser.php的页面来接收登录页面login.html提交的用户名和密码信息。如果用户名为“test”时,页面重定向至messages.php页面,并将用户名以SESSION的方式保存,如果用户名为其他值,则页面跳转回登录页面。
(1)表单提交方式为get和post时,获取信息时使用的数组不一样,分别为 G E T 和 _GET和 GET和_POST。
(2)使用session前必须在页面开始处调用session_start();方法,表明此页面中要使用session。
(3)跳转的方法有三种:
①header("location:message.php");
②echo "<meta http-equiv='refresh'content='1;url=message.php'>";
③echo "<script type='text/javascript'>";
echo"window.location.href='message.php';";
echo "</script>";
④3秒之后跳转
header(“refresh:3;url=login.html”);
print(‘用户名无效,请重新登录,3秒后跳转……’);
- 在message.php页面中,欢迎处,显示出登录的用户名。
在需要显示用户名的地方输出$_SESSION数组中的用户名的值。
- 创建一个sendMessage.php的页面来接收留言页面message.php的留言,并将留言显示出来。如果没有用户名的session,则直接跳回登录页面。
(1)页面中输出中文会乱码,可以在页面开始处设置编码。
header(“content-type:text/html;charset=utf-8”);
(2)如何判断页面是否有有户名的session?
if(isset($_SESSION[“uname”])){ }else{ }
(3)思考题:若留言为空要怎么处理?
4.创建一个logout.php页面来注销session。
(1)清除session
$_SESSION= array();//删除所有的session变量
session_destroy();//彻底销毁session
(2)跳转回message.php
5.使用cookie实现登录表单在2分钟内的自动填充。
(1) 在检查用户登录的页面checkuser.php中,保存用户名和密码至cookie,要求cookie有效时间为2分钟,密码要用md5加密存储。
保存cookie用setcookie()方法。
(2) 在登录页面中添加读取cookie的php代码,原来的网页名称login.html要改名为login.php,留言系统中所有跳转到登录页面的地址需要进行修改。
读取cookie用$_COOKIE[]数组。
(3) 在设置cookie时,存储了md5加密后的密码,在login.php页面中读取时也是加密后的密码,那checkuser.php调用User类中checkUser()方法时传进去的参数也是加密的,会不会有问题?怎么处理?(md5()加密是单向的,加密后无法还原成原数据)
(4) 注销功能中也要包括注销cookie。
注销cookie用setcookie()方法。
例如:setcookie(“user”, “”, time()-3600);
- 实现非登录用户不得通过网址访问功能。
这个功能的作用是不登录不能访问其他网页,若是直接输入网址方式访问,则提示并跳转至登录页面,登录后跳转至请求页面。
(1)增加一个函数checkLogin(),这个函数的功能是检查sesession中是否有用户记录,若没有再检查cookie中是否有用户和密码记录,如果有把用户和密码进行检验看是否是正确的,如果是正确的,将用户名记录至session(),如果session和cookie中都没有记录或者cookie中的记录不正确,则记录提交地址并跳转至登录窗口。
1.login.php
<!!DOCTYPE html >
<html lang="zh-CN">
<head>
<meta charset="utf-8">
</head>
<body>
<form name="LoginForm" method="post" action="checkUser.php">
<p>
<label for="username" class="label">用户名:</label>
<input id="username" name="username" type="text" class="input" value="<?php
if(isset($_COOKIE[" user"])) echo
$_COOKIE["user"];?>" /<