php登录寄存器错误

php登录寄存器错误,php,login,Php,Login,我确实有一些PHP中的OOP代码,应该是登录/注册用户的,注册函数非常有效,但是登录函数不起作用,我无法登录。我还注意到,在数组$\u会话中,我有未定义的索引“login”、“password”。 以下是主页: <?php require_once "libs/user_class.php"; $user = User::getObject(); $auth = $user->isAuth(); if(isset($_POST["reg"])){ $login = $_PO

我确实有一些PHP中的OOP代码,应该是登录/注册用户的,注册函数非常有效,但是登录函数不起作用,我无法登录。我还注意到,在数组
$\u会话中,我有未定义的索引“login”、“password”。
以下是主页:

<?php 
require_once "libs/user_class.php";
$user = User::getObject();
$auth = $user->isAuth();
if(isset($_POST["reg"])){
    $login = $_POST["login"];
    $password = $_POST["password"];
    $reg_success = $user->regUser($login,$password);
}

elseif (isset($_POST["auth"])){
    $login = $_POST["login"];
    $password = $_POST["password"];
    $auth_success = $user->login($login,$password);
    if($auth_success){
        header("Location:index.php");
        exit;
    }
}
?>
<html>
<head>
    <title>REGISTER</title>
</head>
<body>
<?php 
    if($auth){
        echo "Welcome".$_SESSION["login"];
    }
    else{
        echo '<h2>REGISTRATION</h2>
    <form action="index.php" method = "post" name="reg">
        <table>
            <tr>
                <td>Log in</td>
                <td>
                    <input type="text" name = "login" />
                </td>
            </tr>
            <tr>
                <td>Password</td>
                <td>
                    <input type="password" name = "password" />
                </td>
            </tr>
            <tr>
                <td colspan = "2">
                    <input type="submit" name="reg" value = "register" />
                </td>
            </tr>
        </table>
    </form>
    <h2>LOGIN</h2>
    <form action="index.php" method = "post" name="auth">
        <table>
            <tr>
                <td>Log in</td>
                <td>
                    <input type="text" name = "login" />
                </td>
            </tr>
            <tr>
                <td>Password</td>
                <td>
                    <input type="password" name = "password" />
                </td>
            </tr>
            <tr>
                <td colspan = "2">
                    <input type="submit" name="auth" value = "authorize" />
                </td>
            </tr>
        </table>
    </form>';
    }
?>
</body>
</html>

登记
以及用户_class.php:

<?php 
class User{
private $db;
private static $user = null;
private function __construct(){
    $this->db = new mysqli("localhost", "root", "root", "temp");
    $this->db->query("SET NAMES 'utf8'");
}

public static function getObject(){
    if(self::$user === null) self::$user = new User();
    return self::$user;
}

public function regUser($login, $password){
    if($login == "")return false;
    if($password == "")return false;
    $password = md5($password);
    return $this->db->query("INSERT INTO `users` (`login`, `password`) VALUES  ('$login','$password')");
}

private function checkUser($login, $password){
    $result_set = $this->db->query("SELECT `password` FROM `users` WHERE  `login` = '$login'");
    $user = $result_set->fetch_assoc();
    $result_set->close();
    if(!$user) return false;
    return $user["password"] === $password; 
}

public function isAuth(){
    session_start();
    $login = $_SESSION["login"];
    $password = $_SESSION["password"];
    return $this->checkUser($login,$password);
}

public function login($login, $password){
    if($this->checkUser($login, $password)){
        session_start();
        $_SESSION["login"] = $login;
        $_SESSION["password"] = $password;
        return true;
    }
    else return false;
}

public function __destruct(){
    if ($this->db) $this->db->close();
}
}

?>

在数据库中,您使用md5加密存储密码字段。所以,在登录和检查用户功能中检查用户名和密码时,您需要将密码检查为md5($password)


另外,我想知道为什么表单名称和提交按钮名称保持不变。

在使用
$\u SESSION
之前,您是否调用过某个地方?会话是在isAuth函数中启动的