php主题的$ subject只返回字符串中的第一个单词

时间:2013-08-06 05:00:22

标签: php email

我目前正在学习用于Web界面课程的php,我们的一项任务是生成一个基本表单来发送电子邮件。然后,我们必须能够通过html在电子邮件中发送该表单的样本。我想这样做,显示发送电子邮件时输入的输入。我已经完成了大部分工作,我只是不能将$ subject变量完全填充到样本中。它只显示一个单词,并在第一个空格字符后跳过所有其他单词。 (来自变量的$也是如此,但这通常是一个电子邮件地址,因此它不是主要问题)

例如,如果我发送带有主题的电子邮件,"这是一个测试",当我收到收件箱中的电子邮件时,我会看到完整的主题"这是一个测试" 34;在我的电子邮件主题行中。但是当我打开电子邮件本身并查看生成的表单示例时,我只会看到"这个"作为填写的主题。

我正在使用输入,输入=" text"标签进入主题,我想这是原因的一部分。我可以使用textarea标签来解决问题,但这并不是真正的传统,似乎打败了练习的目的。任何帮助表示赞赏。谢谢!

这是我的代码: (第一个块只是生成表单的函数。)

function createForm() //create form upon page load
{
    echo '<form method="post">' . '<br />';
    echo '<fieldset>' . '<br />';
    echo '<legend><p>Heading</p></legend>' . '<br />';
    echo 'To: <input name="to" type="text" />' . '<br />';
    echo 'From: <input name="from" type="text" />' . '<br />';
    echo 'Subject: <input name="subject" type="text"  />' . '<br />';
    echo '</fieldset>' . '<br />';
    echo '<fieldset>' . '<br />';
    echo '<legend><p>Content</p></legend>' . '<br />';
    echo 'Message: <textarea name="message" cols="30" rows="10"></textarea>' . '<br />';
    echo '<input name="send" type="submit" />' . '<br />';
    echo '</fieldset>' . '<br />';
    echo '</form>';
}

实际发送电子邮件代码:

if(isset($_REQUEST['to'])) //send email 
{
    $to = $_REQUEST['to'];
    $subject = $_REQUEST['subject'];
    $from = $_REQUEST['from'];

    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= 'Content-Type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= "From: $from" . "\r\n";
    $headers .= "Reply-To:  $from"  . "\r\n";
    $headers .= "Subject: $subject" . "\r\n";
    $headers .= "X-Mailer: PHP/".phpversion() . "\r\n";

    //html message
    $message = '
    <html>
    <body>
    <form>
    <fieldset>
    <legend>Headings</legend>
    To: <input type="text" name="to" value=' . $_REQUEST['to'] . ' /><br />
    From: <input type="text" name="from" value=' . $_REQUEST['from'] . ' /><br />
    Subject: <input type="text" name="subject" value=' . $_REQUEST['subject'] . ' />
    </fieldset>
    <fieldset>
    <legend>Content</legend>
    Message: <textarea name="message" cols="30" rows="10">' . $_REQUEST['message'] . '</textarea><br />
    <input type="submit" name="send" />
    </fieldset>
    </form>
    </body>
    </html>';   

    mail($to,$subject,$message,$from,$headers);

    echo "Message sent, thank you. <br />";
    echo '<a href="email.php">Return</a>';
}
else
{
    createForm(); //create form if no $to set. 
}

1 个答案:

答案 0 :(得分:0)

邮件程序中的HTML解释器正在查看输入元素并查看value属性后跟一个未加引号的单词。然后它会看到一堆没有值的其他属性。首先正确引用该值。并且清理;您不希望因为系统发送的电子邮件而导致您的客户被黑客攻击。