发送到电子邮件的PHP脚本未显示$message变量


PHP script sent to email not displaying $message variable

我是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";}