php练习(SESSION、cookie、表单、多页面)

这篇博客介绍了PHP中SESSION、Cookie的使用,以及如何构建一个登录系统。通过checkUser.php验证用户,成功后使用SESSION保存用户名,重定向至messages.php。sendMessage.php处理留言,检查SESSION是否存在。logout.php用于注销SESSION和Cookie。同时,探讨了登录表单在2分钟内自动填充的实现,以及防止未登录用户直接访问的策略。
摘要由CSDN通过智能技术生成

练习内容:

  1. 创建一个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秒后跳转……’);

  1. 在message.php页面中,欢迎处,显示出登录的用户名。

在需要显示用户名的地方输出$_SESSION数组中的用户名的值。

  1. 创建一个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. 实现非登录用户不得通过网址访问功能。

这个功能的作用是不登录不能访问其他网页,若是直接输入网址方式访问,则提示并跳转至登录页面,登录后跳转至请求页面。

(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"];?>" /<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值