[英]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.