PHP会话副作用警告 - 如何得到解决?
我对PHP相当陌生,并且确信这很简单,但我希望以正确的方式进行操作。我有这个脚本:PHP会话副作用警告 - 如何得到解决?
<?php
if ($_POST["username"]=="") {
include($_SERVER['DOCUMENT_ROOT'] ."/login.inc.php");
} else {
$username=$_POST["username"];
$password=$_POST["password"];
session_start();
if ($username=="bob" AND $password=="123"){ $permission="yes";}
$username=$_POST["username"];
session_register("permission");
session_register("username");
if ($permission=="yes"){
// Show stuff
}
}
?>
打扰我的代码时髦的格式 - 似乎无法让它显示正常。
所以,我不断收到此错误:
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0
这我假设意味着我需要改变我的变量名中的一个,它不会与会话变量相抵触?这就是我读的,但我不确定要改变哪一个。
任何人都可以帮忙/请给我看看吗?
感谢
OSU
正是因为
session_register("username");
发生不建议,并弃用PHP 5.3的。
If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.
众所周知,register_globals
是可怕的,应该总是被关闭。
注册一个会话VAR最常见的方法是使用超全局$_SESSION
,即
$_SESSION['username'] = $username;
你最好的摆脱过时的功能,如启动了session_register()。
使用$ _SESSION数组,例如
$_SESSION['username'] = $_POST['username'];
感谢您的答复家伙,大加赞赏 – Osu 2011-01-07 18:14:03