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

会话控制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技术


服务器给客户端的 礼物


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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值