一;什么是SESSION;
将用户会话信息保存在服务器端使用session
1. session保存到服务器端,目录在php.ini文件中
2. session的创建,读取,删除都是用超全局变量$_SESSION
3. 使用session之前,必须用session_start()开启会话
4. 每个用户会被分配一个唯一的session_id,访问服务器会带上这个参数
5. php默认session是基于cookie的,所以session_id存在cookie中
6. session是一个32位的字符串,默认生存周期为1440秒,24分钟,这个数据可修改
session_status(); 未启用返回1,已启用返回2,可用它来检测session启用状态
session_name(); 查看session_id的名字:PHPSESSID
所以可以通过检查客户端是否存在PHPSESSID这个cookie变量来检测是否存在 session
SESSION的清除
清除全部session
unset($_SESSION);
用清除cookie的方法来清除
setcookie(session_name(), '',time()-10000);
用专用函数来清除
session_destroy();
二;以下的PHP文档中的代表是用来演示session的用法;验证用户登录信息;如果验证通过则表示登录成功将用户的信息写入session中保存;
<?php
//导入头部
require 'header.php';
if($_SERVER['REQUEST_METHOD']=='POST'){
//验证用户名和密码
if(empty($_POST['name'])){
echo '<script>alert("用户名不能为空")</script>';
}else{
$name=htmlspecialchars(trim($_POST['name']));
}
if(empty($_POST['password'])){
echo '<script>alert("密码不能为空")</script>';
}else{
$password=htmlspecialchars(trim($_POST['password']));
}
if($name && $password){
//生成pdo对象连接数据库
try{
$pdo=new PDO('mysql:host=localhost;dbname=demo;charset=utf8','root','root');
//贮备好pdo 预处理的查询语句
$sql="SELECT `name`,`password` FROM `user1` WHERE `name`=:name AND `password`=sha1(:password)";
//生成pdo预处理对象使用的是pdo对象的prepare方法
$pdoStmt=$pdo->prepare($sql);
//参数绑定使用的是pdoStament对象的bindParam()方法,第一个参数是占位符名称第二个参数一定要是一个变量
$pdoStmt->bindParam(':name',$name,PDO::PARAM_STR);
$pdoStmt->bindParam(':password',$password,PDO::PARAM_STR);
//执行;使用的是pdoStament中的execute()方法;成功返回true 失败返回false
$res=$pdoStmt->execute();
if(true==$res){
if($pdoStmt->rowCount()==1){//如果查询用户表中的用户信息为一条则表示登录成功
//写入session;
session_start();//开启session;
$_SESSION['name']=$name;
$_SESSION['password']=$password;
//写入session之后登录成功用户跳转至admin.php页面;
echo '<script>alert("登录成功");location.href="admin.php"</script>';
}else{
echo '<script>alert("用户名和密码不正确请从新输入")</script>';
}
}else{
print_r($pdoStmt->errorInfo());
}
}catch(PDOException $e){
$e->getMessage();
die();
}
}else{
echo '<script>alert("没有输入用户名和密码,请检查")</script>';
}
}
//ppppppp\peizhibao\phpstudy\tmp\tmp session 路径
?>
<div class="container">
<div class="row">
<div class="col-md-12">
<h3 class="text-center">用户登录</h3>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" class="form-horizontal">
<div class="form-group">
<label for="name" class="col-sm-2 control-label">用户名:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="name" placeholder="userName" name="name" value="<?php echo (isset($_POST['name']))?$_POST['name']:''?>">
</div>
</div>
<div class="form-group">
<label for="password" class="col-sm-2 control-label">密码:</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="password" placeholder="PassWord" name="password" value="<?php echo (isset($_POST['name']))?$_POST['name']:''?>">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10 text-center">
<button type="submit" class="btn btn-primary btn-block">注册</button>
</div>
</div>
</form>
</div>
</div>
</div>三;下面是admin.php文档中的代码;如果用户登录成功并且用户名以及密码都写入了session 那么久显示admin.php中的信息,否则表示用户没有登录跳转至登录页面进行登录
<?php
//导入头部
require 'header.php';
echo '<h2>欢迎来到PHP中文网管理后台</h2>';
session_start();//开启session
if(isset($_SESSION['name'])){
echo '<p style="color:green">欢迎管理员<span style="color:red">'.$_SESSION['name'].' </span></p>';
}else{
echo '<script>alert("请先登录");location.href="login_session.php"</script>';
}
//phpinfo();
?>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号