验证php表单

时间:2013-06-29 11:26:28

标签: php forms validation

<?php
include('backoffice/dbconnect.php');
if(isset($_POST['contact_submitted']))
{
    $nome      = $_POST["name"];
    $email   = $_POST["email"];
    $mensagem  = $_POST["message"];
    if (empty($nome)) {
        $noname = '<span  class="error">Insira o seu nome!</span></br>';
        echo $noname;
    }
    if (empty($email)) {
        $noemail = '<span  class="error">Insira o seu email!</span></br>';
        echo $noemail;
    }
    if (empty($mensagem)) {
        $nomensagem = '<span  class="error">Insira uma mensagem!</span></br>';
        echo $nomensagem;
    }
    else
    {
        global $email;
        mail ("pedrofidalgo@live.com.pt","$nome, Contato Turismo Murtoseiro",
              "Nome: $nome\n Email: $email\n Mensagem: $mensagem\n");

        $sucesso = '<span  class="yes">Mensagem enviada com sucesso!</span>';
        echo $sucesso;
    }
} //END IF
?>

这段代码有什么问题?我想验证所有字段,如果它们都不为空,则发送消息。如果所有都是空的,那就好了,但如果i $ mensagem得到了什么,它会说“echo $ sucesso;”但所有其他领域都是空的,所以它不会发生..

3 个答案:

答案 0 :(得分:2)

if (empty($nome)) {
    $noname = '<span  class="error">Insira o seu nome!</span></br>';
    echo $noname;
}
else if (empty($email)) {
    $noemail = '<span  class="error">Insira o seu email!</span></br>';
    echo $noemail;
}
else if (empty($mensagem)) {
    $nomensagem = '<span  class="error">Insira uma mensagem!</span></br>';
    echo $nomensagem;
}
else
{
    global $email;
    mail ("pedrofidalgo@live.com.pt","$nome, Contato Turismo Murtoseiro",
                    "Nome: $nome\n Email: $email\n Mensagem: $mensagem\n"
    );
    $sucesso = '<span  class="yes">Mensagem enviada com sucesso!</span>';
    echo $sucesso;
}

仅适用于条件ifelse

答案 1 :(得分:0)

if (empty($nome)) {
    $noname = '<span  class="error">Insira o seu nome!</span></br>';
    echo $noname;
}
if (empty($email)) {
    $noemail = '<span  class="error">Insira o seu email!</span></br>';
    echo $noemail;
}
if (empty($mensagem)) {
    $nomensagem = '<span  class="error">Insira uma mensagem!</span></br>';
    echo $nomensagem;
} 
if(!empty($nome) && !empty($email) && !empty($mensagem))
{
    global $email;
    mail ("pedrofidalgo@live.com.pt","$nome, Contato Turismo Murtoseiro",
                    "Nome: $nome\n Email: $email\n Mensagem: $mensagem\n"
    );
    $sucesso = '<span  class="yes">Mensagem enviada com sucesso!</span>';
    echo $sucesso;
}

如果多个字段为空,这也会显示多个验证错误。 这就是为什么我使用简单的if语句而不是if else if..else语句

答案 2 :(得分:0)

这是因为你错过了ifs之间的else陈述......

<?php
    include('backoffice/dbconnect.php');
    if(isset($_POST['contact_submitted']))
        {
            $nome      = $_POST["name"];
            $email   = $_POST["email"];
            $mensagem  = $_POST["message"];
            if (empty($nome)) {
                $noname = '<span  class="error">Insira o seu nome!</span></br>';
                echo $noname;
            } else if (empty($email)) {
                $noemail = '<span  class="error">Insira o seu email!</span></br>';
                echo $noemail;
            } else if (empty($mensagem)) {
                $nomensagem = '<span  class="error">Insira uma mensagem!</span></br>';
                echo $nomensagem;
            } else {
                global $email;
                mail ("pedrofidalgo@live.com.pt","$nome, Contato Turismo Murtoseiro",
                "Nome: $nome\n Email: $email\n Mensagem: $mensagem\n"
            );
            $sucesso = '<span  class="yes">Mensagem enviada com sucesso!</span>';
            echo $sucesso;
        }
    } //END IF
?>

但这只会一次显示一条错误消息。 您可以设置一个错误变量并在其中存储错误字符串,然后检查此字符串是否为空,如果是,则发送电子邮件等,如果不是回显字符串

<?php
    include('backoffice/dbconnect.php');
    if(isset($_POST['contact_submitted']))
        {
            $nome      = $_POST["name"];
            $email     = $_POST["email"];
            $mensagem  = $_POST["message"];
            // initialize error variable
            $error     = '';
            if (empty($nome)) {
                $error .= '<span  class="error">Insira o seu nome!</span></br>';
            } if (empty($email)) {
                $error .= '<span  class="error">Insira o seu email!</span></br>';
            } if (empty($mensagem)) {
                $error .= '<span  class="error">Insira uma mensagem!</span></br>';
            }
            if ($error == '') {
                global $email;
                mail ("pedrofidalgo@live.com.pt","$nome, Contato Turismo Murtoseiro",
                "Nome: $nome\n Email: $email\n Mensagem: $mensagem\n"

                $sucesso = '<span  class="yes">Mensagem enviada com sucesso!</span>';
                echo $sucesso;
            } else {
                echo $error;
            };
        }
    } //END IF
?>