用window.open 打开新窗口,新窗口中session值取不到,怎么办 你的php是那个版本的???我记得PHP4.0.0以前的Session不能跨窗口使用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 前些天我也遇到过这种情况,那是因为我家机器上PHP版本太低了,后来重新安装一个新版本的PHP,就都OK了!在你现在这种情况,除了升级PHP就只能用target="_blank"代替了! PHP4的session只对当前打开的浏览器窗口有效(至少在W2K下的IE5和NS6中是这样)。首先我们来建立两个文件。test1.php<?phpsession_start();session_register("count");echo $count=0;?>test2.php<?phpsession_start();echo $count++;?>然后为了避免不必要的影响我们清空浏览器的cache,打开两个浏览器窗口,在第二个浏览器的窗口中执行test1.php,这时我们应该看到浏览器中显示的值是0。继续在第二个浏览器的窗口中执行test2.php,并不断的刷新它,我们就会看到浏览器中的数值在不断的递增,这说明我们的session是起作用的。我们继续看看其他的情况,先在第一个浏览器的窗口中执行test2.php,没有显示继续刷新,仍没有显示。我们再打开第三个浏览器窗口并在其中执行test2.php,也是没有显示,这说明session不能跨窗口运行。那么怎么才能让session可以跨窗口执行呢?我们一起来继续我们的实验。首先,我们来看看使用cookie的情况,同样建立两个文件。test3.php<?phpsetcookie("cookie","This is a cookie.",time()+3600,"/","www.md.hl.cn");?>test4.php<?phpecho $cookie;?>然后我们仍然利用刚才打开的三个浏览器的窗口,先在第二个窗口中执行test3.php。没有任何显示,然后我们在三个窗口中分别执行test4.php,都会显示This is a cookie.这说明使用cookie是可以跨窗口执行的。我们怎么才能让session跨窗口执行呢?其实session也在cookie中保存了session_id(不过session也可以不使用cookie,但这不在本文的讨论范围)。这个cookie的名字与你在php.ini中的session.name的设置有关,缺省时叫"PHPSESSID"。但在IE的cache中却找不到。你可以通过echo $HTTP_COOKIE_VARS["PHPSESSID"]来查看它的值,当然也可以通过setcookie()来设置它。PHP4中可以使用session_set_cookie_params()和session_get_cookie_params()来设置和查看session的cookie设置。但我试了一下不起任何作用,session仍然是关闭浏览器窗口就失效,仍然不能跨窗口运行。我想也许是我调用的方法不对,麻烦那位高手知道给指点一下。最后,我们来继续完成我们的实验。这次要修改我们的文件test1.phptest1.php<?phpsession_start();session_register("count");setcookie("PHPSESSID",session_id(),time()+3600,"/","www.md.hl.cn");echo $count=0;?>然后我们再来重复我们的实验一,哈哈,这次session可以跨窗口使用了吧,并且关闭浏览器session也不会马上失效,上例中的session应该是1小时后失效,但在做实验二时,我吧3600改成120,查看IE的cache,此cookie是2分钟后到期,但不停的刷新test4.php发现实际$cookie这个变量存在的时间却只有大约6秒中,不知道到底是怎么回事。:(麻烦那位高手知道给指点一下。以上所有程序是在Solaris 2.6,PHP 4.0.0,Apache 1.3.12下测试并通过的。我又在Windows 2000 Advanced Server,PHP 4.0.1pl2,IIS 5.0测试了一遍,发现PHP 4.0.1pl2中的session可以跨窗口运行,而且也可以用用session_set_cooie_params()设置session cookie的失效时间。所以我想上面的问题也许只是PHP 4.0.0的一个bug。 用了php-4.3.1还是没用加了setcookie("PHPSESSID",session_id(),time()+3600,"/","192.168.0.234");照样无效 <a class="blue" href=# onClick="javascript:window.open('xxx.php','reg','scrollbars=no,resizable=no,width=200,height=140');return false">XXX</a> 字符串取取出src标签中的值,在线等 php正则高手求救了。。获取一页面的所有dl内容 如何从php内部post到外部php并跳转? 在 Fc5 中安装 mysqli 扩展遇到郁闷问题! 请大家帮忙! 在任何网页都可以发表评论 谁有流量统计比较好的程序, 给在下推荐一个. mysql数据库的. 怎么批量删除文件,超急!!!各为大哥帮帮忙啊 用php读取用户电脑的文件啊 我的mysql一运行mysqld-shareware -install提示Failed to install Service.Why?Winnt+sp4 PHP正则匹配区间内的内容 为什么连不上数据库 帮忙查错
<?php
session_start();
session_register("count");
echo $count=0;
?>test2.php
<?php
session_start();
echo $count++;
?>然后为了避免不必要的影响我们清空浏览器的cache,打开两个浏览器窗口,在第二个浏览器的窗口中执行test1.php,这时我们应该看到浏览器中显示的值是0。继续在第二个浏览器的窗口中执行test2.php,并不断的刷新它,我们就会看到浏览器中的数值在不断的递增,这说明我们的session是起作用的。我们继续看看其他的情况,先在第一个浏览器的窗口中执行test2.php,没有显示继续刷新,仍没有显示。我们再打开第三个浏览器窗口并在其中执行test2.php,也是没有显示,这说明session不能跨窗口运行。那么怎么才能让session可以跨窗口执行呢?我们一起来继续我们的实验。首先,我们来看看使用cookie的情况,同样建立两个文件。test3.php
<?php
setcookie("cookie","This is a cookie.",time()+3600,"/","www.md.hl.cn");
?>test4.php
<?php
echo $cookie;
?>然后我们仍然利用刚才打开的三个浏览器的窗口,先在第二个窗口中执行test3.php。没有任何显示,然后我们在三个窗口中分别执行test4.php,都会显示This is a cookie.这说明使用cookie是可以跨窗口执行的。我们怎么才能让session跨窗口执行呢?其实session也在cookie中保存了session_id(不过session也可以不使用cookie,但这不在本文的讨论范围)。这个cookie的名字与你在php.ini中的session.name的设置有关,缺省时叫"PHPSESSID"。但在IE的cache中却找不到。你可以通过echo $HTTP_COOKIE_VARS["PHPSESSID"]来查看它的值,当然也可以通过setcookie()来设置它。PHP4中可以使用session_set_cookie_params()和session_get_cookie_params()来设置和查看session的cookie设置。但我试了一下不起任何作用,session仍然是关闭浏览器窗口就失效,仍然不能跨窗口运行。我想也许是我调用的方法不对,麻烦那位高手知道给指点一下。
最后,我们来继续完成我们的实验。这次要修改我们的文件test1.phptest1.php
<?php
session_start();
session_register("count");
setcookie("PHPSESSID",session_id(),time()+3600,"/","www.md.hl.cn");
echo $count=0;
?>然后我们再来重复我们的实验一,哈哈,这次session可以跨窗口使用了吧,并且关闭浏览器session也不会马上失效,上例中的session应该是1小时后失效,但在做实验二时,我吧3600改成120,查看IE的cache,此cookie是2分钟后到期,但不停的刷新test4.php发现实际$cookie这个变量存在的时间却只有大约6秒中,不知道到底是怎么回事。:(麻烦那位高手知道给指点一下。
以上所有程序是在Solaris 2.6,PHP 4.0.0,Apache 1.3.12下测试并通过的。
我又在Windows 2000 Advanced Server,PHP 4.0.1pl2,IIS 5.0测试了一遍,发现PHP 4.0.1pl2中的session可以跨窗口运行,而且也可以用用session_set_cooie_params()设置session cookie的失效时间。所以我想上面的问题也许只是PHP 4.0.0的一个bug。
加了setcookie("PHPSESSID",session_id(),time()+3600,"/","192.168.0.234");
照样无效
XXX</a>