$ subject im PHP-Mail-Formular, das nur das erste Wort in der Zeichenfolge zurückgibt

Ich lerne gerade PHP für eine Webinterface-Klasse und eine unserer Aufgaben ist es, ein Basisformular zu generieren, mit dem ich eine E-Mail senden kann. Wir müssen dann in der Lage sein, ein Muster dieses Formulars per E-Mail über HTML zu senden. Ich möchte dies tun und die Eingabe anzeigen, die eingegeben wurde, als die E-Mail gesendet wurde. Ich habe das meiste davon zum Laufen gebracht. Ich kann die Variable $ subject einfach nicht dazu bringen, das Sample vollständig auszufüllen. Es wird nur ein Wort angezeigt und alle anderen nach dem ersten Leerzeichen übersprungen. (Dasselbe gilt für die Variable $ from, dies ist jedoch normalerweise eine E-Mail-Adresse und daher kein großes Problem.)

Wenn ich beispielsweise eine E-Mail mit dem Betreff "Dies ist ein Test" sende, wird beim Empfang der E-Mail in meinem Posteingang der vollständige Betreff "Dies ist ein Test" in der Betreffzeile meiner E-Mail angezeigt. Wenn ich jedoch die E-Mail selbst öffne und das generierte Formularbeispiel ansehe, wird "Dies" nur als ausgefüllter Betreff angezeigt.

Ich benutze die Eingabe, Typ = "Text" -Tag, um das Thema einzugeben, und ich stelle mir vor, dass dies ein Teil des Grundes ist. Ich kann das Problem mit einem Textfeld-Tag lösen, aber das ist nicht wirklich konventionell und scheint den Zweck der Übung zu verfehlen. Jede Hilfe wird geschätzt. Vielen Dank!

Hier ist mein Code: (Der erste Block ist nur eine Funktion zum Generieren des Formulars.)

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>';
}

Und der tatsächliche Sende-E-Mail-Code:

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. 
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage