繁体   English   中英

php表格。 验证时需要帮助发送

[英]Php form. Need help to send it when validate

让我们开始说我还是这个php的新手。 我不会放弃,我会学习的。 我整理的表格代码有问题。 验证所有输入字段后,我无法发送它。 不明白为什么。 也许我可以得到一些帮助? 也许您可以修复它以便工作? 因此,我有一些需要配合的东西。

<?php
// This is your email address
$to = "my@mail.com"; 

// Subject title
$subject = 'Testing work now pls';

// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

// More headers
$headers .= 'From: <webmaster@example.com>' . "\r\n";
$headers .= 'Cc: myboss@example.com' . "\r\n";
$headers .= "Reply-To: ".$email."\r\n";

// If press send
if (isset($_POST['send'])) {

    // If not empty
    $errors = array(
                    $errorsname = $errorsemail
                    );

    // Start validation

    // Check if name not empty
    if (empty($_POST["name"])) {
        $errorsname = "You must write their name.";
    } else {
        $name = ($_POST["name"]);
        // Check if only letters in name
        if (!preg_match("/^[a-zA-Z æøå-ÆØÅ]*$/",$name)) {
            $errorsname = "Their name only content letters."; 
        }
        // Check if name to short
        if(strlen($_POST['name']) < 2 )
            {
                $errorsname = 'Their name is too short.'; }
        // Check if name to long name
        if(strlen($_POST['name']) > 30 )
            {
                $errorsname = 'Their name is too long'; }
    }

    // Check email
    if (empty($_POST["email"])) {
        $errorsemail = "You must enter their email."; }
    else {
        $email = ($_POST["email"]);
        // Check if e-mail address syntax is valid
        if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
            $errorsemail = "Invalid email address."; }
    }

    // Check errors if non continue
    if (empty($errors))
        {

            // Make message ready
            $message = "
    Stupid just work pls! $navn, $email
    ";

            // Then send mail

            mail($to,$subject,$message,$headers);

            // Redirect to sucesse page
            header('Location: mysite.php');
        }
}
?>
<!DOCTYPE HTML> 
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
<style>
.errors {
    color: #FF0000;
}
</style>
</head>
<body>
<h2>Hmmm....Help?</h2>
<span class="errors"><?php echo $errormessage; ?></span>
<form name="kontakt" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input name="name" type="text" placeholder="Deres navn.." value="<?php echo $name;?>">
<span class="errors"><?php echo $errorsname;?></span>
<br><br>
E-mail: <input name="email" type="text" placeholder="Din e-mail.." value="<?php echo $email;?>">
<span class="errors"><?php echo $errorsemail;?></span>
<br><br>
<br><br> 
<input type="submit" name="send" value="Send"> 
</form>
</body>
</html>

在进行验证之前,您需要将$errors设置为非空数组,因此

if (empty($errors))

将永远失败。 您应该将其初始化为:

$errors = array();

然后,您的验证代码应以这种方式添加到其中:

if (empty($_POST['name'])) {
    $errors['name'] = "You must write their name.";
}

if (empty($_POST['email'])) {
    $errors['email'] = "You must enter their email.";
}

您在这里有很多问题。 首先,在您的HTML中,您需要检查是否设置了错误变量,如果已设置,请显示它们,否则,您将得到php错误:

<span class="errors"><?php
            if (isset($errormessage)) {
                echo $errormessage;
            }
            ?></span>
        <form name="kontakt" method="post" action="<?php echo                 htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
            Name: <input name="name" type="text" placeholder="Deres navn.." value="<?php
            if (isset($name)) {
                echo $name;
            }
            ?>">
            <span class="errors"><?php
                if (isset($errorsname)) {
                    echo $errorsname;
                }
            ?></span>
            <br><br>
            E-mail: <input name="email" type="text" placeholder="Din e-mail.." value="<?php echo $email; ?>">
            <span class="errors"><?php if (isset($errorsemail)) {
                    echo $errorsemail;
                }
            ?></span>

其次,如上所述,您的$ erros数组应类似于Barmar所示或实例化。

最后,加载页面时不会实例化$ email变量,您将不得不为其设置默认值:

if(isset($_POST['email'])){
$email = $_POST['email'];}
else{
$email = '';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM