Variable in URL auslesen und in textarea schreiben?
Pizza
- php
Guten Abend,
ich möchte eine Variable, welche ich zuvor in die URL geschrieben habe, mit Hilfe von PHP beim Laden der nächsten Seiten in einem Textarea ausgeben, doch ist das möglich?
Gibt es eine Funktion in PHP/JS mit der man den Inhalt von Variablen aus der URL auslesen kann?
Mit freundlichen Grüßen,
Pizza
Hello,
ich möchte eine Variable, welche ich zuvor in die URL geschrieben habe, mit Hilfe von PHP beim Laden der nächsten Seiten in einem Textarea ausgeben, doch ist das möglich?
Gibt es eine Funktion in PHP/JS mit der man den Inhalt von Variablen aus der URL auslesen kann?
Man kann Parameter der URL in Variablen des Scriptes wiederfinden :-)
Schau Dir das Array $_GET an
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_GET,1));
echo "</pre>\r\n";
Da findest Du hoffentlich, was Du suchst.
Allerdings ist ein GET-Parameter für eine Textarea nicht unbedingt geeignet, da die Anzahl der Bytes, die per URL übertagen werden können, in der Praxis begrenzt sind.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Schau Dir das Array $_GET an
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_GET,1));
echo "</pre>\r\n";Da findest Du hoffentlich, was Du suchst.
Hi,
wenn ich das in meine Seite einfüge, dann zeigt es mir auch nicht mehr an, als ich in der URL sehe :/
Ich sehe die Variablen mit ihren Werten, jetzt weiß ich aber leider immer noch nicht, wie ich die Werte der Variablen in das Textarea reinschreibe, weil ich nicht weiß wie ich die Variable "Nachricht" ansprechen kann...
Mit freundlichen Grüßen,
Pizza
Hi,
echo htmlspecialchars(print_r($_GET,1));
wenn ich das in meine Seite einfüge, dann zeigt es mir auch nicht mehr an, als ich in der URL sehe :/
Es zeigt dir an, welche Struktur das Array $_GET hat.
Ich sehe die Variablen mit ihren Werten, jetzt weiß ich aber leider immer noch nicht, wie ich die Werte der Variablen in das Textarea reinschreibe, weil ich nicht weiß wie ich die Variable "Nachricht" ansprechen kann...
Wenn du nicht weißt, wie man auf die Elemente in einem Array zugreift, dann beschäftige dich mit den Grundlagen: http://www.php.net/manual/en/language.types.array.php
MfG ChrisB
Wenn du nicht weißt, wie man auf die Elemente in einem Array zugreift, dann beschäftige dich mit den Grundlagen: http://www.php.net/manual/en/language.types.array.php
MfG ChrisB
Hi,
doch ich weiß schon, wie man auf die Elemente im Array GET zugreift, aber PHP fügt bei mir den Inhalt des Elementes "Nachricht" (ist der Name des Feldes textarea) nicht ein, wenn Zeilenumbrüche drinnen sind...aber ich möchte, dass die Nachricht wieder so wie am Anfang vom User geschrieben in das Textarea eingetragen wird ;)
Hi,
doch ich weiß schon, wie man auf die Elemente im Array GET zugreift, aber PHP fügt bei mir den Inhalt des Elementes "Nachricht" (ist der Name des Feldes textarea) nicht ein, wenn Zeilenumbrüche drinnen sind...
Diese neue „Problembeschreibung“ passt kaum zu dem, was du vorher geschrieben hast,
Ich sehe die Variablen mit ihren Werten, jetzt weiß ich aber leider immer noch nicht, wie ich die Werte der Variablen in das Textarea reinschreibe, weil ich nicht weiß wie ich die Variable "Nachricht" ansprechen kann...
Und „Problembeschreibung“ habe ich in Anführungszeichen geschrieben, weil auch dein neues Posting diese Bezeichnung kaum verdient - nicht nachvollziehbar, weder was genau du machst, noch was dabei passiert.
Bitte lies die Tipps für Fragende noch mal, und liefere uns dann eine Problembeschreibung, die ausreichend Informationen enthält, damit wir dir weiterhelfen können.
MfG ChrisB
Diese neue „Problembeschreibung“ passt kaum zu dem, was du vorher geschrieben hast,
Das ist jetzt auch ein neues Problem! ;)
Ich sehe die Variablen mit ihren Werten, jetzt weiß ich aber leider immer noch nicht, wie ich die Werte der Variablen in das Textarea reinschreibe, weil ich nicht weiß wie ich die Variable "Nachricht" ansprechen kann...
Und „Problembeschreibung“ habe ich in Anführungszeichen geschrieben, weil auch dein neues Posting diese Bezeichnung kaum verdient - nicht nachvollziehbar, weder was genau du machst, noch was dabei passiert.
Also: Ich habe den Quellcode, den Tom in seinem Beitrag erwähnt hat, zu meinem hinzugefügt und PHP schreibt mir jetzt die Variablen und die zugewiesenen Werte, doch den Wert der Variable "Nachricht", welche den Text, den der User zuvor im Textarea verfasst hat, beinhalten soll, kann PHP, sobald Zeilenumbrüche vorhanden sind, nicht ausgeben. Das lässt mich zu der Vermutung kommen, dass die Zeilenumbrüche das Problem darstellen...
Ich hoffe, dass ich jetzt mein Problem ausführlich genug geschildert habe und mir jemand weiterhelfen kann :)
Mit freundlichen Grüßen,
Pizza
Hi,
Diese neue „Problembeschreibung“ passt kaum zu dem, was du vorher geschrieben hast,
Das ist jetzt auch ein neues Problem! ;)
Das hast du mit keinem Wort erwähnt - bitte drücke dich deutlich aus.
Also: Ich habe den Quellcode, den Tom in seinem Beitrag erwähnt hat, zu meinem hinzugefügt
Wie sieht das aus?
und PHP schreibt mir jetzt die Variablen und die zugewiesenen Werte, doch den Wert der Variable "Nachricht", welche den Text, den der User zuvor im Textarea verfasst hat, beinhalten soll, kann PHP, sobald Zeilenumbrüche vorhanden sind, nicht ausgeben. Das lässt mich zu der Vermutung kommen, dass die Zeilenumbrüche das Problem darstellen...
Ich hoffe, dass ich jetzt mein Problem ausführlich genug geschildert habe und mir jemand weiterhelfen kann :)
Nein.
„Kann PHP nicht ausgeben“ ist immer noch nicht nachvollziehbar.
MfG ChrisB
Also: Ich habe den Quellcode, den Tom in seinem Beitrag erwähnt hat, zu meinem hinzugefügt
Wie sieht das aus?
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_GET,1));
echo "</pre>\r\n";
und PHP schreibt mir jetzt die Variablen und die zugewiesenen Werte, doch den Wert der Variable "Nachricht", welche den Text, den der User zuvor im Textarea verfasst hat, beinhalten soll, kann PHP, sobald Zeilenumbrüche vorhanden sind, nicht ausgeben. Das lässt mich zu der Vermutung kommen, dass die Zeilenumbrüche das Problem darstellen...
Ich hoffe, dass ich jetzt mein Problem ausführlich genug geschildert habe und mir jemand weiterhelfen kann :)Nein.
„Kann PHP nicht ausgeben“ ist immer noch nicht nachvollziehbar.
Puh...also es kommt eine Fehlermeldung, sobald man Zeilenumbrüche im Textarea verwendet. Um gleich eine weitere mögliche Frage zu beantworten: Als Fehlermeldung wird folgendes angezeigt:
"D:\Program Files\Xampp\xampp\htdocs\Homepage\send_mail.php on line 49"
Und in Line 49 von send_mail.php steht das:
"$mailSent = mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom);"
Was mich zu der Vermutung veranlasst, dass es an den Zeilenumbruch, bzw. Zeilenumbrüchen liegt, ist, dass die Fehlermeldung nur kommt, wenn man einen, bzw. mehrere Zeilenumbrüche im Textarea-Feld verwendet ;)
Jetzt alles klar? ^^
Mit freundlichen Grüßen,
Pizza
Hi,
Jetzt alles klar? ^^
Nur, dass du uns offenbar veräppeln willst.
Puh...also es kommt eine Fehlermeldung, sobald man Zeilenumbrüche im Textarea verwendet. Um gleich eine weitere mögliche Frage zu beantworten: Als Fehlermeldung wird folgendes angezeigt:
"D:\Program Files\Xampp\xampp\htdocs\Homepage\send_mail.php on line 49"
Das ist nur die Angabe, wo der Fehler aufgetreten ist.
Der eigentliche Fehler ist das auch immer noch nicht.
Und in Line 49 von send_mail.php steht das:
"$mailSent = mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom);"
Wieso erwähnst du jetzt zum ersten Mal - bzw., eigentlich erwähnst du es immer noch nicht explizit - dass du eine Mail mit der Funktion mail versenden willst?
Denkst du nicht, dass das für uns irgendwie wissenswert wäre? Wissenswerter als dein ganzes Gefasel von Textareas, die offenbar höchstens ganz nebensächlich etwas mit dem Problem zu tun haben?
Wo du dort jetzt den Inhalt des Parameters "Nachricht" verwendest, können wir an Hand dieser einen Zeile immer noch nicht erkennen ...
*Seufz*
Entweder stellst du dich gerade extra dämlich an, oder du willst unsere Geduld auf die Probe stellen. Meine jedenfalls ist fast zu Ende.
MfG ChrisB
Hi,
Jetzt alles klar? ^^
Nur, dass du uns offenbar veräppeln willst.
Sicherlich nicht :/
Und in Line 49 von send_mail.php steht das:
"$mailSent = mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom);"Wieso erwähnst du jetzt zum ersten Mal - bzw., eigentlich erwähnst du es immer noch nicht explizit - dass du eine Mail mit der Funktion mail versenden willst?
Weil ich bis grad eben (und immer noch) der Meinung bin/war, dass das bei meinem Problem jetzt überhaupt keine Rolle spielt, denn ich möchte ja nur den Wert der Variable "$nachricht" wiedergeben. Den Text, den man zuvor in ein Textarea geschrieben hat, soll dann auf der nächsten Seite erneut im Textarea angezeigt werden, weshalb ich diesen mit "?nachricht=TEXT" in die URL schreibe, um ihn später nocheinmal auszulesen, doch sobald Zeilenumbrüche in diesem Text vorhanden sind, erscheint eine Fehlermeldung und das ist mein Problem...ich möchte den Text GENAUSO wieder in das Textarea schreiben, wie er dort ursprünglich stand.
Denkst du nicht, dass das für uns irgendwie wissenswert wäre?
NEIN! Denn meiner Meinung nach hat das äußerst wenig mit der mail-Funktion zu tun!
Entweder stellst du dich gerade extra dämlich an, oder du willst unsere Geduld auf die Probe stellen. Meine jedenfalls ist fast zu Ende.
Keins von beidem. Ich wollte euch halt nicht meinem Quellcode hier hinknallen und sagen: "Hier ist irgendwo ein Fehler" , denn ohne Erklärung bringt euch das vermutlich wenig... :/
Wo du dort jetzt den Inhalt des Parameters "Nachricht" verwendest, können wir an Hand dieser einen Zeile immer noch nicht erkennen ...
Also -.-
Das hier ist das Textarea mit namen="Nachricht" auf Seite 1:
<textarea name="Nachricht" cols="50" rows="8"><?php echo $_GET['nachricht']; ?></textarea>
Dieses wird an Seite 2 versendet und dort soll der Inhalt dieses Feldes in einer Variable in der URL abegespeichert werden (u.a. werden anderen Variablen auch noch Werte zugewiesen)...
window.location='index.php?content=kontakt&Name=$name&Mail=$email&Betreff=$betreff&Nachricht=$nachricht';
, um diesen dannach wieder auszulesen und in das ursprüngliche Textarea einzufügen:
<textarea name="Nachricht" cols="50" rows="8"><?php echo $_GET['nachricht']; ?></textarea>
Der Sinn des ganzen soll darin bestehen, dass wenn das Senden des Textareas nicht möglich ist, der User zurück auf Seite 1 geleitet wird und dort seinen bereits geschriebenen Text wieder im Textarea findet! ;)
So ich hoffe, dass jetzt endlich alles klar ist -.-'
Mit freundlichen Grüßen,
Pizza
Hi,
Wieso erwähnst du jetzt zum ersten Mal - bzw., eigentlich erwähnst du es immer noch nicht explizit - dass du eine Mail mit der Funktion mail versenden willst?
Weil ich bis grad eben (und immer noch) der Meinung bin/war, dass das bei meinem Problem jetzt überhaupt keine Rolle spielt, denn ich möchte ja nur den Wert der Variable "$nachricht" wiedergeben.
Du bekommst einen Fehler an der Stelle gemeldet, wo du die Funktion mail verwendest - wie kommst du dann auf die Idee, irgendwas anderes wäre für den Fehler verantwortlich, nur diese Stelle nicht?
Den Text, den man zuvor in ein Textarea geschrieben hat, soll dann auf der nächsten Seite erneut im Textarea angezeigt werden, weshalb ich diesen mit "?nachricht=TEXT" in die URL schreibe, um ihn später nocheinmal auszulesen, doch sobald Zeilenumbrüche in diesem Text vorhanden sind, erscheint eine Fehlermeldung und das ist mein Problem...
Wenn du nur Text in einer Textarea anzeigen willst, brauchst du dafür ganz sicher nicht die Funktion mail.
So ich hoffe, dass jetzt endlich alles klar ist -.-'
Nein.
Wofür du in deinem Script mail verwendest, und mit welchen Daten, wissen wir immer noch nicht ... *seufz again*.
MfG ChrisB
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
Hi,
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)
Wenn du danach gleich gefragt hättest, hätte ich dir das auch gleich beantworten können. Hast du aber nicht - sondern jede Menge Quark drumherum erzählt.
// Mail versenden und Versanderfolg merken
$mailSent = mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom);
Bekommst du jetzt eine auf diese Zeile bezogene Fehlermeldung, oder nicht?
Und wenn ja - wie genau lautet diese?
// 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>";
Natürlich löst das einen JavaScript-Fehler aus, wenn in irgendeinem der Feldinhalte ein Zeilenumbruch vorkommt - weil du damit ein Textliteral erzeugst, dass einen Zeilenumbruch enthält, und damit die JavaScript-Syntax verletzt.
Wenn du die Zeilenumbrüche in dieser Stelle in eine JavaScript-Variable „übergeben“ willst, dann wandle sie in \n um.
> 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!');`{:.language-javascript}]
> und ihm soll es möglich sein, den Versand der Mail erneut zu versuchen (das wird ihm auch über Alert mitgeteilt).
Das ist in sich schon ziemlicher Unsinn.
Informiere dich mal über das Stichwort Affenformular - damit kann man sowas vernünftig umsetzen.
> Im Prinzip klappt das Übertragen aller Felder solange im TEXTAREA keine Zeilenumbrüche vorhanden sind
> UND DAS IST MEIN PROBLEM!
Ja, inzwischen wird klar, was dein Problem ist.
Was du anfangs an Beschreibung geliefert hast, trug dazu jedoch gar nichts bei, sondern führte nur auf eine vollkommen falsche Fährte.
> 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?!
Am besten gar nicht, s.o. (Affenformular).
Falls du doch bei dieser halbgaren Frickellösung bleiben willst - str\_replace kann die Zeilenumbruchzeichen finden und ersetzen.
> So... jetzt habe ich hoffentlich das Problem ausreichend beschrieben (auch wenn ich immer noch der Meinung bin, dass das nicht notwendig war)?!
Hoffentlich siehst du inzwischen ein, dass es sehr wohl notwendig war.
Und das liegt nicht zuletzt daran, dass du dich reichlich ungeschickt angestellt hast bei der Formulierung, was eigentlich dein Problem ist bzw. was du erreichen willst, als auch daran, dass du selbst noch recht wenig zu durchschauen scheinst, was genau den Fehler eigentlich ausgelöst hat. Nicht PHP „hat ein Problem mit der Ausgabe der Zeilenumbrüche“, wie du dich ausgedrückt hast - ganz und gar nicht. Aber der JavaScript-Code, den dein PHP-Script erzeugt hat, der war ungültig.
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
Hello Pizza,
das habe ich mir schon fast gedacht...
Es gibt eben immer noch ein "Anders"
<form method="post" action="index.php?content=send_mail">
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_GET,1));
echo "</pre>\r\n";
Was hat jetzt die POST-Methode der Datenübertragung mit den angezeigten GET-Variablen zu tun?
Richtig! Gar nichts.
Schreibe stattdessen
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_POST,1));
echo "</pre>\r\n";
und Du wirst die Post-Parameter zu Gesicht bekommen. Und diese Methode ist dann auch brauchbar, bei PHP-Standardeinstellungen einige Hundert Kilobytes Daten zu übermitteln.
Aber
<p><label>Name:<br><input type="text" name="Name" value="<?php echo $_GET['Name']; ?>"></label</p>
ist immer noch eine tödliche Sicherheitslücke für Cross-Site-Scripting, auch wenn Du $_GET gegen $_POST austauschst. Bitte lies Dir hierzu den Artikel
http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel
durch, der Dir zeigen soll, dass man aus fremden Quellen erhaltene Daten nicht einfach ungeprüft und unbehandelt wieder ausgeben darf.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
<textarea name="Nachricht" cols="50" rows="8"><?php echo $_GET['nachricht']; ?></textarea>
das ist schonmal schlecht - sobald jemand ein '<' eingibt, kommt der HTML-Parser durcheinander. Kontextwechsel beachten; HTML-eigene Zeichen müssen geeignet maskiert werden. An dieser Stelle mit htmlspecialchars().
window.location='index.php?content=kontakt&Name=$name&Mail=$email&Betreff=$betreff&Nachricht=$nachricht';
JETZT kommen wir weiter! Du hast also gar kein PHP-Problem, sondern ein Javascript-Problem!
Stell dir vor, $nachricht enthielte Zeilenumbrüche - wie würde dann der erzeugte Javascript-Code aussehen? Jedenfalls nicht mehr syntaktisch korrekt. Kontextwechsel beachten! An dieser Stelle vor allem, indem du dafür sorgst, dass anstelle eines Zeilenumbruchs im Javascript-String ein \ gefolgt von n ausgegeben wird (NICHT das Steuerzeichen \n).
So long,
Martin
hi,
window.location='index.php?content=kontakt&Name=$name&Mail=$email&Betreff=$betreff&Nachricht=$nachricht';
Die einzelnen URI-Komponenten (z.B. $nachricht) könntest Du mit
encodeURIComponent()
in ASCII umwandeln, somit wäre der URI ok und serverseitig bekommst Du alles zurück. In PHP gibts dazu sicher auch eine Funktion, Stichwort: Percent-Encoding. Je nachdem, wie Du die Seite ausgibst, Du kannst es entweder mit JS oder mit PHP machen.
Hotti
Hello,
Also: Ich habe den Quellcode, den Tom in seinem Beitrag erwähnt hat, zu meinem hinzugefügt und PHP schreibt mir jetzt die Variablen und die zugewiesenen Werte, doch den Wert der Variable "Nachricht", welche den Text, den der User zuvor im Textarea verfasst hat, beinhalten soll, kann PHP, sobald Zeilenumbrüche vorhanden sind, nicht ausgeben.
Wer gibt das denn aus? PHP auf seiner Konsole oder der Browser in seinem Fenster?
Der Browser bekommt die darzustellenden Daten vom Webserver als HTTP-Dokument, oder?
Dann ist die Nutzlast darin in HTML verfasst, oder?
Wie übergibst Du den Inhalt von $_GET['nachricht'] an die das Textarea-Element im HTML-Code? Zeig uns das mal bitte.
Und dann schau nach, was am Browser überhaupt als HTML-Quelltext ankommt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
Wenn du nicht weißt, wie man auf die Elemente in einem Array zugreift, dann beschäftige dich mit den Grundlagen: http://www.php.net/manual/en/language.types.array.php
doch ich weiß schon, wie man auf die Elemente im Array GET zugreift, aber PHP fügt bei mir den Inhalt des Elementes "Nachricht" (ist der Name des Feldes textarea) nicht ein
wo soll PHP irgendwas einfügen? PHP stellt dir den URL-Parameter, so wie er übergeben wird, als Element im Array $_GET zur Verfügung.
wenn Zeilenumbrüche drinnen sind...
Oder meinst du, dass Zeilenumbrüche gar nicht erst im URL-Parameter stehen? Dann läuft beim Formularversand etwas schief. Da kann PHP aber nichts dafür.
Wenn du ins Formular eingibst:
+-------------------------------------
| Mehrere
| Zeilen
| mit
| Umbruch
+-------------------------------------
... dann muss der Feldinhalt als "Mehrere%0D%0AZeilen%0D%0Amit%0D%0AUmbruch" in der URL-Zeile vorkommen. Wenn nicht, geht an der Stelle schon etwas schief. PHP macht beim Parsen der URL-Parameter aus den maskierten Steuerzeichen wieder "echte" Zeilenumbrüche und stellt den Wert dann in $_GET zur Verfügung.
aber ich möchte, dass die Nachricht wieder so wie am Anfang vom User geschrieben in das Textarea eingetragen wird ;)
Dann musst du sie auch genau so verarbeiten wie eingegeben.
So long,
Martin