PHP中的Session在默认情况下是使用客户端的Cookie来保存Session ID的,所以当客户端的cookie出现问题的时候就会影响Session了。必须注意的是:Session不一定必须依赖Cookie,这也是Session相比Cookie的高明之处。当客户端的Cookie被禁用或出现问题时,PHP会自动把Session ID附着在URL中,这样再通过Session ID就能跨页使用Session变量了。但这种附着也是有一定条件的,即“php.ini中的session.use_trans_sid = 1“,或者编译时打开打开了“—enable-trans-sid”选项。 用过论坛的朋友都知道,在进入论坛的时候,往往会提示你检查Cookie是否打开,这是因为大多数论坛都是基于Cookie的,论坛用它来保存用户名、密码等用户信息,方便使用。而且很多朋友都认为Cookie不安全(其实不是这样),往往禁用它。其实在PHP程序中,我们完全可以用Session来代替Cookie,它可以不依赖于客户端是否开启Cookie。

可以通过一下几种方案来解决

1.设置php.ini配置文件中的“session.use_trans_sid = 1”,或者编译时打开打开了“—enable-trans-sid”选项,让PHP自动跨页传递Session ID。 1519行

2. 手动通过URL传值、隐藏表单传递Session ID。

3. 用文件、数据库等形式保存Session ID,在跨页过程中手动调用