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.
Изменить:
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 бесполезен.