PHP Session总结_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP Session总结

PHP Session总结

 2018/3/14 2:47:09  青春..荒唐  程序员俱乐部  我要评论(0)
  • 摘要:【前言】本文主要总结下PHP里Session相关知识【概论】使用PHP应用session时,将session中的数据存储在服务器上,然后通过客户端传来的sessionID识别客户端的信息,并提取信息。php中的session的常用操作:session的写入、读取、注册与删除。(1)session的初始化标记session使用开始的函数是session_start,session_start函数用于初始化session变量。语法如下:session_start();返回值为true(2
  • 标签:总结 PHP

【前言】

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

?

【概论】

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

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

(1)session的初始化

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

class="语法">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 '对不起,会话中没有数据  或者  不存在该对话 !';
}
?>

?

?

?

?

?

.

发表评论
用户名: 匿名