0

我是 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 代码:

<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
4

6 回答 6

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'] ;
于 2012-08-30T19:46:24.417 回答
0

更改$message = $_GET['message'] ;$message = $_REQUEST['message'] ;$message = $_POST['message'] ;现在,让我们知道这是否有效。

PHP$_REQUEST包括所有的$_GET$_POST但 POST 和 GET 不共享参数。由于您所拥有的所有其他内容似乎都通过 POST 传递,因此将消息设置为也通过 POST 传递是有道理的。

在此处阅读 POST 和 GET 之间的差异。

简而言之,当您想从数据库或数据模型中获取数据时,请使用 GET(不应执行任何更改任何状态的任何操作)。

当你想改变你的数据模型时使用 POST,或者如果你想执行一些事情(比如在这种情况下,执行一个电子邮件脚本)。

于 2012-08-30T19:44:48.713 回答
0

默认情况下,变量$_REQUEST包含 和 的内容。$_GET$_POST$_COOKIE

$_GET变量是通过 URL 参数传递给当前脚本的变量的关联数组。

$_POST变量是通过 HTTP POST 方法传递给当前脚本的变量的关联数组。

您可能已经通过form来自其他页面或此页面的帖子获得了消息,然后您想要执行以下操作:

$message = $_POST['message'];

而不是得到。

于 2012-08-30T19:47:32.997 回答
0

您需要与您的 POST / GET / REQUEST 数组保持一致。您的表单使用的方法是什么?不管是什么,在您的表单处理代码中使用相同的。例如,如果您的表单显示:<form method="POST">那么您的后端代码应该从 $_POST 数组中获取其所有值。

于 2012-08-30T19:47:41.540 回答
0

尝试

$message =$_REQUEST['message'];
于 2013-09-09T06:24:15.207 回答
0

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";}
于 2016-01-13T19:56:58.057 回答