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

时间:2014-06-11 19:38:15

标签: php html

让我们开始说我还是这个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>

2 个答案:

答案 0 :(得分:1)

在进行验证之前,您正在将$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.";
}

答案 1 :(得分:0)

这里有很多问题。首先在你的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 = '';
}