http协议,SESSION,COOKIE
Posted hq金水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http协议,SESSION,COOKIE相关的知识,希望对你有一定的参考价值。
1、http协议:
HTTP—超文本传输协议,在TCP协议(长连接、像一个硬件)基础上;
特点:短连接,无状态协议,没法记录本次连接的状态;适用于静态页面的访问,对于后期某些页面是需要浏览器预知客户信息才能登陆的,这是http协议满足不了的,为此引进session和cookie两种方法;
session和cookie并不能使http变为长连接,也就不能从根本上解决http的无状态性,只是暂时辅助,记录本次请求的状态。
2、SESSION:
效果:
比如淘宝登录页面,进入主页面之后,如果15分钟以内不进行任何操作,自动返回登录页面;
防止绕过登录页面直接访问主页面,如果知道一个主页面的网址,可以直接访问,但是如果有session可以防止访问,if(empty(session["uid"])){header "location:logyemian.php"};
特点:
(1)存储在服务器
(2)每个使用者都会生成一个session
(3)有默认过期时间,15分钟左右
(4)可以存储任何类型数据,比如,session["uid"] 是一个变量,可以存储数组,session["uid"]=array()是对的,a=array()语法是没错的;
3、COOKIE
特点:
(1)存储在客户端;当你访问一些页面的时候,会把一些信息存储在自己的电脑上,当清除浏览信息时会有提示
(2)每个使用者会生成一个cookie
(3)默认没有过期时间,可以设置
(4)只能存储字符串
相对而言,session方式将用户数据存储在服务器上更安全,但对服务器的压力大。
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
4、使用
(1)session:
session_stat();//使用session的页面必须在第一行代码开启session
$_SESSION["uid"]="张三";//赋值
echo $_SESSION["uid"];//取值
注意:
只要一个页面执行了session赋值,那么其他页面都能获取到这个值,因为session是存在服务器上。
存储方式不一样获取方式也就不一样,多个用户可以用多个标识存session。
session只能在同一个浏览器取到,在这个浏览器赋值,在另一个浏览器取值是取不到的;
session在关闭浏览器的时候,自动清空;
一个浏览器只能登陆一个用户名,多个浏览器可以登陆多个;
(2)COOKIE
setcookie("name","值");//赋值
echo $_COOKIE["name"];//取值
一个页面赋值其他页面都能取到;
注意:做程序时候,一定要先选用一种会话控制(session/cookie)
实例1:做一个完整的登录页面(防止绕过登录页面,直接进入主页面)
(因为对于登录页面,输入用户名和密码-->主页面,如果没有会话控制,只要输入主页面网址,就可直接访问,所以有bug)
登录页面:
<body> <form action="main1.php" method="post"> <div>用户名:<input type="text" name="uid" /></div> <div>密码: <input type="text" name="pwd" /></div> <input type="submit" value="登录"/> </form> </body>
登录处理页面:
<?php session_start();//开头启用session include ("../dbda.class.php"); $uid=$_POST["uid"]; $pwd=$_POST["pwd"]; $dx=new Dbda(); $sql="select nation from nation where name=\'{$uid}\'"; //var_dump($sql); $res=$dx->query($sql); //var_dump($res); if(!empty($res)) { foreach($res as $v) { if($v[0]==$pwd) { $_SESSION["uid"]=$uid;//赋值,因为存在用户名时候才有意义 header("location:main.php"); } else { echo "密码错误"; } } } else { echo "用户名不存在"; }
主页面:
<body> <?php session_start();//启用session if(empty($_SESSION["uid"])) { header("location:log.php"); }//防止直接进入主页面 ?> <h1>主页面</h1> </body>
以上是关于http协议,SESSION,COOKIE的主要内容,如果未能解决你的问题,请参考以下文章