Eintragung in Textfelder
martin43
- php
Hallo, ich übergebe Einträge einer Formular-Seite an eine Korrektur-Seite. Für notwendige Korrekturen kann zur Formular-Seite zurückgeklickt werden. Dabei werden die bereits eingetragenen Daten per <INPUT type="hidden" name="telefon" ...> an die Formular-Seite übertragen. Klappt auch alles wunderbar (Kontrolle auf der Formular-Seite: echo "telefon: $telefon"; ).
Die Eintragung wird eingefügt mit
<FORM action='kontakt_kontrolle.php' method='GET' enctype='multipart/form-data'>
<INPUT type='text' size='30' maxlength='45' name='telefon' value=<? echo $telefon; ?>>.
Das klappt allerdings nur bei Telefonnummern, die im Format 1234567890 (also ohne Leerzeichen) eingetragen werden. Wenn Leerzeichen eingefügt wurden (z.B. 123 45 67 89), dann werden nur die Zeichen 123 in das Text-Feld eingetragen.
Was ist die Ursache dafür?
Gruß Martin
PS: Bei <TEXTAREA .....> habe ich keine Probleme
Hello,
Was ist die Ursache dafür?
Schaun wir mal, was da steht:
<INPUT type='text' size='30' maxlength='45' name='telefon' value=<? echo $telefon; ?>>.
und nach dem Parsing:
<INPUT type='text' size='30' maxlength='45' name='telefon' value=123 45 67 89>
------------
Was soll der Browser denn mit den Attributen 45, 67 und 89 anfangen?
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
ein wenig mehr php-code wäre hilfreich...
Klingt aber danach, dass du die Telefonnummer mit
$telefon = (int)$_GET['telefon'];
übernimmst. Dann macht der Parser alles richtig, er liest es als "int" solange er Ziffern findet (von links an). Das Problem löst du, indem du vorher die Leerzeichen entfernst.
$telefon = (int)(str_replace(' ','',$_GET['telefon']));
Hello,
Klingt aber danach, dass du die Telefonnummer mit
$telefon = (int)$_GET['telefon'];
übernimmst.
Sieht eher danach aus, dass beim Generieren des HTML-Codes Zeichen vergessen wurden :-))
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo Tom, peinlich, peinlich!
Zwei kleine Striche und schon ist die Welt in Ordnung!
Gruß Martin
echo $begrüßung;
Zwei kleine Striche und schon ist die Welt in Ordnung!
Nein, ist sie nicht. Tipp doch mal
'><script>alert(23)</script>
in dein Telefonnummernfeld ein.
Lehrsatz: Wann immer du Werte in einen anderen Kontext bringst, musst du sie dem Kontext entsprechend behandeln!
Wenn du das nicht beachtest, bekommst du entweder Fehler(meldungen) oder Sicherheitslücken.
Für HTML müssen die HTML-eigenen Zeichen berücksichtigt werden. PHP kennt dafür die Funktion htmlspecialchars().
Weitere Beispiele:
echo "$verabschiedung $name";