会话控制--php基础最详细教程

原创 2016年08月30日 22:03:19

会话控制cookie和session 原创



什么是会话控制?


COOKIE


COOKIE概述


cookie技术


服务器给客户端的 礼物


就是借助 客户端 电脑 的 一个文件 来保存这个用户信息, 再访问同一个网站的各个页面都会带这些信息过去,服务器在每个页面只要通过这些信息就能区分用户


COOKIE的设置


注意:因为setcookie函数属于头函数 所以之前不能有输出。setcookie是把相应的信息放入超全局数组$_COOKIE中,使用时调用$_COOKIES超全局数组函数。
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
                          设置的变量名, 变量值,                                   变量作用路径,(省略为整个根目录),变量作用网址,是否通过安全的HTTPS传输。


设置COOKIE 


<?php 
//实例一(多个变量就使用多次setcookie)
$time = time() + 3600; //在客户端的生效时间 一个小时
setcookie('one','1111111',$time);
setcookie('two','2222222',$time);
setcookie('three','333333',$time);


//设置数组类型的cookie
setcookie('four[0]','aaaaaaaaa',$time);
setcookie('four[1]','bbbbbbb',$time);  //索引数组一定要指定下标,不然会被覆盖
setcookie('four[aa]','ccccccc',$time);
setcookie("four['user']",'panxiaoliang',$time); //关联数组中不要加单引号


销毁COOKIE


<?php 
//实例一(多个变量就使用多次setcookie)
$time = time() - 3600; //在客户端的生效时间 一个小时
setcookie('one','',$time);
setcookie('two','',$time);
setcookie('three','',$time);


//设置数组类型的cookie
setcookie('four[0]','',$time);
setcookie('four[1]','',$time);  //索引数组一定要指定下标,不然会被覆盖
setcookie('four[aa]','',$time);
setcookie("four['user']",'',$time-200); //关联数组中不要加单引号


COOKIE实例:


说明:本实例由:comms.php  conns.inc.php logins.php indexs.php one.php two.php three.php logouts.php
本实例与数据相关联。表名为user  字段为username、password、uid、allow_1、allow_2、allow_3、




comms.php
<?php
header('content-type:text/html;charset=utf-8');
date_default_timezone_set('PRC');
if(!$_COOKIE['islogin']){
header('location:logins.php');
}


conns.inc.php
<?php
//1.链接数据库
$link = mysql_connect('localhost','root','');


//2.选择数据库
mysql_select_db('bbs85');


//3.设置字符集
mysql_set_charset('utf8');






logins.php
<?php
if(isset($_POST['sub'])){
include('conns.inc.php');


$sql = "select id,username,password from user where username='".$_POST['username']."' && password='".md5($_POST['pwd'])."'";
$result = mysql_query($sql);
if($result && $row = mysql_num_rows($result) > 0){
$row = mysql_fetch_assoc($result);
$times = time()+3600;
setcookie('username',$row['username'],$times);
setcookie('password',$row['password'],$times);
setcookie('uid',$row['id'],$times);
setcookie('islogin',1,$times);


 mysql_free_result($result);
 mysql_close($link);
// echo '<script type="text/javascript">alert("登录成功,点击确定跳转首页");window.location="index.php";</script>';
// echo '<script type="text/javascript">window.location="index.php";</script>';
echo '<script type="text/javascript">';
echo 'window.location="indexs.php"';
echo '</script>';
}else{
echo '<center><font color="red">您的用户名和密码有误</font></center>';
}
}


?>


<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>用户登录</title>
</head>
<body>
<form action="logins.php" method="post">
<table align="center" border="1" width="300">
<caption><h3>用户登录</h3></caption>
<tr><th>用户名:</th><td><input type="text" name="username" placeholder="请输入用户名" required></td></tr>
<tr><th>密码:</th><td><input type="password" name="pwd" required></td></tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="sub" value="登录">
<input type="reset" value="重填">
</td>
</tr>
</table>
</form>
</body>
</html>


indexs.php
<?php
include('comms.php');
include('conns.inc.php');


echo '尊敬的用户'.$_COOKIE['username'].'你好!<br>';
echo '本站主页下共三个页面one.php two.php three.php 您可以访问:<br>';


$sql = "select allow_1,allow_2,allow_3 from user where username= '".$_COOKIE['username']."'";


$result = mysql_query($sql);


if($result && mysql_num_rows($result) > 0){
$row = mysql_fetch_assoc($result);
$time = time()+3600;
setcookie('allow_1',$row['allow_1'],$time);
setcookie('allow_2',$row['allow_2'],$time);
setcookie('allow_3',$row['allow_3'],$time);
echo '<hr>';
if($row['allow_1'] == 1){
echo '<a href="one.php">前往one.php</a><br>';
}
if($row['allow_2'] == 1){
echo '<a href="two.php">前往two.php</a><br>';
}
if($row['allow_3'] == 1){
echo '<a href="three.php">前往three.php</a><br>';
}
echo '<a href="logouts.php">退出账号</a><br>';
echo '<hr>';
}


one.php
<?php
include('comms.php');
if(!$_COOKIE['allow_1'] == 1){
exit('您登录'.$_COOKIE['username'].'的账号无权限查看此页面<a href="logins.php">切换用户</a>');
}


echo '这是one.php的页面内容<br>';
echo '这是one.php的页面内容<br>';
echo '这是one.php的页面内容<br>';
echo '这是one.php的页面内容<br>';
echo '这是one.php的页面内容<br>';
echo '<a href="indexs.php">返回首页</a>';


two.php
<?php
include('comms.php');
if(!$_COOKIE['allow_2'] == 1){
die('您登录'.$_COOKIE['username'].'的账号无权限查看此页面<a href="logins.php">切换用户</a>');


}




echo '这是two.php的页面内容<br>';
echo '这是two.php的页面内容<br>';
echo '这是two.php的页面内容<br>';
echo '这是two.php的页面内容<br>';
echo '这是two.php的页面内容<br>';
echo '<a href="indexs.php">返回首页</a>';


three.php
<?php
include('comms.php');
if(!$_COOKIE['allow_3'] == 1){
exit('您登录'.$_COOKIE['username'].'的账号无权限查看此页面<a href="logins.php">切换用户</a>');
}


echo '这是three.php的页面内容<br>';
echo '这是three.php的页面内容<br>';
echo '这是three.php的页面内容<br>';
echo '这是three.php的页面内容<br>';
echo '这是three.php的页面内容<br>';
echo '<a href="indexs.php">返回首页</a>';


logouts.php
<?php
include('comms.php');


//释放COOKIE;
$username=$_COOKIE["username"];
setcookie('username');
setcookie('uid');
setcookie('pwd');
setcookie('islogin');
setcookie('allow_1');
setcookie('allow_2');
setcookie('allow_3');
// echo '尊敬的'.$username.'再见!<br>';
//echo '<a href="logins.php">重新登录</a>';
echo '<script type="text/javascript">';
echo 'alert("尊敬的'.$username.'再见!");window.location="logins.php"';
echo '</script>';
// echo '<script type="text/javascript">alert("登录成功,点击确定跳转首页");window.location="index.php";</script>';


SESSION






什么是会话控制?

HTTP协议 --- 无状态

1. 变量只能在一个页面中使用 page级 

2. get和post方法传递, 两个页面之前传递(不是跟踪用户的首选)


3. 将变量存在文件或是数据库中 (所有人共用变量, 也不跟踪用户的首选)



admin 
1. 2. 3


user
1. 2. 3


hello
1. 2. 3


跟踪用户


让一个用户访问每个页面,服务器都知道是那个用户在访问


4. session级


为什么要使用会话控制?




cookie技术


服务器给客户端的 礼物


就是借助 客户端 电脑 的 一个文件 来保存这个用户信息, 再访问同一个网站的各个页面都会带这些信息过去,服务器在每个页面只要通过这些信息就能区分用户



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

流程控制与函数应用--php基础最详细教程

流程控制与函数应用 流程控制 顺序结构 分支结构/选择结构/条件结构 单路分支 格式:                        if(条件){                  ...

文件系统--php基础最详细教程

文件系统处理 原创 文件处理的作用 1.所有的项目离不开文件处理 2.可以用文件长时间保存数据 3.建立缓存,服务器中文件操作 文件处理的说明 所有文件处理都是使用系统函数完成的,是基...

字符串函数--php基础最详细教程

字符串常用函数 原创 header('content-type:text/html;charset=utf-8'); date_default_timezone_set('PRC'); //...

数组函数--php基础最详细教程

常用数组函数 原创 header('content-type:text/html;charset=utf-8'); date_default_timezone_set('PRC'); /...

正则表达式--php基础最详细教程

正则表达式简介 原创 概念: 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。 作用: 1.匹配,也常常用于从字符串中析取信息。 2.用...

数据库基础语法--php基础最详细教程

数据库开发篇 原创 MySQL数据库概述             数据库系统 (database system)         数据库 (database)            数...

PHP的日期和时间--php基础最详细教程

PHP的日期和时间 原创 介绍UNIX时间戳 简介:以最小从0开始,最大到2的32次方减一的整数表示格林威治标准时间如112304325 这个UNIX时间戳整数是从1970年1月1日0时0分0...

php动态图像处理--php基础最详细教程

PHP动态图像处理 原创 创建新图片 画图 header('content-type:text/html;charset=utf-8'); //1-1.创建一个基于调色板的画布 $i...

PHP基础教程十七之会话技术COOKIE、SESSION

我们用PHP开发后台的时候,需要对一些数据进行保存,而我们通常的做法就是进行数据库的保存,但是有时候我们一些是不需要保存在数据库中的,比如我们在登录网页的时候,在网站中显示我们上一次访问网站的时间,这...

PHP基础教程四之流程控制

本节讲解的内容 顺序流程控制 单分支 双分支 多分支 switch for while do…while break continue goto 前言PHP的流程控制和别的语言很相似,都是分为好多情况...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:会话控制--php基础最详细教程
举报原因:
原因补充:

(最多只允许输入30个字)