Cookie的应用
向客户端计算机中设置Cookie
可以使用PHP内建setCookie()函数来建立一个Cookie。Cookie是HTTP标头的一部分,setCookie()函数必须在其他信息被输出到浏览器前调用,所以即使是空格或空行,都不要在调用setCookie()函数之前调用
使用PHP读取Cookie的资料内容
在PHP中使用全局数组$_COOKIE来获取Cookie的内容,并以Cookie的识别名称为索引值、内容值为元素,在设置Cookie的脚本中,第一次读取它的信息并不会生效,必须刷新或到下一个页面才能看到Cookie的值,因为Cookie要先被设置到客户端,再次访问时才能被发送回来,这时才能被获取。
<?php
#设置Cookie
setcookie("username","siqu",time()+24*60*60*7);
?>
<?php
#打印COOKIE
print_r($_COOKIE);
?>
数组形态的Cookie应用
在Cookie标识名称中指定数组下标的形式设置
<?php
#设置Cookie
setcookie("user[username]","siqu");
setcookie("user[password]",md5("12345"));
?>
<?php
foreach ($_COOKIE["user"] as $key => $value) {
echo $value."<br/>";
}
?>
#运行结果:
#siqu
#827ccb0eea8a706c4c34a16891f84e7b
?>
删除Cookie
- 使用setCookie()函数实现删除的动作,省略第二个参数,只指定第一个参数的名称,删除指定的Cookie
- 将setCookie()设置成为已过期动作
基于Cookie的用户登录模块
以下是index.php文件中的代码
<!DOCTYPE html>
<html>
<head>
<title>使用Cookie记录用户登录状态</title>
</head>
<body>
<form action="index.php?action=login" method="post">
用户:<input type="text" name="username"><br/>
密码:<input type="text" name="password"><br/>
<input type="submit" value="登录">
</form>
<?php
if($_GET["action"]=="login"){
echo $_POST["username"].$_POST["password"];
if($_POST["username"]=="siqu" and $_POST["password"]=="123"){
setCookie('username',"siqu",time()+60*60);
setCookie('password',"123",time()+60*60);
header("Location:login.php");
}else{
echo "用户名或者密码错误"."<br/>";
}
}
?>
</body>
</html>
以下是login.php的代码
<!DOCTYPE html>
<html>
<head>
<title>主页</title>
</head>
<body>
<form action="login.php?action=logout" method="post">
<input type="submit" name="sub" value="退出">
</form>
<?php
echo $_COOKIE["username"]."<br/>";
echo $_COOKIE["password"]."<br/>";
echo "ok";
if($_COOKIE["username"]=="siqu" and $_COOKIE["password"]=="123"){
echo "欢迎登陆".$_COOKIE["username"]."<br/>";
}else{
echo "你还没有登陆"."<br/>";
}
if($_GET["action"]="logout"){
setcookie("username");
setcookie("password");
}
?>
</body>
</html>
Session的应用
当然,在使用COOKIE时,会有各种各样的问题,比如,用户在用户端可以禁止使用COOKIE,这样COOKIE就无法发挥作用,因此,出现了Session,Session会将相应的信息存储在服务器端,而不是用户端,使用者无法停止Session的使用。
配置Session
- Session的声明与使用
使用session_start函数,用于初始化session,返回值均为True,主要有两个作用,一是开始一个会话,二是返回已经存在的会话
- 注册一个会话变量和读取session
注册和读取session都必须使用全局数组$_SESSION来完成,当然,在这之前,必须要启动session。session文件的路径由php.ini中的session.save_path属性来决定
<?php
#启动session
session_start();
#设置一个session
$_SESSION["name"]="siqu";
#读取session
echo $_SESSION["name"];
// 运行结果:
// siqu
?>
- 注销变量与销毁session
使用这个函数删除session,并不会删除服务器中session的变量,也不会删除客户端中存储session id的Cookie,因此,我们需要删除session变量和删除cookie中session的id
<?php
#启动session
session_start();
#设置一个session
$_SESSION["name"]="siqu";
echo $_SESSION["name"]."<br/>";
#第一步删除,所有session变量,也可使用unset()删除单个变量
$_SESSION=array();
#第二步删除,删除存储session id的cookie,使用session_name()获取session的id
setcookie(session_name());
echo $_SESSION["name"]."空";
// siqu
// 空
?>
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容