2015-01-18 2 views
0

Я пытался создать регистрационную форму, и я пробовал несколько методов, но последнее, что я добавил к ней, это строка else if ($ status = "OK") , Ниже приведена часть моего кода, пожалуйста, помогите, я все еще новичок в кодировании;php - данные по-прежнему отправляются после подтверждения возврата false

<?php 
$surnameErr = $firstnameErr = $usernameErr = $emailErr = $passwordErr = $password1Err = ""; 
$surname = $firstname = $username = $email = $password = $password1 = ""; 
$status = "OK"; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["surname"])) { 
    $surnameErr = "Surname is required"; 
    $status = "NOTOK"; 
    } 
    else { 
    $surname = test_input($_POST["surname"]); 
     if (!preg_match("/^[a-zA-Z ]*$/",$surname)) { 
     $surnameErr = "Only letters and white space allowed"; 
     $status = "NOTOK"; 
     } 
    } 

    if (empty($_POST["firstname"])) { 
     $firstnameErr = "First Name is required"; 
     $status = "NOTOK"; 
    } 
    else { 
    $firstname = test_input($_POST["firstname"]); 
     if (!preg_match("/^[a-zA-Z ]*$/",$firstname)) { 
      $firstnameErr = "Only letters and white space allowed"; 
      $status = "NOTOK"; 
     } 
    } 

    if (empty($_POST["username"])) { 
    $usernameErr = "Username is required"; 
    $status = "NOTOK"; 
    } else { 
    $username = test_input($_POST["username"]); 
    } 

    if (empty($_POST["email"])) { 
    $emailErr = "Email is required"; 
    $status = "NOTOK"; 
    } else { 
    $email = test_input($_POST["email"]); 
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     $emailErr = "Invalid Email format"; 
     $status = "NOTOK"; 
     } 
    } 

    if (empty($_POST["password"])) { 
    $passwordErr = "Password is required"; 
    $status = "NOTOK"; 
    } 

    if (empty($_POST["password1"])) { 
    $password1Err = "Repeat password to confirm"; 
    $status = "NOTOK"; 
    } 

    if ($password != $password1){ 
     echo "<script>alert('Password does not match')</script>"; 
     $status = "NOTOK"; 
    } 

    $connection = mysqli_connect("localhost", "root", "", "church") or die(mysqli_error()); 

    $checkuser = mysqli_query ($connection,"SELECT * FROM signup WHERE username = '$username'"); 
    if (mysqli_num_rows ($checkuser) > 0){ 
     echo "<script>alert('$username already exist in our database, please enter another one')</script>"; 
     $status = "NOTOK"; 
    } 

    $checkemail = mysqli_query ($connection,"SELECT * FROM signup WHERE email = '$email'"); 
    if (mysqli_num_rows ($checkemail) > 0){ 
     echo "<script>alert('$email already exist in our database, please enter another one')</script>"; 
     $status = "NOTOK"; 
    } 

    else if ($status = "OK"){ 
     $password=md5($password); 
     $datainsert = mysqli_query ($connection, "INSERT INTO signup (surname, firstname, username, email, password) VALUES ('$surname', '$firstname','$username','$email','$password')") or die(mysqli_error()); 
      echo "<script>alert('Sign Up Successful!')</script>"; 
     } 
    } 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
?> 
+0

с тегом 'phpmyadmin' почему? –

+0

Не могли бы вы добавить дополнительную информацию к своему сообщению. Какие предупреждения вы видите при запуске этой страницы? Какие из них вы ожидаете увидеть? Есть ли какая-то функция в этом коде? Похоже, у вас есть дополнительная закрытая скобка после вашего else, если условие. – KHeaney

+0

Это полный код – Segun

ответ

1

Ваше состояние

if ($status = "OK") 

всегда будет верно, потому что вы делаете это задание, а не сравнение. Вам нужно использовать «==», чтобы проверить значение $ status.

Как это:

if ($status == "OK") 
1
else if ($status = "OK"){ 

Эта строка означает "Установить $ статус до значения "OK" и вернуть это значение". Это всегда будет верно, если вы не установите $ status в значение, которое PHP считает пустым (0, false, NULL, пустая строка и т. Д.).

Это должно быть else if ($status == "OK"){ для работы.

На боковой ноте вы можете избежать этого класса ошибок, если вы поместите вызов константы или функции/метода слева от теста. Поскольку вы не можете назначать значения вызовам или константам функции/метода во время нормального выполнения, код будет терпеть неудачу с фатальной ошибкой, которая тогда довольно легко отлаживается.

else if ("OK" = $status){ // Will fatal with a line number. Fixable in 2 seconds flat 
Смежные вопросы