php入门教程(八)使用cookie和session
2019-10-17 本文已影响0人
党云龙
cookie是存在客户端的,跟前端的使用方法几乎一样。
通过setcookie方法去设置,删除的话,只需要在里面传入time()-1或者0即可。
<?php
date_default_timezone_set("PRC"); //设置时区
if(!isset($_COOKIE['visittime'])){
setcookie("visittime",date("Y-m-d Y:i:s"));
echo "欢迎您的第一次光临!";
}else{
setcookie("visittime",date("Y-m-d Y:i:s"),time()+60);
//time() 获取当前时间的时间戳
//删除cookie只要设置time()-1或者0就可以了
echo "您上次访问网站的时间为:".$_COOKIE["visittime"];
echo "
";
}
echo "您的本次访问时间为:".date("Y-m-d Y:i:s");
?>
但是cookie有一份非常不好的地方就是,如果用户在本地,清除了浏览器缓存,那你设置的cookie就失效了。
所以还是推荐下面这种方法,把数据储存在服务器:使用session。
设置session示例:
发起登陆
登陆完成
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>登陆验证</title>
</head>
<body>
<?php
$username = $_POST["username"];
$password = $_POST["password"];
//查询数据库
$con = mysqli_connect("127.0.0.1:3306","root","dyl_mysql!07","phptest");//连接数据库服务
mysqli_query($con,"set names 'utf8'"); //把连接方式设置为utf-8
//查询账号密码 就是 查询有没有用户名和密码都相当的这一行
$sql = "select * from login where username='$username' and password='$password'";
$result = mysqli_query($con,$sql);
//注意这里必须把结果传入mysqli_num_rows方法中
$num_rows = mysqli_num_rows($result);
if($num_rows==1){
//开启session
session_start();
//先判断一下用户是不是已经登陆过了
if($_SESSION['username']=="dangyunlong"){
echo "您已经登陆!";
}else{
//如果没有登陆过,在存如session
//解开$result为数组形式
$rows = mysqli_fetch_array($result,MYSQLI_ASSOC);
//echo $rows['username'];
$_SESSION['username'] = $rows['username'];
echo "<script>alert('登陆成功!')</script>";
}
}else{
echo "<script>alert('用户名或者密码错误,登陆失败!');history.back();</script>";
exit();
}
?>
</body>
</html>
删除session
unset($_SESSION[$name])
当用户退出登陆的时候需要用到这个。
session能不能像cookie一样设置过期时间?
session和cookie不一样,session默认有效时间为24分钟。
我们可以通过很多方法来控制它的过期时间,你可以自己百度,入门教程就不在冗述了。