PHP的session_start函数一定要放在开头写吗?
判断session是否开启可以这样写if(!isset($_SESSION)){ session_start();}session不一定要放到类的开头,如果放到某个方法里面也可以的,只不过放到开头的话,这类里面的方法就都有了session已经开启,一般都是放到类的开头写的,如果放到方法里面,那么a方法我要用的session,得判断,b方法我也要用的session,还得判断,这样就麻烦多了,代码还冗余
session_start()一定要放在页面的最顶吗
并不是说session_start()必须放在第一行,而是要保证在使用它之前,没有向浏览器输出过任何内容
检查session_start()之前,是否已向浏览器输出过内容
php手册中有的If you are using cookie-based sessions, you must call session_start() before anything is outputted to the browser.
例如
php
<?php
session_start();
?>
在session_start()之前,向浏览器中输出了php,会发出一个警告
同样
<?php
session_start();
?>
zhongguo
这也是不行的,因为
<?php
session_start();
?>
前空了两行,空行也是有数据的,也不行,当然
如果前面有如:require_once("conn.php")【只要没有输出】,也是可以的,并不是非要放在第一行的……
希望可以帮助你一点……
php中session_start报错,该函数不能用
在php.ini里面设置一下session的存储位置:session.save_path = "你的储存路径"如果你没有设置,默认会使用TEMP目录建议设置一个。看样子你是用的APMServer,那么你就设置到 APMServer的安装目录下的 temp(如果没有你就新建一个目录),同时记得你要给你设置的目录相应权限。如果你是自己单机开发,最简单的办法就是给Everyone“完全控制”权限建议不要给WINDOWS\TEMP这个权限。
为什么我调试的时候没有设置session一开始就执行了 session_start这个函数?
每次session的产生都会触发session_start事件.但是像你说的一样,执行你的赋值操作后,才会会话开始,但是session也会产生的,每刷新一次,或者提交,都会产生一个新的session,如果你赋值后,那么,在这个session结束之前,刷新页面,提交,将不会再触发session_start事件了.什么时候结束?超时,或者手动过期.如果不赋值,刷新页面后,上一个session就会过期了.
为什么每刷一下页面 都会触发session_start事件
首先session的左右我相信你都明白了吧?(就是保存信息。)下面说一下你不明白的地方:当一个新的session开始时,就是再次访问网页,就是就是可能你所谓刷一次页面的时候,ASP.NET应用程序触发一个session_start事件。-------------------再帮你冲一下电(可能你应经懂了),如果session超时或者程序中调用了session.abbandon(),或者ASP.NET应用程序被关闭,都会触发session_end