【问题标题】:PHP session side-effect warning - how to get solve?PHP会话副作用警告 - 如何解决?
【发布时间】:2011-05-28 13:50:06
【问题描述】:

我是 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
    }
}
?>

请原谅我的代码格式不正确 - 似乎无法正确显示。

所以,我不断收到此错误:

警告:未知:您的脚本可能依赖于在 PHP 4.2.3 之前存在的会话副作用。请注意,会话扩展不会将全局变量视为数据源,除非启用了 register_globals。您可以通过分别在第 0 行的 Unknown 中将 session.bug_compat_42 或 session.bug_compat_warn 设置为 off 来禁用此功能和此警告

我假设这意味着我需要更改我的变量名称之一,这样它就不会与会话变量冲突,对吧?这是我读到的,但我不确定要更改哪一个。

谁能帮帮我/请给我看看?

谢谢

osu

【问题讨论】:

    标签: php session


    【解决方案1】:

    这是因为

    session_register("username");  
    

    不推荐使用,自 PHP 5.3 起已弃用。

    如果您希望脚本在不管 register_globals 的情况下工作,您需要改为使用 $_SESSION 数组,因为 $_SESSION 条目会自动注册。如果您的脚本使用 session_register(),它将无法在 PHP 指令 register_globals 被禁用的环境中工作。

    Source.

    众所周知,register_globals 很糟糕,应该始终关闭。

    注册会话变量最常用的方法是使用$_SESSION 超全局,即

    $_SESSION['username'] = $username;
    

    【讨论】:

    • 感谢大家的回复,非常感谢
    【解决方案2】:

    您最好开始摆脱不推荐使用的函数,例如 session_register()。

    使用 $_SESSION 数组,例如

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

    【讨论】:

      猜你喜欢
      • 2011-04-10
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 2013-04-29
      • 2012-06-14
      • 2017-11-22
      • 1970-01-01
      相关资源
      最近更新 更多