-2
<?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
?>

这段代码有什么问题?我想验证所有字段,如果它们都不为空,请发送消息。如果一切都是空的,那没关系,但如果我 $mensagem 有东西,它会说“echo $sucesso;” 但所有其他字段都是空的,所以它不应该发生..

4

3 回答 3

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

于 2013-06-29T11:28:53.947 回答
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语句的原因

于 2013-06-29T11:31:43.677 回答
0

这是因为您else在 if 之间缺少语句...

<?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
?>
于 2013-06-29T11:38:35.427 回答