Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
umlaut sonderzeichen verhinderung geht nicht richtig ;( [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
umlaut sonderzeichen verhinderung geht nicht richtig ;(


 
D-Style
21-01-2005, 00:49 
 
Hallo,

habe in meinem formular versucht die sonderzeichen zu verbieten wie folgt:



if(preg_match("/^[a-z0-9]/i", $UserName)) { } else {
$fehler = 1;
$fehlermeldung = '<b><span style="color:red;">
Bitte keine Sonderzeichen im Usernamen verwenden.</span></b><br><br>';
}



nur leider funktioniert das nicht richtig sondern nur wenn ein sonderzeichen am anfang ist. Wenn es irgendwo später kommt scheint es durchzukommen...
habe schon viel dazu hier im forum gelesen, aber habe es bisher leider nicht selbst hinbekommen, würde mich freuen wenn mir jemand helfen könnte..

es soll zum schluß nur "a-z" "0-9" und "-" sowie "_" erlaubt sein.

 
Milian
21-01-2005, 01:14 
 
/^[a-z0-9]/i
Sucht wegen dem ^ nach einem Zeichen mit einem Buchstaben, a-z oder nach einer Zahl 0-9 und zwar Casesensitive durch das i.
Also das ^ wegnehmen?

Also, so würd ich es machen:

<?

$str = "acd0123";

if(!preg_match("/^[a-z0-9\-_]+$/s",$str))
echo "falsch";
else
echo "richtig";

?>

 
D-Style
21-01-2005, 01:18 
 
habs mal weggenommen.

hat aber eigentlich nix geändert..

älohaä zb kann ich noch reggn eignetlich alles was mit einem verbotenen zeichen anfängt und danach irgend ein anderes hat...

das einzige was nun nicht geht sind namen die nur aus den zeichen die net gehen sollen...

edit:

habs mal gemacht sieht nun so aus:


$str = "acd0123";

if(!preg_match("/^[a-z0-9-_]+$/s",$str)) {
$fehler = 1;
$fehlermeldung = '<b><span style="color:red;">
Bitte keine Sonderzeichen im Usernamen verwenden.</span></b><br><br>';
}


allerdings hat sich dadurch eigentlich nichts geändert, ich kann immernoch zb argäas registrieren..

nur so ne nebenfrage, wieso steht im str grade acd0123 ?

 
D-Style
21-01-2005, 01:40 
 
sry mein fehler habe statt $UserName nun dein $str dringehabt ^^
mit dem $userName geht es glaube ich jetzt !!

Ich danke dir vielmals !!

 
Sh4mE
21-01-2005, 01:44 
 
<?

$str = "äase"; // Der Teststring, also was überprüft werden soll,
//bei dir ist dass dann $_POST[...]

/*
überprüft, ob der String startet(^), aus min. einem oder aber
unendlichen vielen Zeichen(+) des formats: a-z, 0-9, -,_
besteht([a-z0-9\-_])und dann endet. ($)
Er kann also nur aus Zeichen a-z, 0-9, - und _ bestehen.
*/

if(!preg_match("/^[a-z0-9\-_]+$/s",$str))
echo "falsch";
else
echo "richtig";

?>

Hier nochmal leicht abgeändert:
<?

$str = array("absasdfkljadföadkfj","123489120.","123asdf","123_asdf-123"," as");

foreach ($str as $v)
{
echo $v." wird ";
if(!preg_match("/^[a-z0-9\-_]+$/s",$v))
echo "nicht akzeptiert!\n";
else
echo "akzeptiert!\n";
}

?>

liefert:

absasdfkljadföadkfj wird nicht akzeptiert!
123489120. wird nicht akzeptiert!
123asdf wird akzeptiert!
123_asdf-123 wird akzeptiert!
as wird nicht akzeptiert!

 
D-Style
21-01-2005, 01:49 
 
ist irgendwie kompliziert gemacht das ganze..

hab ihn noch ein bisschen verändert:


if(!preg_match("/^[a-z0-9-_]+$/is",$UserName))


damit auch großbuchstabn gehen ;)

was beutet genau das kleine s hinter dem / ?

ich hab zwar gelesen:
--
Der s-Modifier veranlasst den Parser dazu, die Zeichenkette, auf die der reguläre Ausdruck angewendet wird, in einzelne Zeilen zu unterteilen - das Pattern wird hierbei also nicht auf die ganze Zeichenkette bezogen, sondern jede Zeile einzeln behandelt
--
aber das sagt mir ehrlich gesagt nix ^^

 
Milian
21-01-2005, 01:51 
 
Ist überflüssig :)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:35 Uhr.