`

PHP Session总结

阅读更多

【前言】

   本文主要总结下PHP里Session相关知识   

 

【概论】

   使用PHP应用session时,将session中的数据存储在服务器上,然后通过客户端传来的sessionID识别客户端的信息,并提取信息。

   php中的session的常用操作:session的写入、读取、注册与删除。

(1)session的初始化

   标记session使用开始的函数是session_start,session_start函数用于初始化session变量。语法如下:

session_start();

   返回值为true

(2)session的写入和读取

   在PHP中,session的使用是通过超全局变量$_SESSION的调用和读取来完成

  

【列表】

    (1)简介;(2)由来;(3)工作机制;(4)开启会话;

    (5)存储和获取;(6)存储获取Session案例;(7)删除 / 释放Session

 

【详解】

 (1)简介

   session变量用于存储有关用户会话的信息,或更改用户会话的设置。Session变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用

(2)由来

   当运行一个应用程序时,你会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。

   通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果需要永久储存信息,可以把数据存储在数据库中

(3)工作机制

   为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过URL进行传导

(4)开启会话

   在把用户信息存储到session中之前,首先必须启动会话。启动会话session_start() 函数必须位于 <html> 标签之前:

<?php session_start(); ?>
<html>
<body>...</body>
</html>

   上面的代码会向服务器注册用户的会话,以便开始保存用户信息,同时会为用户会话分配一个UID

(5)存储和获取

   用$_SESSION超全局变量可以存储和获取session变量

<?php
session_start();
$_SESSION['views']=1;// 存储Session
?>
<html>
<body>
<?php
echo "Pageviews=". $_SESSION['views'];//获取Session
?>
</body>
</html>

   注意:在其他页面获取前,首先要启动会话session-start();

(6)存储获取Session案例

   下面创建一个简单的页面计数器案例

   isset() 函数检测是否已设置 "views" 变量,如果已设置 "views" 变量,便累加计数器。如果 "views" 不存在,则创建 "views" 变量,并把它设置为 1:

<?php
session_start();
if(isset($_SESSION['views'])){
  $_SESSION['views']=$_SESSION['views']+1;
}else{
  $_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
}
?>

 (7)删除 / 释放Session

   如果想删除某些session数据,可以使用unset()或session_destroy()函数

   unset() 函数用于释放指定的 session 变量:

<?php
unset($_SESSION['views']);
?>

   也可以通过 session_destroy() 函数彻底终结 session:

<?php
session_destroy();
?>

   区别:

   ①unset() 函数用于释放指定的 session 变量

   ②session_destroy()将重置session,失去所有已存储的 session 数据

针对这个区别,我做了一个案例

<?php
session_start();
?>
</head>
if(isset($_SESSION['views']))
  $_SESSION['views']=$_SESSION['views']+1;
else
  $_SESSION['views']=1;
  echo "数量=". $_SESSION['views']."<br>";
?>
<?php
$_SESSION['name'] = 'Tony';
echo "名字是=". $_SESSION['name']."<br>";
?>
<a href="./demo.php">页面2</a>
<?php session_start(); ?>
<a href="./index.php">链接</a><br>
<?php
echo "数量=". $_SESSION['views']."<br>";
echo "名字是=". $_SESSION['name'];
?>
<?php
//unset($_SESSION['views']);
//unset($_SESSION['name']);
session_destroy();
?>

 


 

【案例】

    (1)注册页面:

   在网站的页面中,在注册页面对$_SESSION数组进行赋值,在其他的页面中对$_SESSION数组进行读取

   注册页面中的session,例如:

<?php
session_start();
$_SESSION['Name']= "Tony";
?>

   其他页面中的session,例如:

<?php
session_start();
echo $_SESSION['Name'];
?>

   依次运行,结果是:Tony

(2)投票

<?php
if(isset($_POST['submit'])){
    session_start();                                //开始建立一个会话
    $_SESSION['season'] = $_POST['season'];       //存储会话数据
    header("Location: demo2.php");            //应特别注意header()里的格式问题
}
?>
<b>存储会话</b>
<hr/>
选择需要设置的数据:
<form name="form1" method="post" action="" id="form1" >
    <select name="season" id="season_select" >
        <option value="">无数据</option>
        <option value="春天">春天</option>
        <option value="夏天">夏天</option>
        <option value="秋天">秋天</option>
        <option value="冬天">冬天</option>
    </select>
    <br/>
    <br/>
    <br/>
   <input type="submit" name="submit" value="submit"/>
</form>
<?php
session_start();    //建立或者继续一个会话
$season = $_SESSION['season'];       //读取会话数据
echo "<b>读取会话</b><br/><br/>";
switch ($season) {
    case '春天';
        echo '现在是绿意盎然的春天!';
        break;
    case '夏天';
        echo '现在是热情四溢的夏天!';
        break;
    case '秋天';
        echo '现在是丰收果实的秋天!';
        break;
    case '冬天';
        echo '现在是白雪皑皑的冬天!';
        break;
    default ;
        echo '对不起,会话中没有数据  或者  不存在该对话 !';
}
?>

 

 

 

 

 

.

分享到:
评论

相关推荐

    详解php设置session(过期、失效、有效期)

    总结来说,理解并灵活运用PHP的Session设置至关重要,它涉及到Session数据的存储位置、过期策略以及在多服务器环境下的管理。通过正确配置和编程技巧,开发者可以有效地控制Session的生命周期,从而优化用户体验和...

    php跨域提交及伪造SeSSION

    总结来说,PHP的跨域提交和伪造SESSION是Web安全的两大主题。开发者必须熟悉这些概念,理解其工作原理,并采取相应的防护措施。同时,通过学习和实践,可以提升自身在Web应用开发中的安全意识和技术水平。

    php清除session

    总结,处理PHP Session时,应确保正确地启动、设置、清除和销毁session。在遇到问题时,应检查服务器环境、session配置、cookie处理以及可能的外部影响因素,如缓存和CDN。只有全面理解并掌握这些知识点,才能有效地...

    php5的session详解

    ### PHP5 Session 详解 #### 一、Session 的概念与作用 **Session** 在中文中通常被称为“会话”,它的本意是指从一系列有始有终的动作或消息组成的一个完整过程,例如打电话从拨号到挂断电话的过程。在网络开发...

    php中精确控制session超时时间

    总结来说,要严格控制PHP中的session过期时间,需要综合考虑客户端cookie的生命周期、服务器端的垃圾回收机制以及代码层面的session检查。理解这些机制可以帮助开发者更好地管理和维护用户的会话状态,提供更加安全...

    php_session与cookie会员登录验证实例

    总结起来,这个实例展示了如何结合使用PHP Session和Cookie进行会员登录验证。Session用于在服务器端存储用户信息,确保安全性,而Cookie则可以用来控制用户在一段时间内的登录状态。实际应用中,应考虑使用更安全的...

    PHP5 session 详解

    ### PHP5 Session 详解 #### 一、HTTP 协议与 Session 的必要性 HTTP(HyperText Transfer Protocol)协议作为 Web 服务器与客户端之间通信的基础协议,其本质特征之一是无状态性。这意味着每次 HTTP 请求都是独立...

    php使用session的详细介绍[总结].pdf

    总结来说,PHP中的Session机制提供了一种安全、高效的方式来管理用户会话,尤其是在处理用户登录验证和其他需要跨页面保持状态的场景中。了解并熟练运用Session,对于提升网站或应用程序的安全性和性能至关重要。

    php和session实现简单的登录记忆

    总结一下,通过PHP和Session,我们可以实现一个简单的登录记忆功能。核心步骤包括:验证用户身份后将用户标识存储到Session,检查Session状态以确定用户是否已登录,以及在用户登出时清理Session信息。这只是一个...

    js操作session例子

    总结起来,JavaScript操作Session的关键在于利用表单提交或Ajax通信与服务器进行交互。虽然JS直接修改服务器端Session有困难,但通过以上方式可以巧妙地实现数据在客户端和服务器之间的传递,从而达到管理Session的...

    session php

    总结,PHP的session机制为Web应用程序提供了高效且安全的方式来跟踪用户会话。理解和正确使用session是构建功能丰富的交互式网站的关键。通过了解其原理、配置和安全措施,开发者可以更好地利用这一工具来提升用户...

    php.itcast.cn PHP课程-session和cookie的简单原理

    总结起来,session和cookie是Web开发中不可或缺的工具,理解它们的运作机制和优缺点,能帮助开发者设计出更安全、高效的Web应用。在“php.itcast.cn”的PHP课程中,通过韩忠康老师的讲解,你可以更深入地学习这两个...

    ext session失效 页面跳转

    总结起来,EXT中的Session失效页面跳转涉及到前后端的协同工作。前端EXT应用需要监听和响应Session失效的事件,而后端服务器则需要正确地管理和验证Session状态。这种机制确保了用户的会话安全,防止了未经授权的...

    session同服务器不同域名共享

    3. **自定义Session处理函数**:PHP提供了`session_set_save_handler()`函数,允许开发者自定义Session的读取、写入、创建、删除等操作。这对于实现跨域名Session共享非常重要,因为可以借此机会实现对Session数据的...

    PHP session 会话处理函数_.docx

    ### PHP Session 会话处理详解 #### 一、引言 在互联网应用开发中,保持用户的登录状态或个性化设置是一项常见的需求。然而,由于HTTP协议的无状态特性,服务器难以跟踪用户的行为。PHP Session机制正是为了解决这...

    关于如何清空session的例子

    总结起来,清空Session是Web应用中确保用户安全注销的重要步骤。这个过程涉及获取Session,检查其存在性,清空Session数据,以及可能的Cookie清理和页面重定向。不同编程语言中实现这一功能的方法有所不同,但核心...

    (转)讲解各种session

    2. **PHP**:通过`session_start()` 开启Session,`$_SESSION['key'] = 'value';` 存储数据,`echo $_SESSION['key'];` 获取数据,`session_destroy()` 销毁Session。 3. **Python (Flask/Django)**:Flask中,可以...

    常用跨域共用session的是登录模块

    两种情况:一种9streets.cn和a.9streets.cn之间,另一种是a.com b.com之间,这几天总结了一下处理方法。 方式一: 在一,二级域名下调用如下代码: &lt;?php include("DBsession.php"); $_SESSION['usssser_oke'] ...

    session共享之memcache Redis

    总结,session共享是多服务器环境中的关键问题,memcache和Redis都是有效的解决方案。通过将Session数据存储在这些内存数据库中,我们可以确保在不同服务器之间的一致性和高可用性。实现这一目标通常涉及自定义PHP的...

Global site tag (gtag.js) - Google Analytics