PHP代码不显示它应该是什么

时间:2012-03-12 23:51:22

标签: php validation email foreach user-registration

好的,所以我正在上传图片上传网站......现在我正在为网站注册工作。它几乎完全用 PHP 编写。我遇到的问题是在辅助if语句的else语句中(以if (empty($register_email)开头的那个)...有一个问题,我似乎无法找到解决方案。

以下是它的作用:

  • 检查电子邮件是否有效(如果不是,它将错误文本添加到$errors阵列
  • 检查它是否比我想要的长度更长。
  • 通过另一个PHP脚本文件中的单独函数检查数据库中是否已存在该电子邮件。

如果存在任何这些错误,则应该通过脚本底部的foreach语句显示它们。但是,我的问题是......它没有显示错误。实际上......除了上面的标题外,它会使屏幕留空。

<?php

    if (isset($_POST['register_email'], $_POST['register_name'], $_POST['register_password'])) {

        $register_email = $_POST['register_email'];
        $register_name = $_POST['register_name'];
        $register_password = $_POST['register_password'];

        $errors = array();

        if (empty($register_email) || empty($register_name) || empty($register_password)) { // **||** means "or"

            $errors[] = 'All fields are required';

        } else {

            if (filter_var($register_email, FILTER_VALIDATE_EMAIL) == false) {
                $errors[] = 'Email address not valid';      
            }

            if (strlen($register_email) > 255 || strlen($register_name) > 35 || strlen($register_password) > 35) {
                $errors[] = 'One or more fields contains too many characters';
            }

            if (user_exits($register_email)) {
                $errors[] = 'That email has already been registered';
            }

        }


        if (!empty($errors)) { //If errors do exist
            foreach($errors as $error) {
                echo $error, '<br />';
            }
        } else {
            //register our user 
        }

    }

    ?>

现在有一件事我已经过测试,以确保它不是函数的问题(关于if (empty($register_email)...)是我已经完成了这个

if (filter_var($register_email, FILTER_VALIDATE_EMAIL) == false) {
                    $errors[] = 'Email address not valid';
                              echo 'Email address is not valid';        
                } else {
                            echo 'Email address is valid';

它确实正常工作,它回应了正确的结果。但是,当我尝试通过foreach语句(我必须这样做来显示多个错误)时,它不起作用。

P.S。我已经去了3个不同的网站进行语法检查,一切都检查好了。                     }

1 个答案:

答案 0 :(得分:1)

尝试

if(count($errors) > 0)

我不知道empty()是否适用于所有情况。