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");
}

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;

            };
}

私はおそらくばかげたことをしているのですが、なぜそのエラーが返されるのかわかりません!!!!!

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 に答える