【问题标题】:PHP can't pass a variable from one file to an include file : Undefined variablePHP 无法将变量从一个文件传递到包含文件:未定义的变量
【发布时间】:2015-10-18 22:02:51
【问题描述】:

您好,我尝试了一些我在 SO 上看到的解决方案,但似乎都没有解决我的问题。

我的登录页面 (login.php) 中有一个变量 $C_userUsername,我试图将其传递给包含文件 (head.php强>)。这个想法是,成功登录后,用户名将显示在页面上。

这里是一些代码。

login.php:

 if ($valid) {

             global $C_userUsername;

             $T_userUserName = trim($userUsername);

             $C_userUsername = htmlentities($T_userUserName);


             } else {

               echo "<br>Invalid user name or password<br>";
            }

head.php:

echo "<ul>";
echo "<li id='regLi'><a href='registration.php'>Register</a></li>";
echo "<li id='onLi'><a href='login.php'>Login</a></li>";
echo "<li id='userLi'><a href='#'>$C_userUsername  is logged in</a></li>";

echo "</ul>";

【问题讨论】:

  • 使用错误报告 php.net/manual/en/function.error-reporting.php - 不知道 $valid$userUsername 是在哪里定义的或如何包含它们。
  • 这一切都发生在理智的执行中吗? PHP 变量,无论是否为全局变量,仅在执行范围内可用。将值存储在会话中或一些存储之王将解决您的问题
  • 代码的第二个 sn-p,来自 head.php,是在函数内定义的,还是在 login.php 的函数内定义的 included?如果是这样,那可能是您的问题,因为PHP variable scope 规则规定局部变量(在函数中初始化的任何变量)默认情况下是该函数的本地变量,并且不会从全局范围显式导出。由于include 构造继承了调用范围,因此在函数内部使用include 'head.php' 会使$C_userUsername 默认成为局部变量。

标签: php variables scope include


【解决方案1】:

根据需要编写代码的两种方法。 第一个如下:

$_SESSION['user_name']=$user_name;

要使用全局变量,您必须包含要访问变量的页面。

$user_name="user name";
include('file_name.php'); 

在 file_name.php 文件中,您必须访问变量,如

$user_name=$GLOBALS['user_name'];

【讨论】:

    【解决方案2】:

    将其保存在$_SESSION 中。您可以检查是否设置了session,如果是,则回显会话值。

    $_SESSION['username'] = $username
    

    在用户登录后设置。

    echo $_SESSION['username'] 
    

    你想在哪里显示用户他的用户名。

    【讨论】:

    • 天才!这就是会议的意义所在。感谢现在工作。
    • @MauriceGreenland 很棒,但找出真正的问题以及您的代码最初失败的原因总是很好。
    • @Fred-ii- 这是真的。我不明白为什么它不起作用。我的理解是,如果您将变量声明为全局变量,那么您可以在其他地方(其他文件)使用它。 $valid 只是一个标志,当验证通过时为真。 login.php 中的脚本很好地通过了验证,这就是为什么我没有将所有其余的脚本放在它上面。
    • @MauriceGreenland 使用错误报告会在您的开发过程中有所帮助。记住这一点以备后用;-) cheers
    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多