[PHP] GET-Variable zu lang ??

Toby

Cadet 4th Year
Registriert
Mai 2003
Beiträge
107
Hallo zusammen,

in einem kleinen Newsletterscript versende ich meine Newsletter.

Ein kleines Java-Script sorgt dafür, daß sich die Datei solange selbst aufruft, bis keine Datensätze in der Datenbank mehr voranden sind.


Das Script sieht wie folgt aus:


PHP:
echo "<script language='JavaScript' type='text/javascript'>";
echo "self.location.href = 'http://www.url.de/newsletter_action.php?start=$start&nachricht=$nachricht'; ";
echo "</script> ";


Mein Problem ist, daß die Variable $nachricht ein <textarea> Feld ist, in welchem mehrere Zeilen stehen.
Schreibe ich in das Textarea Feld nur ein paar Wörter funktioniert alles tadellos.

Doch werden es mehrere Zeilen, bricht das Script ab und ich erhalte vom Browser folgdende Fehlermeldung: "nicht abgeschlossene Zeichenfolgekonstante"

Weiss jemand Rat ??

grüße
Toby
 
Am besten speicherst du den Text auch in der Datenbank und übergibst nur noch die ID, dann kann der Text so lange werden wie du willst und du kriegst keine Probleme mit Zeilenumbrüchen. Als angenehmen Nebeneffekt hast du zuätzlich eine Chronik über alle versendeten Texte.
 
Also erstens darf eine HTTP Get nicht beliebig lang werden. Eventuell solltest du ein HTTP Post benutzten.

Dankenbank ablegen ist eine Variante. Die andere ist das du die Daten vernüftig quotest. Aber bitte nicht mit Magicquotes sondern mit dem Aufruf:
addslashes($str);


Damit sollten \r oder \r\n vernüftig gequotet sein sodass die URL wieder valid wird.

So long
der_guru
 
Vielen Dank Euch beiden für die guten Lösungen.

Ich habe mich jetzt mal für die Speicherung in der Datenbank entschieden.

Klappt prima !

Mercy für die, wie immer hier im Forum, klasse Hilfe !

gruss
Toby
 
Der Vollständigkeit halber: hab mal gelesen, dass eine GET-Query (also Parameter) nie länger sein darf als 256 Zeichen.

Warum?
Wird ein GET gemacht, werden die Parameter direkt in die erste Zeile des HTTP-Requests geschrieben. Je nach Webserver-Implementation können nur bestimmte Zeilenlängen verarbeitet werden. Sprich: manche Webserver erfassen u.U. nicht die gesamten Parameter und deren Werte.

POST Parameter und Werte werden anders angegeben, und zwar NACH dem HTTP-Header als Request-Data. Das macht der Browser automatisch.

Deswegen nutzen die meisten Formulare ja auch die POST-Variante.


Meine Faustregel daher: wenn Texte ins Spiel kommen (egal ob via input oder textarea): POST verwenden! Kleine Werte wie IDs oder Options aus Select oder Radio/Checkboxes sind noch in GET zu verkraften, solange die Parameternamen nicht ellenlang werden. Im Zweifelsfall einfach POST verwenden.
 
Zurück
Oben