IE中的会话问题

时间:2011-02-07 07:40:59

标签: php

我已经编写了两个函数setSes()getSes(),在这里我编写了session_start()。除了IE之外,它对所有浏览器都很感兴趣。

function setSes(){
 $res=mysql_fetch_assoc(mysql_query("select * from table1 limit 1"));//data from DB
 $_SESSION['ses1']=$res['name'];//Its not working .... $res['name']='Raj'
 $_SESSION['ses1']="priyabrata";//Its working
}

function getSes(){
 session_start();
 print"<pre>";
 print_r($_SESSION);
}

请得到一些想法

3 个答案:

答案 0 :(得分:1)

您需要先启动会话才能设置变量。您可能正在这样做,但在您链接的代码中,您没有显示调用getSes()或setSes()的顺序,并且您似乎正在动态编辑它,所以我无法真正跟上。

在此处阅读启动会话功能。

http://php.net/manual/en/function.session-start.php

答案 1 :(得分:1)

PHP会话编写一个cookie,称为PHPSESSID或类似的东西。您可以在php.ini中或使用特殊的php函数更改名称。

无论如何,浏览器必须接受cookie才能使会话正常工作。 IE(早期版本,甚至更晚版本)具有强制安全策略,这使得传输cookie变得很困难。

我建议您阅读this文章,该文章对此确切问题进行了全面研究,并提供了解决方案。

我在IE上遇到了这个问题。如果服务器时间戳不正确,或者其他服务器设置对cookie过滤器看起来很“可疑”,则不接受cookie。当然,大多数这些安全设置都可以在IE中更改和关闭,但必须在客户端完成,这是不合适的。

答案 2 :(得分:0)

您的代码意味着您使用getSes()从会话中获取一些价值,如果您想设置它,则使用setSes()。从逻辑上讲,你可以在得到它之前设置一个值,对吗?

但是使用此代码,您在设置var时不会调用session_start()。 在脚本中首先调用session_start(),它可能会更好......