textarea Zeichenbegrenzung durch Javascript & PHP

8

Ich verwende 2 Methoden, um zu überprüfen, dass der Benutzer nicht zu viele Zeichen in ein Textfeld eingibt:

1) (passiv) PHP:

%Vor%

2) (active-whyle typing) Javascript:

%Vor%

Und das Textfeld selbst ist wie folgt (html):

%Vor%

Beide Methoden funktionieren, außer dass die PHP-Funktion strlen () Renditen (Zeilenumbrüche) anders zu zählen scheint als meine Javascript-Funktion.

Weiß jemand, wie man das löst, so dass beide die gleichen # Zeichen zählen, unabhängig von Zeilenumbrüchen & amp; Leerzeichen usw.

Vielen Dank!

    
RLJ 01.01.2011, 18:30
quelle

4 Antworten

3

Sie müssen Zeilenumbrüche zuerst konvertieren. In JavaScript ist ein Zeilenumbruch ein einzelnes Newline-Zeichen. Wenn es gesendet wird, gibt es zwei. Sie können sie normalisieren:

%Vor%

Und dann können Sie die Länge des Textfelds zählen.

    
Thai 01.01.2011, 19:21
quelle
1

Javascript steht normalerweise für Zeilenumbrüche mit nur dem neuen Zeilenzeichen (z. B. / n) im Browser selbst und nicht für das / r / n-Paar. Nach dem Senden wird es jedoch dargestellt durch / r / n-Paar (aka " CR LF ") gemäß der HTML 4.01-Spezifikation .

Je nachdem, auf welche Weise Sie die Zeilenumbrüche zählen, können Sie die Zeichenfolge entweder clientseitig "standardisieren" (z. B. Zeilenumbrüche zählen als zwei Zeichen; wenn Sie möchten, dass die / r / n-Paare behandelt werden) oder serverseitig (z. B. als ein Zeichen zählen, wenn Sie nicht für die / r / n-Paare behandeln wollen).

Meine persönliche Auswahl wäre es damit umzugehen, so dass das / r / n erhalten bleibt, da Zeilenumbrüche typischerweise mit diesen Zeichen in dargestellt werden die meisten Systeme . Allerdings konnte ich die Logik bei der Darstellung eines Zeilenumbruchs als "ein Zeichen" für den Endbenutzer sehen, da es sich um einen einzigen Tastendruck handelt.

    
Rocky Madden 01.01.2011 19:18
quelle
1

@RLJ: Hier ist eine andere Methode, die verhindert, dass der Benutzer mehr Text als die maximale Länge mit JavaScript eingeben kann und wenn JavaScript deaktiviert ist, wird PHP die Fehlermeldung ausgeben, wenn es zu viele Zeichen gibt. Dies ist ein Beispielskript, das ich mit der von mir verwendeten JavaScript-Funktion erstellt habe (Datei als 4575150.php in localhost speichern und testen):

%Vor%     
stealthyninja 01.01.2011 20:42
quelle
0

Hast du Magie in PHP zitiert? Versuchen Sie, get_magic_quotes_gpc () aufzurufen.

Wenn Sie dies tun, werden alle Textdaten, die über GET oder POST an den Server gesendet werden, mit Schrägstrichen versehen. Dadurch werden Zeichen wie ",", \, $, neue Zeilenzeichen durch die Kombination zweier Zeichen dargestellt: \ und das ursprüngliche Zeichen oder im Falle eines Wagenrücklaufs \ r \ n.

Um es auf dem Server zu verwenden, können Sie Daten wie folgt filtern:

%Vor%

Ich hoffe, das hilft. Ivan

    
Ivan Hušnjak 01.01.2011 19:13
quelle