有很多类似的问题,但我无法解决:我尝试在一个包含文件中使用全局变量,如下所示:
included.php:
<?php
function some_function()
{
$GLOBALS['username'] = $_SERVER["REMOTE_USER"];
}
?>
first.php:
<?php
include 'included.php';
some_function()
echo '<p>Hello ' . $GLOBALS['username'] . '!'</p>'
?>
second.php:
<?php
include 'included.php';
echo '<p>Hello ' . $GLOBALS['username'] . '!'</p>'
?>
first.php的输出运行良好,但在second.php中出现了一个错误:
注意:未定义的索引:第36行上/var/www/students/reservations.php中的student_firstname
因此,我的目标是在整个项目中使用全局变量"username",我不想每次都调用some_function(),因为SQL查询中有更多的变量,所以这会花费太长时间。
有什么好方法可以做到这一点吗?或者你能推荐我另一种方法吗?非常感谢。
有这样一个关键字global
用于此目的。但这被认为是一种非常糟糕的做法,违反了封装等
$username = "Test" ;
function some_function(){
global $username ; //Put a global variable into current space.
echo $username ; //Now you can access the global variable.
}
附言:学会将变量作为参数传递到函数中,因为这会让你的生活变得非常轻松。
您可以使用PHP会话,例如,在你的索引页面上有代码;
<?PHP
session_start();
$_SESSION['username']=$_SERVER["REMOTE_USER"];
?>
然后在你所有页面的顶部,你将需要放置;
<?PHP
session_start();
?>
标签上方。
然后你可以通过简单的调用用户名
<?PHP echo $_SESSION['username']; ?> and that will display their username.
来源:做了3年PHP/HTML/CSS开发人员。