Pizza: Variable in URL auslesen und in textarea schreiben?

Beitrag lesen

Ok, also dann erzähl ich dir/euch eben alles (auch wenn ich das immer noch für unnötig halte, da ich eigentlich nur wissen wollte, wie ich Zeilenumbrüche in der URL übermitteln kann):
Ich habe ein Kontaktformular erstellt, mit welchem der Besucher meiner Homepage mir bei Fragen o.Ä. eine Email senden kann (deshalb auch die Funktion mail() ). Das Kontaktformular ist realtiv einfach gemacht.

kontakt.php:

  
<form method="post" action="index.php?content=send_mail">  
<p><label>Name:<br><input type="text" name="Name" value="<?php echo $_GET['Name']; ?>"></label</p>  
<p><label>E-Mail:<br><input type="text" name="Mail" value="<?php echo $_GET['Mail']; ?>"></label</p>  
<p><label>Betreff:<br><input type="text" name="Betreff" value="<?php echo $_GET['Betreff']; ?>"></label</p>  
<p><label>Nachricht:<br>  
<textarea name="Nachricht" cols="50" rows="8"></textarea></label</p>  
<input type="submit" value="OK">  
</form>  
<?php  
    echo "<pre>\r\n";  
    echo htmlspecialchars(print_r($_GET,1));  
    echo "</pre>\r\n";  
?>  

Es besteht aus einem Feld für den Namen, einem Feld für Emailadresse, einem Feld für Betreff und natürlich auch noch einem Feld (das Textarea) für den Text, welchen mir der User übermitteln möchte. Hinzu kommt dann noch ein Submit-Button um das Formular zu versenden.

Gesendet wird das Formular an send_mail.php:

<?php  
  
// ======= Konfiguration:  
  
$mailTo = 'MEINE_EMAIL-ADRESSE';  
$mailSubject    = 'Ein Besucher hat eine Frage';  
$mailFrom = $_POST['Name'].'<info@provider.xy>';  
$mailText = "";  
  
// ======= Text der Mail aus den Formularfeldern erstellen:  
  
// Wenn Daten mit method="post" versendet wurden:  
if (!empty($_POST)) {  
   // alle Formularfelder der Reihe nach durchgehen:  
   foreach($_POST as $name => $value) {  
      // Wenn der Feldwert aus mehreren Werten besteht:  
      // (z.B. <select multiple>)  
      if(is_array($value)) {  
          // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen  
          $mailText .= $name . ":\n";  
          // alle Werte des Feldes abarbeiten  
          foreach($valueArray as $entry) {  
             // Einrückungsleerzeichen, Wert und Zeilenumbruch  
             // dem Mailtext hinzufügen  
             $mailText .= "   " . $value . "\n";  
          } // ENDE: foreach  
      } // ENDE: if  
      // Wenn der Feldwert ein einzelner Feldwert ist:  
      else {  
          // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen  
          $mailText .= $name . ": " . $value . "\n";  
      } // ENDE: else  
   } // ENDE: foreach  
} // if  
  
// ======= Korrekturen vor dem Mailversand  
  
// Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt:  
 if(get_magic_quotes_gpc()) {  
     // eventuell eingefügte Backslashes entfernen  
     $mailtext = stripslashes($strMailtext);  
 }  
  
// ======= Mailversand  
  
// Mail versenden und Versanderfolg merken  
$mailSent = mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom);  
  
// ======= Return-Seite an den Browser senden  
  
// Wenn der Mailversand erfolgreich war:  
if($mailSent == TRUE) {  
   // Seite "Formular verarbeitet" senden:  
   echo "  
   <script type='text/javascript'>  
   alert('Email wurde erfolgreich versendet!');  
   window.location='index.php?content=kontakt';  
   </script>";  
}  
// Wenn die Mail nicht versendet werden konnte:  
else {  
   // Seite "Fehler aufgetreten" senden:  
   $name = $_POST['Name'];  
   $email = $_POST['Mail'];  
   $betreff = $_POST['Betreff'];  
   $nachricht = $_POST['Nachricht'];  
   echo "  
   <script type='text/javascript'>  
   alert('Email konnte nicht versendet werden!');  
   alert('Bitte versuche es erneut');  
   window.location='index.php?content=kontakt&Name=$name&Mail=$email&Betreff=$betreff&Nachricht=$nachricht';  
   </script>";  
}  
  
// ======= Ende  
  
exit();  
  
?>  

Wenn die Email versendet werden kann, dann erfolgt die Bestätigung mittels Javascript in Form eines Alert-Fensters und der User wird wieder zur Kontakt-Seite weitergeleitet.
Falls die Email nicht versendet werden kann (weshalb auch immer), soll der Besucher mittels Alert darüber benachrichtigt werden [alert('Email konnte nicht versendet werden!');]
und ihm soll es möglich sein, den Versand der Mail erneut zu versuchen (das wird ihm auch über Alert mitgeteilt). Anschließend wird der Benutzer zur Kontakt.php Seite weitergeleitet und mit ihm auch die schoneinmal eingetragenen Daten (Name, Email-Adresse, Betreff und eben der INHALT DES TEXTAREAS).
Die Weiterleitung übernimmt Javascript:

  
   window.location='index.php?content=kontakt&Name=$name&Mail=$email&Betreff=$betreff&Nachricht=$nachricht';  

Der Inhalt der Felder Name, Email, Betreff können immer ohne Probleme übermittelt werden, weil diese immer OHNE Zeilenumbruch sind (input-Felder können das ja schlecht). Im Prinzip klappt das Übertragen aller Felder solange im TEXTAREA keine Zeilenumbrüche vorhanden sind
UND DAS IST MEIN PROBLEM!

Vor dem Senden des Formulars beim ersten Mal müsste ich theoretisch Zeilenumbrüche irgendwie mit Hilfe von PHP/Javascript finden und diese löschen und später wieder einfügen um den Text wieder genauso in das Textarea einzutragen wie er vom User verfasst wurde. Doch wie mache ich das?!

Anfangs wollte ich das mit history.back() machen (also anstatt dem weiterleiten auf die kontakt.php - Seite), doch da bekomme ich immer einen Fehler von Firefox, dass er die Seite nicht öffnen kann, vermutlich, weil zuvor bereits ALERT-Nachrichten erscheinen?

Also habe ich mich zu dieser Methode entschlossen und würde jetzt gerne wissen, wie ich das mit den Zeilenumbrüchen machen soll und wie das vor allem geht?

So... jetzt habe ich hoffentlich das Problem ausreichend beschrieben (auch wenn ich immer noch der Meinung bin, dass das nicht notwendig war)?!

Mit freundlichen Grüßen,
Pizza