php的session使用,疑难杂症及入门使用
发布于 作者:苏南大叔 来源:程序如此灵动~
苏南大叔想写一篇有关php的水文,主要说的内容就是session。session和cookie是紧密相关的。那么回想一下,苏南大叔的一个曾经的文章伏笔,说客户端禁用cookie的话,session还能使用么?答案是不能使用。大多数情况下,会有个名叫PHPSESSID的cookie,用于表示自己的身份信息。
PHPSESSID这个名字,在php.ini里面是可以修改的。
本文测试环境:mac/php56。
基本使用
php的session,使用方式还是非常简单的。记住一个全局变量名字即可:$_SESSION,它是一个数组。
设置的方式举例如下:
$_SESSION["author"]="sunan";获取的方式举例如下:
var_dump($_SESSION["author"]);Undefined variable: _SESSION
php里面的session如何想要正常使用,那么前提是建立在session_start()的基础上的。但是,对于各位新手而言,需要注意的是:session并不是想start就可以start的。如果没有正确start起来session的话,试图读取SESSION信息的时候,就可能会看到下面的类似错误信息:
Notice: Undefined variable: _SESSION in /code/www/php/test2.php on line 4这个错误是非常匪夷所思的,在第一个php里面刚刚设置好了$_SESSION,到第二个php里面,却报错Undefined variable: _SESSION。
session_start()
这个错误的产生原因就是:session没有start。那么start的方式方法通常来说,有以下两种方式:
php.ini自动session_start
session.auto_start指定会话模块是否在请求开始时自动启动一个会话。默认为0(不启动)。
php.ini中的默认配置是:
session.auto_start = 0相关链接是:
php代码主动session_start
当然,单独的一句php语句,也是可以解决问题的。
session_start();不过苏南大叔推荐您使用更兼容的语句:
if(session_status() !== PHP_SESSION_ACTIVE){
session_start();
}session存储的方式及位置
session在服务器端来说,默认情况下,是存储在一个服务器端的文件夹里面的。php.ini中的设置是:
session.save_handler = files相关链接是:
所以,如果session出现了一些什么奇怪的问题的话,可以去看看是不是对应目录出现了什么权限问题。这个位置一般是tmp目录。php.ini中的设置是:
session.save_path = "/tmp"相关链接是:
但是,在实际的生产环境里面,有各种各样的理由,去把session存储在其它位置,比如redis、或者mysql当中。这种情况,在苏南大叔的后续文字中,将会做深入讲解。
相关链接
苏南大叔写过几个php下面的cookie文章,鉴于cookie和session之间,这剪不断理还乱的关系,这里苏南大叔就提供几个cookie的相关文章。
- 《php使用header设置cookie时的注意事项》 https://newsn.net/say/php-cookie-header.html
- 《php如何设置cookie?三种方案比较大全》 https://newsn.net/say/php-cookie.html
总结
对于php里面的session问题,大多数情况下,本文的文字说明就足够使用了。对于将session存储在其它介质里面的情况,苏南大叔将在后续文章里面说明:



