@Aware: Aha, a jak za pomocą strlen sprawdzisz, czy konkretny znak w haśle może być stosowany?
@tukan:
Generalnie ja bym zrobił to "na dwa".
Po pierwsze, sprawdził długośc hasła (to co pisał Aware).
Po drugie, sprawdził, czy w haśle nie są zawarte "niedozwolone" znaki. I użył preg_replace, na przykład tak:
$pass = "1qa2ws3ed4rf5tg6yh";
$allow = "/[asdfghjkl12345123]/";
Dozwolone znaki otaczamy ukośnikami i nawiazami kwadratowymi.
Jeśli chcesz, aby któryś z tych znaków był dozwolony, poprzedzasz backslashem: \
Jeśli backslash ma być dozwolonym wpisujesz go dwa razy: \\
Wszystkie litery (małe) możesz skrócić do [a-z], wszystkie duże do [A-Z], a wszystkie małe i duże do [a-zA-Z]. Cyfry do [0-9].
Jeśli znak "-" ma być dozwolony, musisz go umieścić na początku lub końcu
I tak litery (niezależnie od wielkości) i cyfry i znak "minus" skrócisz do [-a-zA-Z0-9].
Więcej nie piszę - poczytaj manual.