你的PHP是4.4.X版本的吧,这个应该是它的一个bug首先register_global=off保留你的这个问题在一个网页上有描述 http://www.spiration.co.uk/post/1231/Your%20script%20possibly%20relies%20on%20a%20session%20side-effect解决方法是,先给出$from_url的值 然后$_SESSION[from_url]=$from_url然后在http://blog.csdn.net/spidertiger/archive/2006/07/24/969571.aspx上面给出了更详细的解释,如下In PHP 4.2.3, they made a change to the way that the session code works that results in PHP generating a warning when a session is created. In order to resolve this, we have to update some code in Gallery. This warning has no effect, except that it shows upon screen. You can make it go away by editing your php.ini and setting session.bug_compat_warn to offand restart Apache. 意思就是更改session.bug_compat_warn的值为off,重新启动apache 并且这个是警告信息,没有说明什么错误。
楼上几位麻烦看清帖子再回复,写得很清楚,环境:php5,register_globals 为 off
楼主用phpinfo看看register_globals及PHP版本是多少???(在phpinfo)
http://www.spiration.co.uk/post/1231/Your%20script%20possibly%20relies%20on%20a%20session%20side-effect解决方法是,先给出$from_url的值
然后$_SESSION[from_url]=$from_url然后在http://blog.csdn.net/spidertiger/archive/2006/07/24/969571.aspx上面给出了更详细的解释,如下In PHP 4.2.3, they made a change to the way that the session code works that results in PHP generating a warning when a session is created. In order to resolve this, we have to update some code in Gallery. This warning has no effect, except that it shows upon screen. You can make it go away by editing your php.ini and setting
session.bug_compat_warn to offand restart Apache. 意思就是更改session.bug_compat_warn的值为off,重新启动apache
并且这个是警告信息,没有说明什么错误。
a.php
<?php
session_start();$_SESSION['from_url'] = null;$from_url = 'test2';?>
<a href="b.php">b.php</a>
b.php<?php
session_start();
echo $_SESSION['from_url'];
print_r($_SESSION);
?>结果Array ( [from_url] => )
正常环境下是没有这个问题的.建议还是从PHP的环境配置上下功夫.
phpinfo();查看一下,register_globals有没有被关闭.有时候你可能修改的不是正确的php.ini,或者没有重启web服务器.
$_SESSION['from_url'] = "";
用都可以,你要给他一个实值
给null他会当成是参考效果等同
$varname = "from_url";
@$_SESSION['from_url'] = &$$$varname;这是他的自动注册机制问题
session_start();
$_SESSION['from_url'] = null;
$from_url = 'test2';
echo 111;
echo $a;
flush();
sleep(5);
echo 222;
加入sleep发现,是在脚本执行结束的时候才会出现错误提示,我只知道session在脚本执行结束时会将内存中$_SESSION变量的值写入到sesion文件里,是不是还进行了其他的操作?导致出现这个错误提示,希望能得到确定的答案。
PS:php版本5.2.0
这位朋友说的应该是对的,
有两个地方不明白,麻烦再请教下,
给null他会当成是参考,这个“参考”是指什么?
session的自动注册机制是怎么回事?这个是针对php5的吗?
以前没听说过,google也没有搜到,能否给个连接。
谢谢~
关闭后
( ! ) Notice: Undefined variable: from_url in D:\iis\test2.php on line 5
Call Stack
# Time Memory Function Location
1 0.0024 130128 {main}( ) ..\test2.php:0
<?php
session_start();$_SESSION['from_url'] = null;$from_url = 'test2';
?>
<a href="test2.php">test</a>test2.phpsession_start();echo $_SESSION['from_url'];
echo $from_url;
echo $_SESSION['from_url'];
为空!
我用的是PHP5.2.6