PHP会话控制Session与Cookie
理解会话控制的概念:
阅读过HTTP协议相关资料的同学都会知道HTTP协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议,所谓无状态,指的是不会维护http请求数据,http请求是独立的,不持久的。也就是说HTTP协议没有一个内建的机制来维护两个事务之间的状态或者说是关系吧。当一个用户在请求一个页面后再去请求另外一个页面时,HTTP将无法告诉我们这两个请求是否来自同一个用户。
由此我们就会觉得很奇怪了,平时我们在论坛逛帖子或电商网站购物时,只要我们在这个站点内,不论我们怎么跳转,从一个页面跑到另一个页面,网站总会记得我是谁,比如告诉你购买车里选了哪几样东西。这就是运用了HTTP会话控制。在网站中跟踪一个变量,通过对变量的跟踪,使多个请求事物之间建立联系,根据授权和用户身份显示不同的内容、不同页面。看登入者是谁,给他不一样的内容
会话控制的两个计数:
session
1.保存在服务器且每个人一份
2.可以存储任何类型的数据
3.有一个默认的过期时间
优点:安全
缺点:容易造成服务器压力过大
cookie
1.保存在客户端
2.只能存储字符串
3.不会过期
优点:不会对服务器造成很大的压力
缺点:安全没有session好;
session用法
首先创建一个存储页面(赋值):
session_start();
//注意:在所有使用session页面最顶端要开启session--"session_start()";前面不许放东西 $_SESSION["name"]="张三";//存储;
//echo $_SESSION["name"];
开启(取值):
session_start();//开启session echo $_SESSION["name"];
只要不关掉游览器他就一直存在
cookie用法:
首先创建一个存储页面(赋值):
session_start();
//注意:在所有使用session页面最顶端要开启session--"session_start()";前面不许放东西
$_COOKIE["name"]="张三";//存储;
setcookie("shao","5")
//setcookie(设置cookie),第一个参数是你要存储的名字,第二个是你要往里面存的值 ?>
开启(取值):
<?php session_start();//开启session echo $_COOKIE["shao"];
cookie不要要开启cookie
session每个页面都需要开启
以上就是两种方法的用法
例子:
先来一个登入页面:
<body>
<form action="chuli.php" method="post">
<div>帐号:<input type="text" name="zhang"/></div>
<div>密码:<input type="text" name="mi"/></div>
<input type="submit" value="登入"/>
</form>
</body>
登入处理:
<?php
session_start();
//开启session
include ("db.class.php");
//引用封装类
$db = new db();
$zhang = $_POST["zhang"];
$mi = $_POST["mi"];
$sql = "select mi from mydb WHERE zhang='{$zhang}'";
$arr = $db->Query($sql);
if($arr[0][0]==$mi && !empty($mi))
//如果用户传的密码一致,且不为空
{
//即将跳转页面之前,把帐号存到session里面
$_SESSION["zhang"] = $zhang;
header("location:main.php");
}
else
{
echo "输入错误";
}
我们要求通过登入页面,进入主页面;
如果直接访问主页面地址也可以进入程序,这样是不合理的;
我们需要控制用户必须通过登入,才能访问,不登入不能访问并传送到登入页面
在主页面:
<body> <?php
//登入一定要取用户名!取用户名
session_start();
//echo $_SESSION["zhang"];
//试一下:已取到帐号,知道是这个帐号登入了 //根据session
if(empty($_SESSION["zhang"]))
{
header("location:dengru.php");
//如果为空 跳转到登入页面
exit;
//中断
} ?>
</body>
这样的话 我输入网址:
不可以强登!这种方式是经常使用的,也是必须要使用的
注销登入:
1.清除session;
2.跳转到登入页面
注销SESSION时不能用unset($_SESSION),可以使用$_SESSION = array()或则$_SESSION = null,正确注销session的方法如下:
//正确的注销session方法:
//1开启session
session_start(); //2、清空session信息
$_SESSION = array(); //3、清楚客户端sessionid
if(isset($_COOKIE[session_name()]))
{
setCookie(session_name(),'',time()-3600,'/');
}
//4、彻底销毁session
session_destroy();
.
PHP会话控制Session与Cookie的更多相关文章
- PHP......会话控制SESSION与COOKIE
一.SESSION Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 ...
- PHP中的会话控制—session和cookie(实现数据传值功能)
1.session 登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录. 特点:(1)session是存储在服务器: (2)session每个人(登陆者)存一份: (3)session ...
- 会话控制:SESSION,COOKIE
1.http协议: HTTP—超文本传输协议,在TCP协议(长连接.像一个硬件)基础上; 特点:短连接,无状态协议,没法记录本次连接的状态;适用于静态页面的访问,对于后期某些页面是需要浏览器预知客户信 ...
- PHP处理会话函数session和cookie总结
本教程讲解PHP处理会话函数session和cookie总结 PHP处理会话函数包括:session_start.session_register.session_is_registered.sess ...
- php 会话控制(关于cookie的维护与生命周期)
cookie是在服务器端被创建并写回到客户端浏览器,浏览器接到响应头中关于写cookie的指令则在本地临时文件中. cookie内容的存储是键值对的方式,键和值都只能是字符串. 函数原型:setcoo ...
- 会话控制Session的应用
Session技术与Cookie相似,都是用来存储使用者的相关资料.但是最大不同之处在于Cookie是将数据存放于客户端计算机中,而Session则是将数据存放于服务器系统下. 在Web技术发展史上, ...
- 会话控制session,cookie(0521)
简单介绍: 一.什么是session? 1. 定义: Session,在计算机中,尤其是在网络应用中,称为“会话”.在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常 ...
- php 会话控制(禁用cookie后session为什么会失效?)
首先说明一点:session不一定必须依赖cookie,只是php默认客户端sessionid基于cookie方式保存. 到此,我想你也应该了解了php默认的session客户端保存方式是基于cook ...
- php 会话控制(了解cookie与session之间的区别与联系)
相同点: 都可以在解决HTTP无状态的问题,使同一个客户端在访问网站的多次请求中,可以保存,设置信息,并且在请求事物之间建立联系. 不同点: 简单的说cookie的信息保存在客户端,session的信 ...
随机推荐
- 黄聪:VPS用轻松备份工具备份Wordpress,文件夹通配符
db;log;wp-admin;wp-includes;temp;upgrade;twentyfourteen;twentyfifteen;twentysixteen;twentythirteen;t ...
- Vim 第一天
记得第一次接触vi编辑器,好像是在海尔的机房吧,那是时候还是没有毕业的小菜鸟一只(PS:现在也是菜鸟),记得是测试一个云存储的产品.看着他们用vi编辑器,当时也没有感觉有什么(现在也没感觉……),只是 ...
- js原生设计模式——9外观模式封装2(小型代码库YJ)
<script type="text/javascript"> //小型代码库YJ封装 var YJ = { //根据id获取元素 ...
- Viso设置背景
文件 > 形状 > 其它Visio方案 > 背景
- 使用ActionBar实现Tab导航
ActionBar还有常用的功能,实现Tab导航.ActionBar在顶端生成多个Tab标签,当用户单击点击某个Tab标签时,系统根据用户点击事件导航指定Tab页面. 为了使用ActionBar实现T ...
- javascript window.confirm确认 取消对话框实现代码小结
本文章讲述的三种都是基于了javascript confirm提示确认框的做法了,只是在不同的地方写哦,有需要的同学可参考一下 confirm() 方法 confirm() 方法用于显示一个带有指 ...
- java实现算术表达式求值
需要根据配置的表达式(例如:5+12*(3+5)/7.0)计算出相应的结果,因此使用java中的栈利用后缀表达式的方式实现该工具类. 后缀表达式就是将操作符放在操作数的后面展示的方式,例如:3+2 后 ...
- JSP page指令
JSP page指令: JSP文件: <%@ page language="java"%> <%@ page import="java.util.*&q ...
- easyUI linkbutton组件
easyUI linkbutton组件: <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- ORA-02266: 表中的唯一/主键被启用的外键引用
http://www.cnblogs.com/cici-new/archive/2013/01/01/2841700.html 需要如下操作 先取消子表外键的外键约束,之后删除父表数据,最后再次启用外 ...