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.

Source

众所周知,register_globals是可怕的,应该总是被关闭。

注册一个会话VAR最常见的方法是使用超全局$_SESSION,即

$_SESSION['username'] = $username; 
+0

感谢您的答复家伙,大加赞赏 – Osu 2011-01-07 18:14:03

你最好的摆脱过时的功能,如启动了session_register()。

使用$ _SESSION数组,例如

$_SESSION['username'] = $_POST['username'];