我是PHP的新手,但是,我有一个发送到我的电子邮件的简单联系表单。除$message
变量未显示外,一切都按预期工作。
php正在处理请求并将网站查看器发送到感谢页面,查看器也收到确认电子邮件,我收到的电子邮件包含除$message
数据之外的所有请求变量。
由于$totalmessage
函数限制,变量合并到mail()
。
正如我所说,我是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 code:
<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
答案 0 :(得分:1)
您不应该使用GET变量来发送消息。 该URL只能发送255个字母!所以最好用POST发送它。
<form method="post" action="index.php?action=send">
<textarea name="message" rows="20" cols="20" id="message"></textarea>
</form>
并在你的php中:
$message = $_POST['message'] ;
答案 1 :(得分:0)
暂时将$message = $_GET['message'] ;
更改为$message = $_REQUEST['message'] ;
或$message = $_POST['message'] ;
,如果有效,请告诉我们。
PHP $_REQUEST
包含$_GET
和$_POST
下的所有内容,但POST和GET不共享参数。由于看起来你所拥有的其他所有内容都是通过POST传递的,因此将消息设置为通过POST传递也是有意义的。
了解POST和GET here之间的差异。
简而言之,当您想从数据库或数据模型中获取数据时,请使用GET(不应执行任何可以改变任何状态的内容)。
如果要更改数据模型,或者想要执行某些操作(例如,执行电子邮件脚本),请使用POST。
答案 2 :(得分:0)
默认情况下,$_REQUEST
变量包含$_GET
,$_POST
和$_COOKIE
的内容。
$_GET
变量是通过URL参数传递给当前脚本的关联变量数组。
$_POST
变量是通过HTTP POST方法传递给当前脚本的关联变量数组。
您可能通过从其他网页发布的form
或此页面获得了该消息,然后您想要这样做:
$message = $_POST['message'];
而不是get。
答案 3 :(得分:0)
您需要与POST / GET / REQUEST数组保持一致。您的表单使用的方法是什么?无论如何,在表单处理代码中使用相同的内容。
例如,如果您的表单显示:<form method="POST">
,那么您的后端代码应该从$ _POST数组中获取其所有值。
答案 4 :(得分:0)
尝试
$message =$_REQUEST['message'];
答案 5 :(得分:0)
Mailsend假设开始发送动作。在$ subject中我建议使用文本区域表单,否则你只能在每条消息中得到单词查询。
你能试试吗?
public class ExerciseOne {
public static void main(String []args){
String []colors = {"MAGENTA","RED","WHITE","BLUE","CYAN"};
List<String> list = new ArrayList<String>();
for(String color : colors)
list.add(color);
String[] removeColors = {"RED","WHITE","BLUE"};
List<String> removeList = new ArrayList<String>();
for(String color : removeColors)
removeList.add(color);
removeColors(list,removeList);
System.out.printf("%n%nArrayList after calling removeColors:%n");
for(String color : list)
{
System.out.printf("%s ",color);
}
}
private static void removeColors(Collection<String> collection1, Collection<String> collection2)
{
Iterator<String> iterator = collection1.iterator();
while(iterator.hasNext()){
if(collection2.contains(iterator.next()))
System.out.println("duplicate");
}
}
}