0

サイトにログインしようとすると、スクリプトは間違ったユーザー名またはパスワードを使用して Im を返します。

index.html のヘッド:

<?php
session_start();
require_once 'classes/Membership.php';
$membership = new Membership();
if ($_POST && !empty ($_POST['username']) && !empty ($_POST['password'])) {
$response = $membership->validate_user($_POST['username'], $_POST['password']);
}
?>

index.html のフォーム:

    <div class="login" id="register">
     <form method="POST" action="" accept-charset="utf-8">
      <fieldset>
       <p>
        <label for="username">Username</label><br />
        <input type="text" name="username" value="" id="username">
       </p>
       <p>
        <label for="password">Password</label><br />
        <input type="password" name="password" value="" id="password">
       </p>
      </fieldset>
      <input type="submit" class="button" value="Sign in">
     </form>
    </div>
<?php if(isset($response)) echo "<p class = 'error-msg'>" .$response.".</p>"; ?>

メンバーシップ.php

<?php
require 'MySQL.php';

    class Membership
    {
        function validate_user($username, $password)
        {
            $mysql = new MySQL();
            $ensure_credentials = $mysql->verify_in_db($username,md5($password));

            if ($ensure_credentials)
            {
                $_SESSION['status'] = 'authorized';
                header("location: index_member.php");
            }
            else return "Please enter a correct username and password";
        }
    }

MySQL.php

<?php
require_once 'includes/constants.php';

    class MySQL
        {
            private $conn;

            function __construct()
            {
             $this->conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) 
             or die ('There was a problem connecting to the database.');
            }

            function verify_in_db($username, $password)
            {
                $query = "SELECT * 
                                FROM users
                                WHERE username = ? AND password = ?
                                LIMIT 1";
                if ($stmt = $this->conn->prepare($query))
                {
                $stmt->bind_param('ss', $username, $password);
                $stmt->execute();

                    if ($stmt->fetch())
                    {
                        $stmt->close();
                        return true;
                    }
                }
            }
        }

定数.php

<?php
// Define constants

define ('DB_SERVER', 'localhost');
define ('DB_USER', 'root');
define ('DB_PASSWORD', '');
define ('DB_NAME', 'membership');

db パスワードはありません。混乱しないでください。xamppの標準DB。私が使用しようとしている資格情報は 100% 正しく、SQL 定数も同様です。

4

1 に答える 1

-1

あなたが言ったようにあなたのパスワードが原因かもしれません。これは

'パスワード'

しかし、MD5のため、このようになるはずです

'fglsdgjdfnfjlsmg905760657604657604jtvymwy'
于 2013-03-30T17:32:40.580 に答える