Проблема с моим кодом проверки PHP на стороне сервера - PullRequest
1 голос
/ 21 февраля 2011

У меня есть форма в файле register.php, и она отправляет файл registerPost.php.Внутри registerPost.php я проверяю несколько правил проверки, затем, если какое-либо из них помечено, я возвращаюсь на первую страницу и печатаю ошибки.Теоретически это должно работать.Но проверка проходит без проблем, даже когда я оставляю все пустым.

Вот код, о котором идет речь:

        $_SESSION["a"] = "";
        $_SESSION["b"] = "";
        $_SESSION["c"] = "";
        $_SESSION["d"] = "";
        $_SESSION["e"] = "";
        $_SESSION["f"] = "";
        $_SESSION["g"] = "";
        if(empty($userEmail))
            {
                $_SESSION["a"] = "You must enter your email.";
            }
        if(!validEmail($userEmail))
            {
                $_SESSION["a"] = "Improper Email Format";
            }
        if(empty($password))
            {
                $_SESSION["b"] = "You must enter a password.";
            }
        if(strlen($password) < 5 || strlen($password) > 0)
            {
                $_SESSION["b"] = "Password must be at least 5 characters.";
            }
        if($password != $confPassword)
            {
                $_SESSION["c"] = "Passwords do not match";
            }
        if(empty($firstName))
            {
                $_SESSION["d"] = "First Name Required";
            }
        if(empty($lastName))
            {
                $_SESSION["e"] = "Last Name Required";
            }
        if(mysql_num_rows(mysql_query("SELECT * FROM users WHERE email = '$email'")) > 0)
            {
                $_SESSION["f"] = "This email address already exists in our database.";
            }

        if(!empty($_SESSION["a"]) || !empty($_SESSION["b"]) || !empty($_SESSION["c"]) || !empty($_SESSION["d"]) || !empty($_SESSION["e"]) || !empty($_SESSION["f"]))
            {
                header('Location: register.php');
            }

Возможно, есть более простой способ сделать это?

Ответы [ 2 ]

4 голосов
/ 21 февраля 2011

Мне нравится этот способ регистрации всех ошибок:

$errors = array();

if (empty($foo1))
  $errors[] = "foo1 can't be left blank!";
else if (!preg_match(' ... ', $foo1))
  $errors[] = "foo1 was not filled out correctly!";

if (empty($foo2))
  $errors[] = "foo2 can't be left blank!";

// ...

if (empty($errors)) {
  // do what you need
} else {
  // notify the user of the problems detected
}

Вам действительно нужно изменить страницу по заголовку?

1 голос
/ 21 февраля 2011

Я попробовал твой код, и он работает для меня. Догадываясь от $ username, $ email и т. Д., Я думаю, вы проводите некоторую очистку данных $ _POST. Если это так, вы должны сбросить $ username и т. Д., Чтобы увидеть, помещает ли эта процедура что-то в эти переменные.

В любом случае, мне больше нравится этот способ проверки:

$errors = array();
if(empty($username))
{
    $errors['username'] = 'Username cannot be empty!';
}
...
$_SESSION['errors'] = $errors;
if(count($errors) > 0) //Redirect...
...