PHP初级学习之session

本文深入探讨了PHP会话的概念、工作原理及应用,包括如何开始、存储和终结会话,以及如何使用PHPsession变量管理用户会话信息。文章通过示例展示了如何在实际场景中使用session,强调了会话信息的临时性及其与持久存储的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Session的理解

小结:

1. 计算器清楚访问者是谁,知道访问者何时启动程序,何时终止程序。

2. 在因特网上,服务器不知道访问者是谁以及访问者做了什么,因为HTTP地址不能维持状态。

3. 可以在服务器上存储用户信息以便随后使用,PHP session解决了2中的问题。

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

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

6.会话信息是临时的,在用户来开网站后将被删除。如果需要永久存储信息,可以把数据存储在数据库中。

7. 关于会话的理解:当你运行一个应用程序时,你会打开它,做些更改,然后关闭它,这很像一次会话。

PHP Session的使用

1 开始PHP Session

(1)所谓开始PHP Session是指:在把用户信息存储到PHP session中之前,首先必须启动会话。

(2)如何开启PHP Session:在html标签之前使用用session_start()函数

2 存储Session变量

(1)使用PHP $_SESSION[]变量来存储和取回session变量

3 终结Session

(1)PHP中删除某些session数据,可以使用unset()或session_destroy()函数

    两者的区别:

    unset()函数用于释放指定的session变量,session_destroy()函数用于彻底终结session。

    需注意:

    I. session_destroy()将重置session,将会失去所有已存储的session数据。

    II. 要是session_destroy()起作用,应该在session_destroy()前使用session_unset()。

(2)示例

示例1:unset()方式删除某些session数据

<!-- lang: php -->
<?php
<!-- lang: php -->
//start session 
<!-- lang: php -->
session_start();
<!-- lang: php -->
//store session data
<!-- lang: php -->
$_SESSION['username'] = 'lisan';
<!-- lang: php -->
if(isset($_SESSION['views'])){
<!-- lang: php -->
	$_SESSION['views'] = $_SESSION['views'] + 1;
<!-- lang: php -->
}else{
<!-- lang: php -->
	$_SESSION['views'] = 1;
<!-- lang: php -->
}
<!-- lang: php -->
?>
<!-- lang: php -->
<!DOCTYPE HTML>
<!-- lang: php -->
<html>
<!-- lang: php -->
	<head>
<!-- lang: php -->
		<meta charset="utf-8">
<!-- lang: php -->
		<title>session start and unset</title>
<!-- lang: php -->
	</head>
<!-- lang: php -->
	<body>
<!-- lang: php -->
		<?php 
<!-- lang: php -->
		//retrieve session data
<!-- lang: php -->
		echo "username is ".$_SESSION['username'].'<br>';
<!-- lang: php -->
		echo "Pageviews=".$_SESSION['views'];
<!-- lang: php -->
		
<!-- lang: php -->
		unset($_SESSION['views']);
<!-- lang: php -->
		echo '<br>the session var whose name is views has been released.';
<!-- lang: php -->
		
<!-- lang: php -->
		//if the $_SESSION['views'] exist?
<!-- lang: php -->
		if(isset($_SESSION['views'])){
<!-- lang: php -->
			echo '<br>Pageview = '.$_SESSION['views'];
<!-- lang: php -->
		}else{
<!-- lang: php -->
			echo '<br> sorry,the session views does not exist!
<!-- lang: php -->
			Please make sure that you spell is right!';
<!-- lang: php -->
		}
<!-- lang: php -->
		
<!-- lang: php -->
		//if the $_SESSION['username'] is eixt 
<!-- lang: php -->
		if(isset($_SESSION['username'])){
<!-- lang: php -->
			echo '<br>username is '.$_SESSION['username'];
<!-- lang: php -->
		}else{
<!-- lang: php -->
			echo "<br>sorry, this session does'nt exist! 
<!-- lang: php -->
					Please make sure that the session name's spell is right.";
<!-- lang: php -->
		}
<!-- lang: php -->
		?>
<!-- lang: php -->
	</body>
<!-- lang: php -->
</html>

示例2:session_destroy()方式重置session

<!-- lang: php -->
<?php
<!-- lang: php -->
//start session 
<!-- lang: php -->
session_start();
<!-- lang: php -->
//store session data
<!-- lang: php -->
$_SESSION['username'] = 'lisan';
<!-- lang: php -->
if(isset($_SESSION['views'])){
<!-- lang: php -->
	$_SESSION['views'] = $_SESSION['views'] + 1;
<!-- lang: php -->
}else{
<!-- lang: php -->
	$_SESSION['views'] = 1;
<!-- lang: php -->
}
<!-- lang: php -->
?>
<!-- lang: php -->
<!DOCTYPE HTML>
<!-- lang: php -->
<html>
<!-- lang: php -->
	<head>
<!-- lang: php -->
		<meta charset="utf-8">
<!-- lang: php -->
		<title>session start and destroy</title>
<!-- lang: php -->
	</head>
<!-- lang: php -->
	<body>
<!-- lang: php -->
		<?php 
<!-- lang: php -->
		//retrieve session data
<!-- lang: php -->
		echo "username is ".$_SESSION['username'].'<br>';
<!-- lang: php -->
		echo "Pageviews=".$_SESSION['views'];
<!-- lang: php -->
		
<!-- lang: php -->
		session_unset();
<!-- lang: php -->
		session_destroy();
<!-- lang: php -->
		echo '<br>session has been reset.Now,all session datas has been destroyed.';
<!-- lang: php -->
		
<!-- lang: php -->
		if(isset($_SESSION['views'])){
<!-- lang: php -->
			echo '<br>Pageview = '.$_SESSION['views'];
<!-- lang: php -->
		}else{
<!-- lang: php -->
			echo '<br> sorry,the session views does not exist!
<!-- lang: php -->
			Please make sure that you spell is right!';
<!-- lang: php -->
		}
<!-- lang: php -->
		
<!-- lang: php -->
		if(isset($_SESSION['username'])){
<!-- lang: php -->
			echo '<br>username is '.$_SESSION['username'];
<!-- lang: php -->
		}else{
<!-- lang: php -->
			echo "<br>sorry, this session does'nt exist! 
<!-- lang: php -->
					Please make sure that the session name's spell is right.";
<!-- lang: php -->
		}
<!-- lang: php -->
		?>
<!-- lang: php -->
	</body>
<!-- lang: php -->
</html>

(3)示例运行结果

    示例1:

        username is lisan

        Pageviews=2

        the session var whose name is views has been released.

        sorry,the session views does not exist! Please make sure that you spell is right!

        username is lisan 

    示例2:

        username is lisan

        Pageviews=1

        session has been reset.Now,all session datas has been destroyed.

         sorry,the session views does not exist! Please make sure that you spell is right!

        sorry, this session does'nt exist! Please make sure that the session name's spell is right. 

转载于:https://my.oschina.net/syc2013/blog/167925

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值