[HTML] Leerzeichen in Eingabefelder verhindern

Zweipunktnull

Commander
Registriert
Dez. 2004
Beiträge
2.546
Hallo!

Ich würde gerne ein Eingabefeld erstellen, in dem keine Leerzeichen verwendet werden dürfen.
(Das ist notwendig für mein Registrierungsscript. Wenn Leerzeichen im Usernamen vorkommen kanns Probleme geben.)

Nun könnte ich ja "einfach" mit PHP prüfen, ob Leerzeichen vorkommen und dann ne Fehlermeldung ausgeben. Aber ich bin ein fauler Mensch. :)

Ich hab ich an manche Internetseiten erinnert, auf denen ich bereits im Forumlarfeld keine Leerzeichen machen kann. Wenn ich auf Leertaste drücke passiert nichts. Wisst ihr was ich meine? Das wäre viel praktischer als wieder irgend so n Überprüfungsscript.

Wie macht man sowas?

mfg
computer freak
 
AW: [HTML]Leerzeichen in Eingabefelder verhindern

Hallo,

[...] Aber ich bin ein fauler Mensch. :) [...]
Wenn das so ist, solltest du lieber auf die Validierung mit JavaScript verzichten und nur über PHP die Daten entsprechend validieren. Um eine serverseitige Überprüfung kommst du - sofern du einen sauberen und sicheren Code schreiben möchtest - nicht herum, da du den Benutzerdaten und clientseitigen Überprüfungen nie trauen kannst.

Zum JavaScript-Thema:
Am einfachsten kannst du dies realisieren, indem du über den Eventhandler "onchange" eine JS-Funktion aufrufst, die den Feldinhalt überprüft und gegebenenfalls Leerzeichen entfernt. Auf den Inhalt des Feldes kannst du per "value" zugreifen.
Die Leerzeichen kannst du ermitteln, indem du den String mit einer Schleife Zeichen für Zeichen durchgehst und jeweils überprüfst, ob es sich bei dem Zeichen um ein Leerzeichen handelt und dieses dann gegebenenfalls entfernst.

MfG mh1001
 
AW: [HTML]Leerzeichen in Eingabefelder verhindern

Der Javascript onchange wird aber nur getriggert wenn bei einem eingabefeld der focus wechselt.
Besser wäre es mit onKeyPress zu kucken ob ein Leerzeichen eingegeben wird. So kannst du direkt dort eine exception werfen.

Aber wenn dus mit PHP machen willst:
PHP:
$eingabe = $_POST['feld'];

if(strpos($eingabe,' ') !== false) {
    exit("Rindvieh!");
}
 
AW: [HTML]Leerzeichen in Eingabefelder verhindern

Okee... dann eben mit PHP. Ich hatte ja gehofft, es gäbe irgend eine HTML anweisung dafür.

so in der art <input type="text" leerzeichen="no"></input> :D

EDIT:
@ enigma
der code is nett:D irgendwie so userfreundlich...
 
Zuletzt bearbeitet:
AW: [HTML]Leerzeichen in Eingabefelder verhindern

Hey Ho.

Wollte mein Formular auch vor schützen das ein Pflichtfeld nur durch ein Leerzeichen ausgefüllt wird. Jetzt wollte ich den obenstehenden PHP Code bei mir einfügen aber geht nicht so recht.
Hab es getestet und er lässt trotzdem ein Leerzeichen zu!

PHP:
if(empty($_POST['name']) != false){
	print "<div class=\"post_warn\">Name : <i>kein Name angegeben</i></div>\n";
	$warnung = false;

} else {

	if(strpos($_POST['name'],' ') != false) {
		print "<div class=\"post_warn\">Name : <i>kein Name angegeben</i></div>";
		$warnung = false;
	} else {
		print "<div class=\"post_ok\">Name : ".$_POST['name']."</div>\n";
	}
}

Wo liegt der Fehler?

[EDIT]
Irgendjemand kann mir doch bestimmt helfen oder !?
 
Zuletzt bearbeitet:
AW: [HTML]Leerzeichen in Eingabefelder verhindern

Hier hilft dir die PHP-Funktion trim() weiter, siehe hier.
Diese Funktion entfernt Leerzeichen am Anfang und und Ende eines Strings.
In der Überprüfung fügst du dann einfach noch das trim in die empty-Funktion ein, z.B. so:

