我的网站联系表格有问题。所以这个问题有两个部分。
首先,我想知道为什么以及为什么每次进入我的页面的联系链接时,它会在进入页面时自动发送电子邮件,并在单击提交时自动发送(我只希望它执行此操作)。
所以例子: 我去mywebsite.com,然后点击“联系我们”链接页面。带我到联系表格后,会自动发送电子邮件。然后我被允许填写表格并发送另一封电子邮件。我想知道如何防止这种情况发生以及为什么会发生。
二。我已经看到很多关于这个的回答问题,但到目前为止,我在这个网站上看到的这些问题都没有给我带来帮助。 当我单击提交时,要提交表单,它会发送电子邮件,但之后会保留在同一页面上,而不会清除所有字段或给出确认消息。我还尝试重定向页面,说出“消息已成功发送”或其他任何内容。
我将在下面发布我的代码,但这里有一些关于我之前尝试过的内容的注释。
我在点击提交后尝试包含一个标题来重定向。我要么做得不正确,要么就是不行。 我已尝试使用java代码进行重定向,但由于这样做会自动发送电子邮件,然后重定向到我所说的页面,而不会实际访问联系表单页面。
我的代码是php和html合二为一。在我完成之后,我将把两者分开,但我想在组织本节之前先让它工作。 看着我的代码,请不要判断。我不是这方面的专家,我确实知道有错误。我试图保持0错误,但现在只是在代码上添加代码尝试让它工作,可能会添加错误。我愿意接受建议,以便在可能的情况下分解我的代码时达到同样的效果。我知道的一个错误是我的表单内联语句。我故意错过报价,因为有了报价,我网站上的搜索栏搞砸了。
我也研究过jquery和ajax,但是如果有人给我一个使用与我目前代码相同格式的解决方案,我会更喜欢,除非格式是我想的问题。
我将我的实际域名更改为mydomain.com作为示例。
我也明白可能有很多不相关的代码,但我不确定是否有任何行可能是问题所以我试图弄清楚代码的每个部分对我的页面做了什么,并包括一切jsut以防万一那些可能是问题。
<?php
$nameErr = $emailErr = $numberErr = $websiteErr = "";
$name = $email = $number = $comment = $subject = "";
$datetime = date('d/m/Y H:i:s');
$ipaddress = $_SERVER['REMOTE_ADDR'];
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
}
if (! preg_match("/^[a-zA-Z ]*$/", $name)) {
$nameErr = "Only letters and white space allowed";
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
}
if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
if (empty($_POST["subject"])) {
$subject = "";
} else {
$subject = test_input($_POST["subject"]);
}
if (empty($_POST["number"])) {
$number = "";
} else {
$number = test_input($_POST["number"]);
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
}
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array(
"content-type",
"bcc:",
"to:",
"cc:",
"href"
);
return str_replace($bad, "", $string);
}
$email_message .= "Full Name: " . clean_string($name) . "\n";
$email_message .= "E-mail: " . clean_string($email) . "\n";
$email_message .= "Subject: " . clean_string($subject) . "\n";
$email_message .= "ipaddress: " . clean_string($ipaddress) . "\n";
$email_message .= "date and time: " . clean_string($datetime) . "\n";
$email_message .= "Phone#: " . clean_string($number) . "\n";
$email_message .= "Message: " . clean_string($comment) . "\n";
$email_from = $name . '<' . $email_from . '>';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From:' . $email_from . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
/* Send the message using mail() function */
$myemail = "contact@mydomain.com";
mail($myemail, $subject, $email_message, $headers);
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
sec_session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>My Domain - Contact</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="../css/style.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<div id="logo">
<h1><img src="../tab/mydoaminlogo.jpg" alt="" width="780" height="104" /></h1>
</div>
<hr />
<!-- end #logo -->
<div id="header">
<div id="menu">
<ul>
<li><a href="../index.php" class="first">Home</a></li>
<li class="current_page_item"><a href="../tab/News.php">News</a></li>
<li><a href="../tab/Locations.php">Locations</a></li>
<li><a href="../tab/About.php">About</a></li>
<li><a href="../tab/Contact.php">Contact</a></li>
<?php if (login_check($mysqli) == true) : ?>
<li><a href="../tab/Store.php">Store</a></li>
<?php else: ?>
<li><a href="../tab/login.php">LogIn</a></li>
<?php endif; ?>
<?php if (login_check($mysqli) == true) : ?>
<li><a href="../tab/tab/logout.php">Log Out</a></li>
<?php else: ?>
<li><a href="../tab/register.php">Sign-up</a></li>
</ul>
<?php endif; ?>
</div>
<!-- end #menu -->
<div id="search">
<form method="get" action="" class="form-inline>
<fieldset>
<input type="text" name="s" id="search-text" size="15" />
<input type="submit" id="search-submit" value="Search" />
</fieldset>
</form>
</div>
<!-- end #search -->
</div>
<!-- end #header -->
<!-- end #header-wrapper -->
<div id="page">
<div id="content_wide">
<div class="post">
<div class="entrycontact">
<div class="container">
<form id="contact" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<h3>Contact Us</h3>
<h4>Please fill out completely</h4>
<fieldset>
<input placeholder="Your name" type="text" name="name" value="<?php echo $name;?>" tabindex="1" required autofocus>
<span class="error"> <?php echo $nameErr;?></span>
</fieldset>
<fieldset>
<input placeholder="Your Email Address" type="email" name="email" value="<?php echo $email;?>"tabindex="2" required>
<span class="error"> <?php echo $emailErr;?></span>
</fieldset>
<fieldset>
<input placeholder="Subject" type="tel" name="subject" value="<?php echo $subject;?>"tabindex="2" required>
<span class="error"><?php echo $numberErr;?></span>
</fieldset>
<fieldset>
<input placeholder="Number" type="tel" name="number" value="<?php echo $number;?>"tabindex="3" required>
<span class="error"><?php echo $numberErr;?></span>
</fieldset>
<fieldset>
<textarea placeholder="Type your message here...." name ="comment" tabindex="5" required><?php echo $comment;?></textarea>
</fieldset>
<fieldset>
<button name="submit" type="submit" id="contact-submit" data-submit="...Sending">Submit</button>
</fieldset>
</form>
</div>
</div>
</div>
</div>
<!-- end #content -->
<!-- end #sidebar -->
<div style="clear: both;"></div>
</div>
<!-- end #page -->
<div id="footer"></div>
<!-- end #footer -->
</body>
</html>