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
存储在其它介质里面的情况,苏南大叔将在后续文章里面说明:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。