我有一个html输入表单和一个php电子邮件脚本,它在同一页面上接受这些值。
问题是,在我将任何数据提交到表单之前,我会收到一封空白电子邮件,因为我的php脚本没有等待用户输入。
我不想为我的电子邮件脚本使用另一个页面,因为我不想通过GET传递变量,而且我还不知道如何实现会话。
谢谢,这是我的代码
<div id = "center">
<form action="post.php" name="emailform" method="post">
<input type="text" name="name">
<input type="text" name="email">
<input type="text" name="message">
<input type="submit" value="Send Email">
</form>
</div>
<?php
if (!isset($_POST['submit'])) {
echo 'you have hit the submit button';
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$message = $_POST['message'];
$email_from = 'trustyclient@yoursite.com';
$email_subject = "Message from client";
$email_body = "Message from: $visitor_email n n Message:$message";
$to = "myemail@myemail.com";
$headers = "from:adamrn";
mail($to,$email_subject,$email_body,$headers);
} else {
echo 'You have not hit the submit button yet';
}
?>
首先,给提交按钮一个名称,比如"submit"(因为您已经在PHP中引用了这个名称)。示例:
<input type="submit" name="submit" value="Send Email">
现在您可以在代码中实际使用$_POST['submit']
了。
然后是另一个调整:
当您处于if (!isset($_POST['submit'])) {
状态时,如果提交按钮由于!
而没有被按下,则会运行以下代码。要修复,只需移除!
,使其成为:
if (isset($_POST['submit'])) {
如果下面的表达式(此处为isset($_POST['submit'])
)计算为false,则!
告诉if语句计算为true。因此!
的意思是"如果相反"。
注意:另外,PHP在按下提交按钮时运行的概念略有偏离。提交按钮会触发该页面加载不同的页面(或同一页面)。PHP代码在页面加载时只运行一次。
试试这个。
<div id = "center">
<form action="post.php" name="emailform" method="post">
<input type="text" name="name">
<input type="text" name="email">
<input type="text" name="message">
<input type="submit" value="Send Email">
</form>
</div>
<?php
if (isset($_POST['submit'])) {
echo 'you have hit the submit button';
if (empty(trim($_POST['name'])) || empty(trim($_POST['email'])) || empty(trim($_POST['message']))) {
echo 'Some fields are empty.';
} else {
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$message = $_POST['message'];
$email_from = 'trustyclient@yoursite.com';
$email_subject = "Message from client";
$email_body = "Message from: $visitor_email n n Message:$message";
$to = "myemail@myemail.com";
$headers = "from:adamrn";
mail($to,$email_subject,$email_body,$headers);
}
} else {
echo 'You have not hit the submit button yet';
}
?>