php - 未设置登录过程变量

标签 php mysql arrays variables authentication

所以我目前的登录页面有问题,我试图让登录过程返回一个变量,这样我就可以在我的登录页面上显示错误代码,但看不到我哪里出错了...

输入错误的登录凭据时出现 PHP 错误

注意: undefined variable :C:\inetpub\wwwroot\reveal\store\qadmin\login\login.process.php 第27行输出

登录表单

<div class="widget-body">

    <!-- Form -->
<?php

    if(isset ($loginerror)) {

        ?>

            <div style="width:100%; text-align:center;">
                <span style="padding-bottom: 10px; color:red;">Successfully Logged Out</span>
            </div>

        <?php

    } else {

    ?>

        <span>Either No Login Data or something is horribly wrong.</span><br /><br />

    <?php

    };

?>
<form method="POST" action="index.php">
    <label>Username or Email</label>
    <input id="username" type="text" name="username" class="input-block-level" placeholder="Your Username or Email address"/> 
    <label>Password</label>
    <input id="password" type="password" name="password" class="input-block-level margin-none" placeholder="Your Password" />
    <div class="separator bottom"></div> 
    <div class="row-fluid">
        <div class="span8">
            <div class="uniformjs"><label class="checkbox"><input type="checkbox" value="remember-me">Remember me</label></div>
        </div>
        <div class="span4 center">
            <button class="btn btn-block btn-inverse" id="submit" name="submit" type="submit">Sign in</button>
        </div>
    </div>
</form>
<!-- // Form END -->

索引.php

session_start(); 

global $error;

// Simple check if the user is logged in or not
if (isset($_POST['submit'])) {
    include("login.process.php");

    $checkUser = login($_POST['username'], $_POST['password']);

    if ($checkUser == "No") {


        $error = "true";

    } else if (is_array($checkUser)) {

        $_SESSION['user'] = $checkUser;
        $_SESSION['loggedin'] = true;

    }
}

if (isset($_SESSION['loggedin'])) {

    include ("home.php");

}

if (!isset($_SESSION['loggedin'])) {
    include ("login.php");
}

Login.process.php

function login($username, $password) {

            include("../config.php");

            // Open up a new MySQLi connection to the MySQL database
            mysql_connect($dbHost, $dbUsername, $dbPassword);
            mysql_select_db($dbTable);

            // To protect MySQL injection (more detail about MySQL injection)

            $username1 = stripslashes($username);
            $password1 = stripslashes($password);
            $username2 = mysql_real_escape_string($username1);
            $password2 = mysql_real_escape_string($password1);
            $password3 = md5($password2);
            $sql="SELECT * FROM `users` WHERE username='$username2' AND password='$password3'";
            $result=mysql_query($sql);

            if ($result > 0) {

                while($logincheck = mysql_fetch_array($result)) {
                $output = array('username' => $username2, 'uid' => $logincheck['id'], 'superadmin' => $logincheck['superadmin']);
                };

                return $output;

            } else {

                $loginerror = "Login Error";
                return $loginerror;

            };
}

我可能正在做一些愚蠢的事情,但无法弄清楚为什么会返回该错误!!!!!!

最佳答案

因此可能由于某种原因您的查询不起作用,因此永远不要设置 $output

您需要做的就是在循环之前设置您的$output,所以如果您的循环不起作用,您已经将$output设置为数组()

if (mysql_num_rows($result) > 0) {

    $output = array(); // here is the trick

    while($logincheck = mysql_fetch_array($result)) {
        $output = array('username' => $username2, 'uid' => $logincheck['id'], 'superadmin' => $logincheck['superadmin']);
    };

    return $output;

} else {

    $loginerror = "Login Error";
    return $loginerror;

};

关于php - 未设置登录过程变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18911851/

相关文章:

c++ - 长度超过 255 字节的字符串可以用作 ODBC 准备语句参数值吗?

java - 计算数组访问次数

java - 使用数组、列表还是数千个字符串?

sql - 如何在 postgres 中更新 JSONB 数组

php - Ubuntu Screen 命令无法识别 Lumen Queue 命令

php - pdo_mysql 在 centos 6.7 上不可用

mysql - 加入 m :n MySQL relation with every entity in own column

php - sql db 的日期失败

php - 如何将周数和年份转换为 unix 时间戳?

调用 Volley 时出现 PHP 500 内部服务器错误