PHP:在执行脚本之前等待用户输入



我有一个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';
	
	}
	
	?>

相关内容

  • 没有找到相关文章

最新更新