Jak wspomniano w tej Meta Question, Facebook akceptuje dokładnie odwrotną zmianę przypadku naszego hasła. Na przykład:jak zmienić wielkość liter w php? PASSw5ORD do PAssW5ord?
1.- paSSw5ORD (Original password)
2.- PAssW5ord (Case altered to exact opposite, Capital->Small and vice-versa.)
3.- PaSSw5ORD (Only first letter's case altered)
Jak zdobyć drugą odmianę, pod warunkiem, że pierwszy z nich jest oryginalny, wprowadzone przez użytkownika (lub dostać się pierwsza, gdy użytkownik wchodzi druga wersja)? Oto moje zdanie na ten temat.
<?php
$pass = "paSSw5ORD"; //Example password
$pass_len = strlen($pass); //Find the length of string
for($i=0;$i<$pass_len;$i++){
if(!(is_numeric($pass[$i]))){ //If Not Number
if($pass[$i]===(strtoupper($pass[$i]))){ //If Uppercase
$pass2 .= strtolower($pass[$i]); //Make Lowercase & Append
} else{ // If Lowercase
$pass2 .= strtoupper($pass[$i]); //Make Uppercase & Append
}
} else{ //If Number
$pass2 .= $pass[$i]; //Simply Append
}
}
//Test both
echo $pass."\r\n";
echo $pass2;
?>
Ale jak uczynić go przetwarzać haseł ze znakami specjalnymi (wszystkie możliwe na standardowej klawiaturze angielskiej?
[email protected]#$%^&*()_+|?><":}{~[];',./ (Space also)
to nie działa na wszystkie powyższe znaki specjalne.
if(preg_match('/^\[a-zA-Z]+$/', "passWORD")){
//Special Character encountered. Just append it and
//move to next cycle of loop, similar to when we
//encountered a number in above code.
}
Nie jestem ekspertem od RegEx, więc jak zmienić powyższy RegEx, aby upewnić się, że przetwarza wszystkie wyżej wymienione znaki specjalne?
Doesnot oznacza, że ... jeśli w haśle znajduje się symbol $, php po prostu uważa, że jest to nazwa zmiennej. echo "pas $ word", php myśli, że pytam o echo pas + Wartość $ word .. – DavChana
@meze pas $ word to tylko przykład. Znak $ może być w dowolnym miejscu łańcucha/hasła użytkownika. Otrzymany z pola formularza HTML. – DavChana