注意:未定义的变量:username

时间:2016-05-18 21:51:57

标签: php mysql globals

我的问题=当我尝试在editor.php中使用时,为什么没有为我的$ username分配值?

我有一个可用的登录系统。一旦用户登录,我想创建一个欢迎行,上面写着“欢迎[INSERT USERNAME HERE]”。目前,我遇到了使用echo来检索变量“$ username”的问题,因为我收到此错误:

  

注意:未定义的变量:第60行的 editor.php 中的用户名。

这是editor.php中的第60行。请注意,editor.php是用户登录成功后所指向的页面

<h4>Welcome <?php  echo $username;?> , to the editor.</h4>

$ username变量在loginAuth.php中声明,这是当用户在login.php上提交他/她的登录详细信息时运行的。

以下是loginAuth.php的相关代码:

<?php
error_reporting(E_ALL);  
ini_set('display_errors', 1); 

//Connect to DB
include_once dirname(__FILE__).'/db_connect.php';
// PHP >= 5.3
include_once __DIR__.'/db_connect.php';



//starts session
session_start();
if (isset($_POST['loginSub'])) {
//Variables declaration
$username = $_POST['user'];
$password = $_POST['password'];

//if username doesnt not equal empty space and password does not equal empty  
space, then...
if(trim($username) != '' and trim($password) != ''){

//Sanitizes whatever is entered 
$username=stripslashes($username);
$password=stripslashes($password);

$username=strip_tags($_POST['user']);
$password=strip_tags($_POST['password']);


$username=mysqli_real_escape_string($conn,$username);
$password=mysqli_real_escape_string($conn,$password);

//SQL query 
$query = mysqli_query($conn, "SELECT * FROM users WHERE user='$username' AND 
password = '$password' ")or die(mysqli_error($conn));
//applies msqli_num_rows to the $query. Counts how many rows 
$numrows=mysqli_num_rows($query);
//if there is a row that matches what has been entered in form, then...
if($numrows > 0){

//initialize session
$_SESSION['login_user']= $username; 
//take them to editor.php   
header("location: editor.php"); // Redirecting To Other Page
exit;
}else{
     echo "Username or password is incorrect.";
    }
}else{  
    echo "Please enter information";
}
}
?>

所以基本上,editor.php页面由于某种原因无法获得$ username var,因为它显然没有价值......尽管我的登录页面成功运行。

根据要求, login.php:

中的HTML表单
 <form id="login" method="POST" action="loginAuth.php">

                    <label for="user"><strong>Login:</strong></label>
                    <input type="text"size=20 autocorrect=off autocapitalize=words name="user">
                    <label for="password" > <strong>Password:</strong></label> 
                    <input type="password" name="password">

                    <input name="loginSub" type="submit" value="Login"> 
                </form>  

以下是我研究的其他问题,但未能适用于我自己的问题:

Reference - What does this error mean in PHP?

PHP: "Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset"

2 个答案:

答案 0 :(得分:4)

您的变量不存在于editor.php

您需要从$_SESSION获取此类内容:

<强> editor.php

<?php
$username = $_SESSION['login_user'];
....
<h4>Welcome <?php  echo $username;?> , to the editor.</h4>

答案 1 :(得分:1)

当用户直接访问时,单个.php文件完全相互独立,就像您重定向它们时一样。

由于您将用户重定向到editor.php,因此您在$username中设置的变量login不存在。处理请求的过程不同。

editor.php需要以某种形式处理用户登录,您可能需要查看PHP会话处理。

//initialize session
$_SESSION['login_user']= $username; 

您将用户名存储在会话变量中;一个选项是通过执行...... {/ p>在editor.php中镜像这个

$username = $_SESSION['login_user'];