PHP不是我的力量,当我被要求实现模态通讯订阅弹出窗口时,我感到畏缩,因为我知道我将不得不使用PHP。我整天都在网上搜索各种各样的东西,但我似乎无法得到任何工作,我真的希望有人能够指出我正确的方向。它非常简单,我只需要一个名称和电子邮件地址,然后发送到我指定的帐户。我确信这是非常基本的,但由于我缺乏PHP的经验,我完全迷失了我的错误。我的代码如下。
<?php
if($_POST["submit"]) {
$recipient="my@emailaddress.com";
$subject="Newsletter Subscription";
$senderName=$_POST["name"];
$senderEmail=$_POST["email"];
$mailBody="Name: $senderName\nEmail: $senderEmail\n\nThis is a test!";
mail($recipient, $subject, $mailBody, "From: $senderName <$senderEmail>");
header('Location:http://www.urltoredirect.com/');
}
?>
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="sendmail.php">
<div class="rbm_input_txt">
<input type="name" name="name" placeholder="name" required>
</div>
<div class="rbm_input_txt">
<input type="email" name="email" placeholder="email" required>
</div>
<div class="rbm_form_submit">
<button type="submit" class="rbm_btn_x_out_shtr">subscribe</button>
</div>
</form>
</body>
</html>
我将文件保存为sendmail.php并上传到我的服务器。当我填写表单时,页面只是重新加载,它没有重定向到指定的URL,我没有收到任何电子邮件。我怀疑问题出在发送邮件中,一旦排序,重定向就会起作用。任何人都可以看到我遗失的任何明显事物吗?
编辑:在我的代码中添加了name属性,如下所示。问题仍未解决。
答案 0 :(得分:1)
标签中必须有名称
<div class="rbm_input_txt"><input type="name" placeholder="name" name="name" required><input type="email" placeholder="email" name="email``" required
答案 1 :(得分:1)
您正在检查$_POST['submit']
是否真实,但您的表单实际上并未设置该值。您可以进行两项更改来解决此问题:
为了使submit
密钥出现在您的请求中,您需要将其分配给表单中的字段。您可能希望将其添加到提交按钮,只需将name参数添加到提交按钮即可:
<button name="submit" type="submit" class="rbm_btn_x_out_shtr">subscribe</button>
即使进行了上述更改,$_POST['submit']
仍将评估为false,因为其值为空。 (你可以在boolean conversions的规则中看到这一点。)你可以通过检查它的集合来解决它,而不是它的真实性:
if (isset($_POST['submit']))
或者,您可以只查找其他字段,例如name
或email
,因为您知道这两个字段都将在提交时设置。