Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

care este greseala????
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
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  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community