PHP会话维持是如何实现的(session,cookie)

会话维持

什么是会话?一位用户从访问网站的第一个网页开始直到离开网站,就可以称为一个会话。

Cookie

存储在浏览器客户端,当用户访问网站时,Cookie随着请求一起发给服务器。Cookie一般用于在客户端存储数据以及追踪识别用户。

  1. 创建Cookie
setcookie($name,$value,$expire=0[,$path][,$domain])
  • $name:Cookie变量名
  • $value:Cookie变量值
  • $expire:Cookie过期时间,通常用time()+秒数来设置过期时间
  • $path:设置Cookie在服务器的哪些路径可以用,默认只对当前目录有效
  • $domain:设置域
  1. 读取Cookie内容
    在PHP中,全局数组$_Cookie中保存了Cookie的变量
例如:echo $Cookie['username']
  1. 删除Cookie
    一般有两种删除方法,一是通过设置Cookie的过期时间为当前时间-1秒,二是用户手动在浏览器删除Cookie
测试代码:

if($_COOKIE['isloged']=="True" and $_COOKIE['username']<>null){//首先判断有没有已经成功登陆的标记
    echo"

欢迎

"
; print_r($_COOKIE); exit;//如果已经登陆过,那么结束脚本,不再执行下面代码 } if($_COOKIE['username']==0){//判断是否有用户名的值 echo"未登陆"; } ?> <!-- 登陆部分, --> <title>表单登陆</title> <meta charset="utf-8"> <table border=0> <tr > <td align=right> 请输入用户名:<br> 请输入密码:<br> 性别:<br> 出生日期:<br> 爱好:<br> 简介:<br><br><br><br> </td> <td align=left> <!-- action是当前的网页,传输是POST方式 --> <form action="index.php" method="POST"> <input type="text" name = "username"><br> <input type="password" name = "pwd" value="123456" ><br> <input type="radio" name="sex" value="female"><input type="radio" name="sex" value="male" checked><br> <select name="y"> <option value="1970">1970</option> </select><select name="m"> <option value="1">1</option> </select><select name="d"> <option value="19">19</option> </select><br> <input type="checkbox" name="book" value="读书">读书 <input type="checkbox" name="climb" value="登山">登山 <input type="checkbox" name="music" value="音乐">音乐 <br> <textarea name="brief" >husiudh</textarea> <br> <input type="submit"> <input type="reset"> </form> </td> </table> if(count($_POST)==0) exit;//判断有没有表单提交信息,如果发现POST没有内容,那么退出脚本。 echo "
你输入的数据如下
"
; print_r( $_POST); print_r($_COOKIE); echo"
"
; if($_POST['pwd']<>"123456" ){//判断密码是不是正确的 echo"用户名或者密码错误"; }else {//如果密码正确,那么设置Cookie,并且跳转页面到当前页面(在这个例子相当于刷新的功能) setcookie('username',$_POST['username'],time()+3660); setcookie('isloged','True',time()+3600); echo ''; } ?>

Session

存储在服务器,PHP为每一个会话创建一个唯一的SessionID,SessionID可以在用户访问的页面之间传递,以识别会话,保存在一个全局数组$_SESSION中。当用户离开网站时,Session自动销毁。

  1. 设置Session
  • session.save_path="/php/session":PHP使用文件来保存Session,该设置指定Session的保存路径。
  • session.use_cookie=1:设置是否使用Cookie来传递SessionID
  • session.use_only_cookie=1:设置是否只使用Cookie来传递SessionID,而不使用URL传递
  • session.auto_start=1:设置用户访问网站时自动启用session,如果为0,则需要在用户访问的每一个网页中调用 session_start()函数来启动Session。
测试代码

session_start();//开启session
if($_SESSION['isloged']=="True" and $_SESSION['username']<>null){//首先判断有没有已经成功登陆的标记
    echo"

欢迎

"
; print_r($_SESSION); exit;//如果已经登陆过,那么结束脚本,不再执行下面代码 } if($_SESSION['username']==0){//判断是否有用户名的值 echo"未登陆"; } ?> <!-- 登陆部分, --> <title>表单登陆</title> <meta charset="utf-8"> <table border=0> <tr > <td align=right> 请输入用户名:<br> 请输入密码:<br> 性别:<br> 出生日期:<br> 爱好:<br> 简介:<br><br><br><br> </td> <td align=left> <!-- action是当前的网页,传输是POST方式 --> <form action="index.php" method="POST"> <input type="text" name = "username"><br> <input type="password" name = "pwd" value="123456" ><br> <input type="radio" name="sex" value="female"><input type="radio" name="sex" value="male" checked><br> <select name="y"> <option value="1970">1970</option> </select><select name="m"> <option value="1">1</option> </select><select name="d"> <option value="19">19</option> </select><br> <input type="checkbox" name="book" value="读书">读书 <input type="checkbox" name="climb" value="登山">登山 <input type="checkbox" name="music" value="音乐">音乐 <br> <textarea name="brief" >husiudh</textarea> <br> <input type="submit"> <input type="reset"> </form> </td> </table> if(count($_POST)==0) exit;//判断有没有表单提交信息 echo "
你输入的数据如下
"
; print_r( $_POST); print_r($_SESSION); echo"
"
; if($_POST['pwd']<>"123456" ){//判断密码是不是正确的 echo"用户名或者密码错误"; }else {//如果密码正确,那么设置SE$_SESSION,并且跳转页面到当前页面(在这个例子相当于刷新的功能) $_SESSION['username']=$_POST['username']; $_SESSION['isloged']="True"; echo ''; } ?>

你可能感兴趣的:(#,PHP,笔记,php,经验分享)