PHP Cookie和Session
计应134(实验班) 郑寿奎
Cookie
Cookie是一种在客户浏览器端存储数据并以此来跟踪和识别用户的机制
注意:
setcookie()函数定义一个和其余HTTP头一起发送的Cookie,它必须最先输出,在任何脚本输出之前包括<html>和<head>标签。
如果在setcookie()函数之前有任何的输出,那么setcookie就会失败并返回false。因此本程序不能添加标题,否则程序出错。
一、创建Cookie
格式:setcookie("名字",'值',[过期时间,路径,有效域名,是否安全通过HTTPS(1或0)]) //[ ]里面的是可选项
例:
<?
setcookie("name",'abc');
setcookie("pass",'123',time+60); //有效时间为60秒
?>
注意:PHP区分大小写
二、读取Cookie
格式:$_COOKIE["名字"] //这里的名字与上面创建时的名字一样
例:
<?php
if(!isset($_COOKIE["name"])) //判断Cookie文件是否存在
{
echo "Cookie不存在";
}
else{
echo "name的值为:".$_COOKIE["name"]; //获取Cooike的值
}
?>
运行结果如下图:
三、删除Cookie
删除Cookie有二种方法:
1.在浏览器中手动删除Cookie
2.使用setcookie()函数删除Cookie
格式:setcookie("名字","",time()-1) //失效时间设置为当前时间减一秒,即马上过期。也可以直接设置为0
如果创建Cookie不设置失效时间,那么只有关闭浏览器,Cookie就会自动消失
Session
Session(会话)指有始有终的一系列动作/消息,用于保存值
启动会话→注册会话→使用会话→删除会话
一、启动
session_start(); //一开始就要启动
二、注册(赋值)
$_SESSION["名字"]=null; //先启动,在定义一个名字并赋值为空
三、使用
直接用 $_SESSION['名字'] 使用,要么赋值给别人,要么别人赋值
$变量=$_SESSION['名字'];
$_SESSION['名字']=值;
四、删除
删除单个
unset($_SESSION['名字']);
删除多个
$_SESSION=array();
删除当前
session_destroy();
五、Session设置时间
1) session_set_cookie_params()
<?php
$time=1*60; //设置时间
session_set_cookie_params($time);
session_start(); //启动Session
$_SESSION["name"]='abc';
?>
注意:session_set_cookie_params()必须在session_start()之前调用
2) setcookie()
<?php
session_start();
$time=1*60;
setcookie(session_name(),session_id(),time()+$time);
$_SESSION['name']='abc';
?>
注意:session_name是Session的名称,session_id是判断判断客户端用户的标识
六、验证登录
用Session验证登录
1)登录界面 index.php
<script language="javascript">
function check(form){
if(form.name.value==""){alert("请输入用户名");return false;}
if(form.pass.value==""){alert("请输入密码"); return false;}
form.submit();
}
</script>
<form name="a" method="post" action="shenzhi.php">
<input type="text" name="name" />
<input type="password" name="pass" />
<input type="submit" name="Submit" value="登录" onClick="return check(form);" />
<input type="reset" name="Reset" value="重置" />
</form>
运行结果如图:
如果用户名和密码没有输入就会出现提示框
2)把用户名和密码保存在Session里 shenzhi.php
<?php
session_start(); //启动
$_SESSION["name"]=$_POST['name']; // 保存
$_SESSION["paw"]=$_POST['pass'];
header("location:huoqu.php"); //自动跳转
?>
3)显示Session里的值 huoqu.php
<?php
session_start(); //启动
if(isset($_SESSION["name"])) {
echo "用户名为:".$_SESSION["name"]."<br>"; //显示值
echo "密码为:".$_SESSION["paw"]."<br>";
}
else{
echo "没有值";
}
?>
<a href='delect.php'>注销</a>
4)删除Session delect.php
<?php
session_start(); //启动
unset($_SESSION["admin"]); //删除
unset($_SESSION["paw"]);
header("location:index.php"); //自动跳转
?>
当输入用户名:admin和密码:123运行结果如下图: