 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
nemo
Data înscrierii: 04/Mai/2004
Mesaje: 31
|
| Trimis: Sâm Ian 29, 2005 9:51 pm Titlul subiectului: care este greseala???? |
|
|
am un script care trebuie sa forteze utilizatorul sa-si aleaga la inscriere doar un username format din cifre si litere.
eu credeam ca totul este ok pina azi cind ma pomenesc cu 2 username-uri de forma asda`afdasd (semnul de pe butonul tilda ~, cum ii mai zice ca am uitat) respectiv asdsa_asfa.
ce se intimpla? intradevar am incercat si eu si cele 2 caractere le accepta. cred ca sunt singurele. unde este greseala?
Cod:
function check_username($value)
{
$value = trim($value);
return !preg_match("/[^A-z,0-9]/", $value);
}
de ce a acceptat ` si _ ?
mersi
ps. ultima ora. gasit ca accepta si ^ se facura 3. |
|
| Sus |
|
arond
Data înscrierii: 11/Mar/2004
Mesaje: 580
Locație: 127.0.0.1
|
| Trimis: Dum Ian 30, 2005 12:54 am Titlul subiectului: |
|
|
Incearca asa:
return !preg_match("/^[^A-z,0-9]$/", $value);
Motivul ?
Trebuie sa "ancorezi" expresia (^ - de la inceput ... $ - pana la sfarsit), altfel iti va intoarce TRUE daca va gasi macar un caracter alfanumeric in stringul testat.
Numa' bune. |
|
| Sus |
|
nemo
Data înscrierii: 04/Mai/2004
Mesaje: 31
|
| Trimis: Dum Ian 30, 2005 2:37 pm Titlul subiectului: salutare arond |
|
|
nici asa nu merge. sunt doar 3 caractere care le accepta, crezind ca sunt litere sau cifre: ` ^ si _
la orice alt caracter introdus in afara de litere si cifre te avertizeaza ca fiind incorect. insa acestea 3 le accepta.
am incercat arond si cum ai spus tu si nu merge. la fel le accepta.
am facut un mic script care eu zic ca este corect scris:
test.php
Cod:
<?php
function check_username($value)
{
$value = trim($value);
return !preg_match("/[^A-z,0-9]/", $value);
}
$valid = TRUE;
if (isset($_POST['join'])){
$username = $_POST['username'];
$un = check_username($username);
$valid = $valid && $un;
}else{
$username = "";
$un = TRUE;
}
?>
<FORM action="test.php" method="post">
<?php
if(!$valid){
echo "Usernameul are o forma incorecta"."<BR>";
}
?>
<B>Nume utilizator:</B><INPUT name="username" value="<?=$username?>"><BR>
<INPUT type="submit" value="Send" name="join">
</FORM>
si accepta cele 3 caractere de care zic eu.
daca pun cum zici tu arond accepta chiar mai multe.
ce sa fie? |
|
| Sus |
|
carco
Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti
|
| Trimis: Dum Ian 30, 2005 3:47 pm Titlul subiectului: |
|
|
an style="color: #000000"><?php return preg_match("/^([a-z,0-9])+$/i",$value)
merge? Problema e de la acel A-z, A are codul 65, z 122 iar _ 95 si ` 96 deci sunt incluse in A-z, nu? |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|