我是PHP的新手,但是,我有一个简单的联系表格,正在发送到我的电子邮件中。除了$message
变量没有显示之外,其他一切都按预期进行。
php正在处理请求并将网站查看器发送到感谢页面,查看器也收到了确认电子邮件,我收到了除$message
数据外的所有请求变量的电子邮件。
由于mail()
函数的限制,这些变量被合并到$totalmessage
中。
正如我所说,我是php的新手,但感谢您的帮助。
PHP代码:
<?php
$to = "me@mywebsite.com";
$subject = "Inquiry";
$name = $_REQUEST['name'] ;
$email = $_REQUEST['email'] ;
$phone = $_REQUEST['phone'] ;
if (isset($_POST['interest']) && $_POST['interest']!= 'none'){
if (is_array($_POST['interest'])){
$interest = implode(" ", $_POST['interest']); // format your array for use
} else {
$interest = $_POST['interest']; // no array -> print single value
}
}
$method = $_REQUEST['method' ] ;
$message = $_GET['message'] ;
$totalmessage = "
Name: $name 'n
Email: $email 'n
Phone: $phone 'n
Interest: $interest 'n
Method: $method 'n
Message: $message 'n ";
$headers = "From: $email";
$sent = mail($to, $subject, $totalmessage, $headers);
if($sent)
header( "Location: /thankyou.html" );
else
print "We encountered an error sending your mail";
?>
HTML代码:
<div class="row">
<br><label for="message"> Message:</label><br/>
<textarea name="message" rows="20" cols="20" id="message"></textarea>
</div>
电子邮件输出:
Name: bob
Email: bob@gmail.com
Phone: 123-456-7890
Interest: research
Method: email
Message: <===should have message text
您不应该使用GET变量来发送消息。URL只能发送255个字母!所以最好是用POST发送。
<form method="post" action="index.php?action=send">
<textarea name="message" rows="20" cols="20" id="message"></textarea>
</form>
以及在ur-php:中
$message = $_POST['message'] ;
暂时将$message = $_GET['message'] ;
更改为$message = $_REQUEST['message'] ;
或$message = $_POST['message'] ;
,并让我们知道这是否有效。
PHP $_REQUEST
包括$_GET
和$_POST
下的所有内容,但POST和GET不共享参数。由于您获得的所有其他信息似乎都是通过POST传递的,因此将消息设置为也通过POST传递也是有意义的。
请在此处阅读POST和GET之间的差异。
简而言之,当您想从数据库或数据模型中获取数据时,请使用GET(不应执行任何更改任何状态的操作)。
当您想更改数据模型时,或者如果您想执行某些操作(比如在本例中,执行电子邮件脚本),请使用POST。
您需要与您的POST/GET/REQUEST数组保持一致。您的表单使用的方法是什么?不管是什么,在表单处理代码中使用相同的代码。例如,如果表单显示:<form method="POST">
,那么后端代码应该从$_POST数组中获取其所有值。
$_REQUEST
变量包含$_GET
、$_POST
和$_COOKIE
的内容。
$_GET
变量是通过URL参数传递给当前脚本的变量的关联数组。
$_POST
变量是通过HTTPPOST方法传递给当前脚本的变量的关联数组。
你可能已经通过从另一个页面或这个页面发布的form
收到了消息,然后你想做:
$message = $_POST['message'];
而不是得到。
尝试
$message =$_REQUEST['message'];
Mailsend假定启动发送操作。在$subject中,我建议使用一个文本区域表单,否则你在每条消息中只会得到"查询"一词。
你能试试吗?
$to = "me@mywebsite.com";
$subject = "Inquiry";
$name = $_POST['name'] ;
$email = $_POST['email'] ;
$phone = $_POST['phone'] ;
$mailsend = mail ('$to', '$subject',"Name: $name'r'nEmail: $emial'r'nPhone: $phone'r'n" );
if ($mailsend) {
echo "Hello $name . Lorem ipsum est un divagat de pleure malucate";}
else {
echo "ERROR sending";}