PHP:
$name = trim($_POST["name"]);
if(empty($name))
{
  // Fehlermeldung ausgeben
}
else
{
  // Skript ausführen, das die Post-Daten verarbeitet
}
 
Zuletzt bearbeitet: (Semikolon vergessen ^^)
Hier hilft dir die PHP-Funktion trim() weiter
trim() entfernt aber nur Leerzeichen am Anfang und Ende einer Zeichenkette, nicht aber Leerzeichen darin.

Wenn du alle Leerzeichen entfernen oder austauschen willst, geht das z.B. so:

Code:
$str='Die böse Zeichenkette';
$str=preg_replace("/\s/s","_",$str);

Das macht das daraus:

'Die_böse_Zeichenkette' ;)
 
trim() entfernt aber nur Leerzeichen am Anfang und Ende einer Zeichenkette, nicht aber Leerzeichen darin.
Das ist ja egal, denn die Funktion
PHP:
$eingabe = $_POST['feld'];

if(strpos($eingabe,' ') !== false) {
    exit("Rindvieh!");
}
erkennt ja schon alle Leerzeichen, eben bis auf das erste, denn die hat die Position 0 und 0 ist das selbe wie false.

Dein Vorschlag mit RegExp finde ich erstens kompliziert und zweitens kann man damit keine fehlermeldung anzeigen lassen, sonder die leerzeichen werden durch irgendwas ersetzt.

die Kombination aus trim() und if(strpos($eingabe,' ') !== false) ist schon besser...
 
Zuletzt bearbeitet:
Hallo,


@Enigma

Stimmt, da hatte ich mich natürlich im Eventhandler vertan. ;)


@Computer Freak

"0" und "false" ist nicht das selbe. Auch in PHP gibt es - obwohl das wohl oft untergeht - verschiedene Dateitypen. Befindet sich das Leerzeichen im obigen Beispiel an erster Stelle, so wird von strpos() eine "0" als Integer zurückgegeben. Kommt kein Leerzeichen vor, so wird das boolsche "false" zurückgegeben. Bei Vergleichsoperationen mit "===" und "!==" wird dabei auch strikt zwischen beidem unterschieden (s. PHP-Dokumentation, Anhang P).

Somit ist ein vorheriges Verwenden der Funktion trim() unnötig. Ein Beispiel hat ja Enigma im obigen gepostet.


@digiTALE

Wenn es nur um die Überprüfung der Daten geht und die "getrimmten" Strings nicht weiterverarbeitet werden sollen, ist hier ein Ansatz mit regulären Ausdrücken normalerweise die bessere Lösung. Dies könnte dann zum Beispiel so aussehen:

PHP:
if(preg_match("#^\s*$#", $_POST["beispielfeld"]) == 1)
{
  echo "Es wurden nur Whitespace-Zeichen in das Feld eingetragen!";
}
else
{
  echo "Das Feld wurde ordnungsgemäß ausgefüllt!";
}
MfG mh1001
 
Zuletzt bearbeitet:
@ Adagio

Ich wollte verhindern das man nur durch ein Leerzeichen das Feld ausfüllt, das logischerweise am Anfang steht. Denn ich prüfe ja anschließend die Felder ob ein Inhalt vorhanden ist. Bei der jetzigen Überprüfung kann man Pflichtfelder einfach durch ein Leerzeichen ersetzen ohne irgendwas anderes eingetragen zu haben und dann wird halt das Leerzeichen in die Datenbank gespeichert.

Die Leerzeichen sollen leider nicht ersetzt werden aber trotzdem danke für den Tipp :).

---

Aber die Lösung mit trim() war auch nicht schlecht. Nur habe ich bemerkt das man nicht nur das Feld mit einem Leerzeichen sondern auch mit ein paar sonderzeichen ausfüllen kann.


@ Enigma

Die Daten sollen nur überprüft werden und gehen dann in die Datenbank. Werde es dann bei gelegenheit ausprobieren.


---

THX
 

Ähnliche Themen

K
Antworten
1
Aufrufe
2.647
Mr. Snoot
M
Zurück
Oben