美文网首页
session与cookies的理解

session与cookies的理解

作者: 荞叶 | 来源:发表于2016-12-20 17:05 被阅读33次

我的职业生涯,先Java,再JavaScript, 业余搞了一下PHP。最近想重新理解一下session与cookies,后台语言还是PHP的环境最好搭建。

用户登陆功能

  • 数据库文件
    在user表里面存入三个用户,用户名均为"123"
drop database if exists shop;
create database shop;
use shop;

create table user(
  id int primary key auto_increment,
  username varchar(255),
  password varchar(255)
);

/* 密码123*/
insert into user values(null,'sam','202cb962ac59075b964b07152d234b70');
insert into user values(null,'alex','202cb962ac59075b964b07152d234b70');
insert into user values(null,'peter','202cb962ac59075b964b07152d234b70');
  • login.php
<?php

//如果用户登陆,就跳转到main.php
session_start();
if (isset($_SESSION['user_info'])) {
    header("location:main.php");
}

//首次进入页面不检验结果
if (!empty($_POST)) {
    $username = trim($_POST['username']);
    //加密密码
    $password = md5(trim($_POST['password']));

    //连结数据库,验证用户名密码是否正确
    $mysqli = new mysqli("localhost", "root", "", "shop");
    if (mysqli_connect_errno()) {
        echo "连接失败" . mysqli_connect_error();
        exit();
    }
    $sql = "select * from user where username ='$username' and password='$password'";

    $result = $mysqli->query($sql);

    //用户存在
    if ($result->num_rows > 0) {
        session_start();
        //在session里面存入username
        $_SESSION["user_info"] = array("username"=>$username);

        header("location:main.php");
    } else {
        header("location:login.php");
    }
}
?>
  • main.php
<?php
//如果用户没有登陆,跳转login.php
session_start();
if (empty($_SESSION['user_info'])) {
    header("location:login.php");
}
?>

login.php用户输入正确的用户名密码,跳转到main.php. 服务器端开启session,生成key为"PHPSESSID"的session id,发送到客户端,给cookie设置"PHPSESSID".

Paste_Image.png

登陆后,在main.php页面可以看到cookies里面有sessionid

Paste_Image.png

刷新main.php,查看network, request发送cookie PHPSESSID. 服务器端会检验PHPSESSID,如果相等,session保持。

Paste_Image.png

把cookies清空,再请求,跳转login.php,PHPSESSID检验失败,session失效,跳转login.php

Paste_Image.png

登陆后,用户关闭浏览器,再次打开"login.php",会跳转main.php,session依然保持。

相关文章

  • 【转载】HttpSession与 Cookies区别

    梳理思路 待整理 Cookies Session 区别与联系 Tomcat中的session 不理解这两篇,别说自...

  • session与cookies的理解

    我的职业生涯,先Java,再JavaScript, 业余搞了一下PHP。最近想重新理解一下session与cook...

  • cookie和session

    Persistent cookies 和 Session cookies Session cookie : 保存在...

  • cookie 和 session

    cookies与session的区别: cookies是放在浏览器端(客户端);session放在服务器端,每个客...

  • 理解session和cookies

    References:http://www.cnblogs.com/sharpxiajun/p/4237704.html

  • session和Cookies理解

    session机制 session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表...

  • Session 与 Cookies

    cookies cookies 分为 会话cookies 与 永久cookies 两种类型。前者存放在内存中,后者...

  • Cookies与Session

    Cookie 服务器在 HTTP 响应中, 通过Set-Cookie命令浏览器存储一个cookie(通常不大于4K...

  • cookies/ session / token概念

    cookies session session与cookie的区别 cookie跨域请求携带如何解决 浏览器同源策...

  • sql注入

    session 和cookies原理

网友评论

      本文标题:session与cookies的理解

      本文链接:https://www.haomeiwen.com/subject/igcfvttx.html