全局变量不适用于PHP

时间:2012-11-19 04:45:36

标签: php

我有一个页面header.php,在很多方面,它为我的网站用户提供了一个登录的地方。它加载,设置,数据库功能和CSS文件。在设置文件中,我声明了一个全局变量$ username。在header.php中,我有以下代码:

if(!isset($username)){
  echo'<div class = "loginSpace">';
  echo'
  <form action = "checkLogin.php" method = "post">
  Username: <input type = "text" name = "username" size = 14/>
  <br>Password: <input type = "password" name = "pass" size = 14 />
  <input type = "submit" value = "Sign In"/>
  </form>
  </div>';
}
else{
     $result = mysql_query("SELECT * FROM {$db_prefix}Users WHERE Username = '{$username}'");
     $userInfo = mysql_fetch_array($result);
     echo '<div class = "loginSpace">
     Welcome ' . $userInfo['FirstName'] .'
     <form action = "index.php" method = "post"> '; 
     $username = "";
     echo'<input type = "submit" value = "Log out"/>
     </form>
     </div>';
     }

在checklogin中,我有:

$username = $_POST['username'];
$password = $_POST['pass'];
require_once('Header.php');

当您被重定向到checkLogin.php时,会保留用户名并显示正确的“标题”,但是,如果您单击链接转到该站点的其他页面,则会忘记用户名。

< p> 我忘记了什么吗?感谢。

2 个答案:

答案 0 :(得分:6)

我不明白你的问题但是 你有没有在header.php中将用户名声明为全局变量?如果是这样,在每个页面中,如果你包括header.php,你首先写,

global $header;

然后使用变量$ header。

网页是无状态的,因此为了维护状态,您可以使用cookie或会话或隐藏字段。

答案 1 :(得分:1)

在另一个链接中,如果您要在永久页面用户post上访问用户名,则忘记用户名,因为您使用SESSION

你应该先检查

if(isset($_POST['username']) && isset($_POST['pass']))  {
    $username = $_POST['username'];
   $password = $_POST['pass'];

}

$result = mysql_query("SELECT * FROM {$db_prefix}Users WHERE Username = '{$username}'");
                                                 ^---there should be space