让我们开始说我还是这个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>
答案 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 = '';
}