资讯专栏INFORMATION COLUMN

PHP中的会话控制

luoyibu / 1271人阅读

摘要:会话控制的思想是指能够在网站里根据一个会话跟踪用户。在之后,包含了会话控制函数,可以使用超级全局变量。检查数组来确定一个变量是否是注册的会话变量。注销和销毁注销某一个会话。

笔记内容来源于《PHP和mysql web开发》,有兴趣的可以看看这本书,

一.什么是会话控制:
http是一个无状态协议,说明http没有一个内建机制来维护两个事物之间的状态。当一个用户访问不同的页面时,http无法告诉我们这两个请求是否来自同一个用户。
会话控制的思想是指能够在网站里根据一个会话跟踪用户。在PHP4之后,PHP包含了会话控制函数,可以使用$_SESSION 超级全局变量。

二.基本的会话功能:
1,会话是通过唯一的id来驱动的,会话id是一个加密的随机数字。它由PHP生成,在会话的生命周期内都会保存在客户端。可以保存在用户机器里的cookie,或者通过url在网络上传递。
2,会话id允许我们注册一些特定的变量,叫做会话变量,保存在服务端。

三.cookie:
cookie是与会话不同的解决办法。cookei就是一小段信息,由脚本在客户端机器保存。
可以发送一个包含特定数据且具有如下格式的http标题头,从而在用户端机器设置一个cookie。

Set_Cookie:NAME = VALUE; [expires=DATE;][path=PATH;][domain=DOMAIN_NAME;][secure]

这会创建一个名为NAME,值为VALUE的cookie,其他参数可选。expires设置失效日期,如果不设置,将永久有效。除非手动删除。path和domain结合起来指定url或和cookie相关的url,secure指在普通的http连接中不发送cookie。

2。设置cookie:

setcookie ("mycookie","value");

也可以删除此cookie,只需要将参数时间设置为过去时间。
cookie标题头必须在发生其他标题头之前发送,否则无效。这是cookie的限制。

三.实现简单的会话:

基本步骤:

开始一个会话

注册会话变量

使用会话变量

注销会话变量并销毁会话

开始会话:
方法一:调用session_start()函数开始一段脚本。此最简单。
此函数会检查是否有一个会话id存在,如果不存在,会创建一个。并且可以通过$_SESSION超级全局数组访问。如果存在,则载入并使用。
方法二:是将PHP设置成当有用户访问网站的时候就自动启动一个会话。可以使用php.ini里面的session_auto_start选项。暂时不多介绍。

注册会话变量:

$_SESSION["my"] = 5;

只需在数组中设置一个元素。在会话结束或手动重置时才会失效。

使用会话变量:

$_SESSION["my"];、
//使用会话变量前要先启动会话。
if(isset($_SESSION["my"]))...
//检查$_SESSION数组来确定一个变量是否是注册的会话变量。

注销和销毁:

unset($_SESSION["my"]);
//注销某一个会话。

$_SESSION = array();
//首先注销所有的变量
session_destory ();
//然后清除会话id。

实例:
介绍:我们创建一个登陆界面homepage,一个已登陆的界面和一个注销退出的界面。通过登陆,开启会话,连接数据库,再通过会话返回用户信息,最后可以选择销毁会话。直接上三个界面的代码。
主页:authmain.php

query($query);
    if ($result->num_rows) {
        $_SESSION["valid_user"] = $username;
    }
    $db_conn->close();
    //检查登陆用户是否和数据库中的数据匹配,匹配则创建变量$_SESSION["valid_user"] = $username;
}
?>


home page

"; echo "log out
"; //如果是匹配用户,则显示该用户信息。 } else { if (isset($username)) { echo "could not log you in
"; } else { echo "you are not logged in
"; } echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
username:
password:
"; echo "
"; //表单界面,用post方法,将username和password储存在$_POST[]中。 } ?>
menbers only

已登陆页:members_only.php

members_only";

if (isset($_SESSION["valid_user"])) {
    echo "you are logged in as:" . $_SESSION["valid_user"] . "
"; } else { echo "you are not logged in.
"; } //检查是否包含一个注册的用户,如果有就显示,没有就说尚未登陆 echo "back to main page";

注销退出页:logout.php





log out

"; } else { echo "you were not logged in,and so have not been logged out.
"; } ?> back to main page

数据库代码:

     create database auth;
     use auth;
     create  table authorized_users (
     name varchar(20),
     password varchar(40),
     primary key (name)
     );
     insert into authorized_users values (
     "sha1user",sha1("pass")
     );
     

以上为会话的简单实例,通过这个了解关于会话的内容,方便后面进一步的工作。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25976.html

相关文章

  • PHP面试常考之会话控制

    摘要:一的会话也称为。如果启动会话成功,则函数返回,否则返回。会话启动后就可以载入该会话已经注册的会话变量以便使用。但数组创建的在会话结束后就会失效。预告本周三更新面试常考之网络协议,敬请期待。 你好,是我琉忆,欢迎您来到PHP面试专栏。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面试常考之会话控制周三:PHP面试常考之网络协议周五:PHP面试常考题之会话控制和...

    lsxiao 评论0 收藏0
  • PHP多进程初探 --- 再次谈daemon进程

    摘要:因为子进程一定不会是组长进程,所以子进程可以调用。主进程退出子进程继续执行啦啦啦,啦啦啦,啦啦啦,已经变成啦,开心一般服务器软件都有写配置项,比如以模式运行还是以模式运行。 [原文地址:https://blog.ti-node.com/blog...] 其实前面是谈过一次daemon进程的,但是并涉及过多原理,但是并不影响使用。今天打算说说关于daemon进程更多的二三事,本质上说,如...

    fox_soyoung 评论0 收藏0
  • PHP 会话控制

    摘要:会话控制协议是服务器与浏览器相互通信的协议,它是一种无状态协议,即每个请求之间是相互独立的。因此,协议没有一个内建的机制来维护两个事务之间的状态。这就是会话控制技术。每一个文件,里面保存了一个会话的数据。此时可以采用等缓存系统。 会话控制 HTTP 协议是 WEB 服务器与浏览器相互通信的协议,它是一种无状态协议,即每个 HTTP 请求之间是相互独立的。因此,HTTP 协议没有一个内建...

    CHENGKANG 评论0 收藏0
  • PHP学习记录(session与cookie)

    摘要:为应用程序启用会话状态时,将检查应用程序中每个页面请求是否有浏览器发送的值。如果未提供任何值,则将启动一个新会话,并将该会话的值随响应一起发送到浏览器。 session 什么是session? session在计算机中,尤其在网络应用中,称为会话控制;具体到web中的session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏这个网站所花费的时间。...

    silenceboy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<