Что не так с этим кодом PHP / MySQL? - PullRequest
0 голосов
/ 30 марта 2012
        if(!empty($username) && !empty($email) && !empty($password) && !empty($confirm_password)){
        $username = htmlentities($username);
        $username = stripslashes($username);
        $username = strip_tags($username);
        $username = mysql_real_escape_string($username);
        $username = preg_replace("[^A-Za-z0-9]", "", $username);

        $email = htmlentities($email);
        $email = stripslashes($email);
        $email = strip_tags($email);
        $email = mysql_real_escape_string($email);
        $email = preg_replace("[^A-Za-z0-9]", "", $email);

        if(strstr($email, "@") && strstr($email, ".")) {
            require("$baseURL/scripts/connect.php");
            $checkemail = mysql_query("SELECT * FROM users WHERE email='$email'") or die(mysql_error());
            $numrows_checkemail = mysql_num_rows($checkemail);
            if($numrows_checkemail > 0) {
                require("$baseURL/scripts/connect.php");
                $checkusername = mysql_query("SELECT * FROM users WHERE username='$username'") or die(mysql_error());
                $numrows_checkusername = mysql_num_rows($checkusername);
                if($numrows_checkusername > 0) {
                    if($password == $confirm_password) {
                    $hashpass = md5(md5($password));
                        //All set to insert into the db
                        require("$baseURL/scripts/connect.php");
                        mysql_query("INSERT INTO users (username, email, password) VALUES ('$username', '$email', '$hashpass')") or die(mysql_error());

                        $this->noticeMsg = "You have been signed up successfully!";
                    } else {
                        $this->errorMsg = "Uh-oh, looks like your passwords do not match!";

                    }
                } else {
                    $this->errorMsg = "Oops, looks like that username is already in use! Please pick a different username.";

                }
            } else {
                $this->errorMsg = "That email is already in use, please sign up with another email.";

            }
        } else {
            $this->errorMsg = "Please enter a valid email address!";

        }
    } else {
        $this->errorMsg = "Please fill in all the fields!";

    }

Я получаю сообщение об ошибке: «Это письмо уже используется, пожалуйста, зарегистрируйтесь с другим письмом». даже если нужный файл «требуется» и правильно подключен к базе данных. Проблема, скорее всего, связана с частью $ numrows_checkemail, потому что когда я использую if($numrows_checkemail == 0), она работает просто отлично. Почему не работает символ «>»? Я делаю что-то неправильно? Спасибо

Ответы [ 2 ]

1 голос
/ 30 марта 2012

> изменяет вашу логику;

$numrows_checkemail > 0 - истина, если хотя бы один пользователь с таким адресом электронной почты уже существует в базе данных (т.е. если их больше нулястрок в базе данных с этим электронным письмом)

$numrows_checkemail == 0 имеет значение true, если пользователь с таким электронным письмом уже не существует в базе данных (т. е. если в базе данных нет строк с этимэлектронная почта)

1 голос
/ 30 марта 2012

if($numrows_checkemail > 0) вернет true, только если $ numrows_checkemail больше 0.
Вам нужно проверить на $numrows_checkemail == 0 или empty($numrows_checkemail)

...