0

我不知道为什么这不起作用。我是新手,刚刚学习。

登录.php

<?php

    include 'core/init.php';

    if   (empty($_POST) === false) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        $user = new User();

        if (empty($username) === true || empty($password) === true) {
            echo 'you need to enter a username and password';
        } else if ($user->userExists($username) === false) {
            echo 'we cant find that username. have you registered?';
        } else echo 'ok';
     }

    ?>      <?php

    include 'core/init.php';

    if   (empty($_POST) === false) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        $user = new User();

        if (empty($username) === true || empty($password) === true) {
            echo 'you need to enter a username and password';
        } else if ($user->userExists($username) === false) {
            echo 'we cant find that username. have you registered?';
        } else echo 'ok';
     }

    ?>      <?php

    include 'core/init.php';

    if   (empty($_POST) === false) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        $user = new User();

        if (empty($username) === true || empty($password) === true) {
            echo 'you need to enter a username and password';
        } else if ($user->userExists($username) === false) {
            echo 'we cant find that username. have you registered?';
        } else echo 'ok';
    }

?>  

用户.php

<?php
    require_once 'core/classes/Connect.php';

    class User {

        private $db;

        public function __construct() {
            $this->db = new Connect();
            $this->db = $this->db->dbConnect();
        }

        public function userExists($username) {
            $st = $this->db->prepare("SELECT COUNT(user_id) FROM users WHERE username=?");
            $st->bindParam(1, $username);
            $st->execute();

            if ($st->rowCount() == 1) {
                return true;
            } else return false;    
        }    
    }
?>

我一直在努力学习 OOP,每个人都告诉我最好的学习方式是尝试而不是寻求帮助。我正在尝试构建一个简单的登录,然后让它变得更复杂。

当我输入正确的用户名时,它就echo不行了。相反,echo我们找不到那个用户名。你注册了吗?请提供任何帮助。谢谢

4

1 回答 1

2

我不知道您的Connect-class (尤其是 method rowCount)如何工作,但问题似乎如下:您的查询返回具有给定用户名的 user_ids 的数量,但您计算行数。

更换

$st = $this->db->prepare("SELECT COUNT(user_id) FROM users WHERE username=?");

$st = $this->db->prepare("SELECT user_id FROM users WHERE username=?");

应该做的伎俩。

而且由于您正在学习更多评论:

empty($username) === true等于empty($username)。大多数程序员更喜欢后者(因为它更短)。

userExists此外,将方法声明为静态似乎更有意义。

于 2013-03-25T23:42:09.933 回答