联系表 - 用户名和电子邮件 'unknown'
Contact form - user's name and email coming through as 'unknown'
抱歉,我知道这个问题已经在这个网站上被问过好几次了,但是我已经尝试实施其他人的建议,但没有成功。
和其他人一样,我有一个非常简单的联系表格,为了这个例子,我将 PHP 编码剥离到最低限度,这样看起来更简单。
就我在 GMail 中收到带有消息的电子邮件而言,它工作正常,但是用户填写的电子邮件和姓名从未显示。
- 我试过去掉'\r'然后只留下'\n\
其他方法要么导致电子邮件变成垃圾邮件,要么变成垃圾邮件(以未知方式通过)。
<form action="contact.php" method="post">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" id="email" placeholder="Enter email">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" placeholder="Name">
</div>
</div>
</div>
<div class="form-group">
<label for="message">Message</label>
<textarea name="message" id="message" class="form-control" rows="3"></textarea>
</div>
<button type="submit" class="btn tf-btn btn-default">Submit</button>
</form>
PHP代码
<?php
$to = 'mymail@gmail.com';
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$subject = 'RE: RMW interest';
$headers .= 'From:' .$name. " ".'<'.$email.'>'."\r\n";
$headers .= 'Reply-To: ' . $email . "\r\n";
mail($to, $subject, $message, $headers);
echo "Thank you for contacting us, we will respond shortly!";
?>
如果有人能阐明这个特殊案例,我将不胜感激。
非常感谢
HTML代码中的问题不在PHP,
中
您忘记为输入命名,所以当您在 contact.php 文件中调用 print_r()
时,您只会找到消息。
在contact.php中写print_r($_POST);
输出将是
Array ( [message] => message)
现在您知道问题所在了,因此您想要命名所有输入。
<input name="email" type="email" class="form-control" id="email" placeholder="Enter email">
...
<input name="name" type="text" class="form-control" id="name" placeholder="Name">
...
<button name="submit" type="submit" class="btn tf-btn btn-default">Submit</button>
所以现在的输出是
Array ( [email] => test@test.test [name] => test [message] => test message [submit] => )
这里我给按钮命名是因为你可以检查按钮是否被点击发送消息。
if(isset($_POST['submit'])){
//your code here
}
希望这对您有所帮助
抱歉,我知道这个问题已经在这个网站上被问过好几次了,但是我已经尝试实施其他人的建议,但没有成功。
和其他人一样,我有一个非常简单的联系表格,为了这个例子,我将 PHP 编码剥离到最低限度,这样看起来更简单。
就我在 GMail 中收到带有消息的电子邮件而言,它工作正常,但是用户填写的电子邮件和姓名从未显示。
- 我试过去掉'\r'然后只留下'\n\
其他方法要么导致电子邮件变成垃圾邮件,要么变成垃圾邮件(以未知方式通过)。
<form action="contact.php" method="post"> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="email">Email address</label> <input type="email" class="form-control" id="email" placeholder="Enter email"> </div> </div> <div class="col-md-6"> <div class="form-group"> <label for="name">Name</label> <input type="text" class="form-control" id="name" placeholder="Name"> </div> </div> </div> <div class="form-group"> <label for="message">Message</label> <textarea name="message" id="message" class="form-control" rows="3"></textarea> </div> <button type="submit" class="btn tf-btn btn-default">Submit</button> </form>
PHP代码
<?php
$to = 'mymail@gmail.com';
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$subject = 'RE: RMW interest';
$headers .= 'From:' .$name. " ".'<'.$email.'>'."\r\n";
$headers .= 'Reply-To: ' . $email . "\r\n";
mail($to, $subject, $message, $headers);
echo "Thank you for contacting us, we will respond shortly!";
?>
如果有人能阐明这个特殊案例,我将不胜感激。
非常感谢
HTML代码中的问题不在PHP,
中您忘记为输入命名,所以当您在 contact.php 文件中调用 print_r()
时,您只会找到消息。
在contact.php中写print_r($_POST);
输出将是
Array ( [message] => message)
现在您知道问题所在了,因此您想要命名所有输入。
<input name="email" type="email" class="form-control" id="email" placeholder="Enter email">
...
<input name="name" type="text" class="form-control" id="name" placeholder="Name">
...
<button name="submit" type="submit" class="btn tf-btn btn-default">Submit</button>
所以现在的输出是
Array ( [email] => test@test.test [name] => test [message] => test message [submit] => )
这里我给按钮命名是因为你可以检查按钮是否被点击发送消息。
if(isset($_POST['submit'])){
//your code here
}
希望这对您有所帮助