close× Call Us +49 (1805) 01 29 59

SGI Fusion
Thread Author: deusXmachina
Thread ID: 2257
Thread Info
Es gibt 6 Beiträge zu diesem Thema, und es wurde 1891 mal angesehen.
Wer ist hier? 1 Gäste
 Thema drucken
PHP Regex (Passwortabfrage)
deusXmachina
Hi,

hab ein kleines Problem mit RegEx.
Ich möchte, dass das eingegebene Passwort noch einmal in der update_profile_include.php ordentlich geprüft wird.
Standardmäßg steht da folgende RegEx:

[geshi=php]if (!preg_match("/^[0-9A-Z@]{6,20}$/i", $user_new_password)) {
$error .= $locale['436']."<br />\n";
}[/geshi]

Das besagt ja, dass er nur prüft, ob a-z, 0-9 und @ vorkommen.
Ich möchte jedoch auch geprüft haben, dass auf jeden Fall mindestens EINE Zahl sowie EIN Buchstabe darin vorkommt!
Ich probiere und probiere, komme jedoch per RegEx auf keinen grünen Zweig.
Ich würds jetzt spontan (sicher unsauber) über den Weg machen, dass er den String auf [a-z] prüft, ob da mindestens 1 mal grün anschlägt und dasselbe dann bei [0-9]. Kommt der String durch diese Abfragen, so ist er gültig.
Bitte helft mir, da passende Abfragen zu finden - ich bin leider mit meinem Latein am Ende.... :-(
Gruß

deusX
Bearbeitet von deusXmachina am 06.01.2010 00000001 16:49
 
SC-Ad-Bot
 
slaughter

Zitat

Das besagt ja, dass er nur prüft, ob a-z, 0-9 und @ vorkommen.

nicht ganz richtig, es wird geprüft, ob andere zeichen vorkommen als a-Z und 0-9, und falls andere vorkommen gibts eine Error-Message.

Zitat

Ich würds jetzt spontan (sicher unsauber) über den Weg machen, dass er den String auf [a-z] prüft, ob da mindestens 1 mal grün anschlägt und dasselbe dann bei [0-9]. Kommt der String durch diese Abfragen, so ist er gültig.

Warum soll das unsauber sein?
Meiner Meinung nach sogar ziemlich gut, denn dann kannst du eine genaue Fehler-Nachricht ausgeben. wie zB "fehler: in Ihrem Passwort ist keine Zahlr vorhanden. Bitte wählen Sie ein passwort, das eine Zahl enthält."
 
deusXmachina

Zitat

slaughter schrieb:
Warum soll das unsauber sein?
Meiner Meinung nach sogar ziemlich gut, denn dann kannst du eine genaue Fehler-Nachricht ausgeben. wie zB "fehler: in Ihrem Passwort ist keine Zahlr vorhanden. Bitte wählen Sie ein passwort, das eine Zahl enthält."


Wobei ich dann weiterhin bei meinem Problem bleibe: Ich finde einfach keine Lösung. ;-) Bei mir klappt es (fragwürdigerweise) so gut, dass er einfach NIX durchlässt. ;-)

Ich muss anfügen:
Ist es also möglich, in einem String zu prüfen, ob [a-z] mindestens 1 mal vorkommt? Und wenn: Ja - Bitte schreiben, wie das so geht.
Bearbeitet von deusXmachina am 06.01.2010 00000001 16:56
 
slaughter
Probier mal:

if (preg_match("/[A-Z]$/i", $user_new_password)) {
// a-z kommt vor
}

 
deusXmachina
Danke!
Ich weiß, woran es lag. Hatte die ganze Zeit das "^" davor!
Danke sehr!

Anmerkung!
Das Dollar ($) muss bei der RegEx weg, sonst will er immer die Buchstaben AM ENDE der Zeichenkette haben!
Bearbeitet von deusXmachina am 06.01.2010 00000001 18:09
 
slaughter
kein problem Wink
 
Springe ins Forum: