2

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

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

Notice: Undefined variable: output in C:\inetpub\wwwroot\reveal\store\qadmin\login\login.process.php on line 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");
}

登录.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;

            };
}

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

4

4 回答 4

1

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

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

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;

};
于 2013-09-20T08:15:44.960 回答
1

您收到此错误是因为当您的登录凭据错误时,您的表上没有任何记录。因此,只需更改您的 if 条件以计算结果中的行数即可消除错误。Login.process.php

if (mysql_num_rows($result) > 0) {

代替:

if ($result > 0) { 
于 2013-09-20T08:19:19.240 回答
0

尝试这个

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) {

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

                return $output;

            } else {

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

            };
}
于 2013-09-20T08:48:50.267 回答
-1

登录过程

public function index()
{   
if($this->input->post())
    {
        $this->form_validation->set_rules('user_email', 'Email Address', 'required|valid_email');
        $this->form_validation->set_rules('user_password', 'Password', 'required');
        if ($this->form_validation->run() == TRUE)
        {
            $post=$this->input->post();
            $clean = $this->security->xss_clean($post);
            $check=$this->CM->userAuthentication($clean);
             if($check!='success')
              { 
                $this->session->set_flashdata('msg',array('message'=> "$check",'class' =>'alert alert-danger'));
                redirect('login');
              }else
                {
                    redirect('dashboard');
                }
        }else
        {
            $this->load->view('sign-in');
        }
    }else
    {
        $this->load->view('sign-in');
    }
}
于 2018-10-01T13:22:34.310 回答