PHP не говорит мне, что пользователь уже зарегистрирован

0

edit: Я, наконец, исправил это! После проверки наличия дубликата электронной почты или имени я указал, что имя/адрес электронной почты уже зарегистрирован, а затем я создал оператор перенаправления, чтобы перенаправить пользователя обратно на страницу signup.php, и поэтому у меня нет времени быть умеет читать его :) Надеюсь, это поможет кому-то еще, кто просматривает это сообщение :) Спасибо за вашу помощь!

У меня простая форма регистрации, которая работает отлично. Он проверяет, существует ли пользователь в таблице/базе данных, и если он не подписывает их, иначе он подписывает их. Единственная проблема заключается в том, что он не говорит пользователю, что есть другой пользователь в базе данных с тем же именем и/или электронной почтой. У меня есть функция mysqli_errno(), чтобы сообщить мне, есть ли какие-либо ошибки, но поскольку нет, это не дает мне ошибок. Странно то, что если какое-либо из полей остается пустым, оно говорит мне, что я должен заполнить все поля, что правильно!

Вот мой код регистрации: HTML-форма:

<form class="form" action="register.php" method="post">
                <div class="formrow">
                    <label> Full Name </label><input name="name" class="formfield name" type="text" />
                </div>
                <div class="formrow">   
                    <label> Email (@wbhs.co.za or @wghs.co.za)</label><input name="email" class="formfield email" type="email" />
                </div>
                <div class="formrow">   
                    <label> Password (Minimum 8 characters)</label><input name="password" class="formfield pass" type="password" />
                    </div>
              <div class="formrow"> 
                    <label> Confirm Password </label><input class="formfield pass" type="password" name="cPassword"/>      
                </div>
                <input type="submit" name="submit" value="Sign Up" class="button pullright submit">

            <p><br /></p>
            </div>
            <p><br /></p>
            <div class="contentfooter">
              <label>Sign Up Form</label> <a class="callright">Enjoy The Connection! Be Connected</i></a>
              </form>

php код регистрации:

session_start();
        include ("database/connect.php");

        if (isset($_POST['name']) && isset($_POST['password']) && isset($_POST['email'])) {
        $name = strip_tags(mysqli_real_escape_string($conn, $_POST['name'])));
        $email = strip_tags(mysqli_real_escape_string($conn, $_POST['email'])));
        $password = strip_tags(mysqli_real_escape_string($conn, $_POST['password'])));
        $cPassword = strip_tags(mysqli_real_escape_string($conn, $_POST['cPassword'])));
    }

        if(isset($_POST['submit'])) {

        if ($name == "" or $email == "" or $password == "" or $cPassword == "") {
            echo "<div style='color:red'>No fields can be left blank!</div>";
        } else if ($name != "" && $email != "" && $password != "" && $cPassword != "") {
            $queryCheck = mysqli_query($conn, "SELECT * FROM users WHERE name='$name' AND email='$email'");
            if (mysqli_num_rows($queryCheck) < 1) {
                mysqli_query($conn, "INSERT INTO users (name, email, password) VALUES ('$name','$email', '$password')") or die("Error: " . mysqli_errno());
                header('location:index.php');
        } } else if (mysqli_num_rows($queryCheck) > 0){
            echo "<div style='color:red'>" . mysqli_num_rows($queryCheck) or die("Error: " . mysqli_errno());
            header('location:register.php');
        }
    }

У меня также есть аналогичная проблема с моим кодом входа, HTML-код в основном тот же, за исключением необходимых изменений, таких как атрибут действия, установленный для login.php

PHP-код:

session_start();
    include('database/connect.php');

    echo $_SESSION['id'];

    if (isset($_POST['submit'])) {
        if  (isset($_POST['email']) && isset($_POST['password'])) {
            $email = strip_tags(mysqli_real_escape_string($conn, $_POST["email"]));
            $password = strip_tags(mysqli_real_escape_string($conn, $_POST["password"]));
        }

            $sql = "SELECT * FROM users WHERE email='$email' AND password='$password'";
            $result = mysqli_query($conn, $sql);
            $count = mysqli_num_rows($result);

            if ($count == 1) { 
            $_SESSION['id'] = $id;
            $_SESSION['email'] = $email;
            $_SESSION['password'] = $password;
            header('location:index.php');
    } else {
        echo "Email/Password is incorrect";
    }
}

Если я укажу адрес электронной почты и пароль, которые являются зарегистрированными/в таблице базы данных, он перенаправляет меня на индексную страницу, что является правильным. Но если я введу неправильное имя пользователя или пароль, он просто обновляет страницу и ничего не говорит мне !!! PLZ помочь! Я не могу это исправить :)
Thanx заранее :)

PS: Все в порядке с файлом connect.php.

  • 0
    Это основной способ устранения неполадок. Что вы сделали, чтобы устранить это?
  • 0
    Когда вы запускаете базу данных, она возвращает какую-то строку?
Показать ещё 3 комментария
Теги:

1 ответ

0

Изменить:

if ($name == "" or $email == "" or $password == "" or $cPassword == "") {
        echo "<div style='color:red'>No fields can be left blank!</div>";
    } else if ($name != "" && $email != "" && $password != "" && $cPassword != "") {
        $queryCheck = mysqli_query($conn, "SELECT * FROM users WHERE name='$name' AND email='$email'");
        if (mysqli_num_rows($queryCheck) < 1) {
            mysqli_query($conn, "INSERT INTO users (name, email, password) VALUES ('$name','$email', '$password')") or die("Error: " . mysqli_errno());
            header('location:index.php');
    } } else if (mysqli_num_rows($queryCheck) > 0){
        echo "<div style='color:red'>" . mysqli_num_rows($queryCheck) or die("Error: " . mysqli_errno());
        header('location:register.php');
    }

к

if ($name == "" or $email == "" or $password == "" or $cPassword == "") {
        echo "<div style='color:red'>No fields can be left blank!</div>";
} else{
        $queryCheck = mysqli_query($conn, "SELECT * FROM users WHERE name='$name' AND email='$email'"); 
        if (mysqli_num_rows($queryCheck) < 1) {
            mysqli_query($conn, "INSERT INTO users (name, email, password) VALUES ('$name','$email', '$password')") or die("Error: " . mysqli_errno());
            header('location:index.php');
        }else{
            echo "<div style='color:red'>" . mysqli_num_rows($queryCheck) or die("Error: " . mysqli_errno());
            header('location:register.php');
        }
}

Ваш статус if/else бесполезен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню