Home >Backend Development >PHP Tutorial >很着急:对Session的疑惑
<code class="lang-php"><?php /** * Created by PhpStorm. * User: Administrator * Date: 14-8-29 * Time: 下午2:02 */ session_start(); $_SESSION['username']='hello'; print_r($_SESSION); </code></code>
打印出Array ( [username] => hello)
然后在index.php同一个文件夹下面建立了1.php
<code class="lang-php"><?php /** * Created by PhpStorm. * User: Administrator * Date: 14-8-29 * Time: 下午2:02 */ print_r($_SESSION['username']); </code></code>
出现了Notice: Undefined variable: _SESSION in C:\xampp\htdocs\phpstrom\0823\1.php on line 12
加上session_start();
然后就打印出hello
了
难道每一个页面都要使用session_start吗?
不能直接使用吗?
<code class="lang-php"><?php /** * Created by PhpStorm. * User: Administrator * Date: 14-8-29 * Time: 下午2:02 */ session_start(); $_SESSION['username']='hello'; print_r($_SESSION); </code></code>
打印出Array ( [username] => hello)
然后在index.php同一个文件夹下面建立了1.php
<code class="lang-php"><?php /** * Created by PhpStorm. * User: Administrator * Date: 14-8-29 * Time: 下午2:02 */ print_r($_SESSION['username']); </code></code>
出现了Notice: Undefined variable: _SESSION in C:\xampp\htdocs\phpstrom\0823\1.php on line 12
加上session_start();
然后就打印出hello
了
难道每一个页面都要使用session_start吗?
不能直接使用吗?
是的。在你用到 session 的时候,都需要使用 session_start。
你可以在通用包含文件(如配置文件等)中使用 session_start(); 这样每个页面都自动开启session 。
PHPSESSID
,可以通过 session.name 配置。session_start()
时, php就会解析 PHPSESSID
的值,拿到ID。根据ID去取session的值。session.save_path
目录下。session_name()
、session_set_cookie_params()
、session_save_path()
都要在session_start()
前调用, 不然php 无法解析session的值。所以要想使用session必须在每次访问前调用 session_start()
session系列函数:http://php.net/manual/zh/ref.session.php
,还可以再看下 php.ini
中 session部分的配置
php所有需要用到$_SESSION变量的页面都必须先session_start()
这个函数负责初始化这个变量,具体干的事情就是从cookie里读取sessionid,然后从存储里取出session反序列化赋值给$_SESSION