Php foglalt email cím ellenőrzés

Php foglalt email cím ellenőrzés
2012-05-07T21:01:32+02:00
2012-05-07T21:42:04+02:00
2022-11-25T16:41:58+01:00
geforce9600
Hello

Ezzel a progival próbálom ellenőrizni regisztrációnál, hogy a megadott email cím nem e szerepel az adatbázisban.

$email_ellenoriz="SELECT Email FROM adat WHERE Email='".$_POST['email']."'"; $email_oke=mysql_query($email_ellenoriz) or die("Hibás email cím lekérés".mysql_error()); if(mysql_num_rows($email_oke)==1) { $hiba[]="A megadott e-mail címmel már regisztráltak."; }

A táblanév, mezőnév stimmel, de mégis átengedi akkor is ha szerepel az adatbázisban. Mit írtam el?
Mutasd a teljes hozzászólást!
Nem lehet, hogy nem 1 pont ilyen email van, hanem több?
Akkor is továbbengedi.

Én darabszámot néznék, ami vagy 0 vagy nagyobb, mint 1

SELECT count(*) FROM adat WHERE ...

Ennek az eredménye mindig egy szám.
Mutasd a teljes hozzászólást!

  • $email_ellenoriz -t kiírva ott van a keresett emailcím ?

    echo $email_ellenoriz;

    ehelyett:

    if(mysql_num_rows($email_oke)==1)

    inkább:
    if(mysql_num_rows($email_oke)>0)

    vagy pedig:

    if(empty($_POST["email"])) die("NINCS EMAIL!!!!"); $email=mysql_real_escape_string($_POST["email"]); $sql="select count(*) FROM adat WHERE Email='$email'"; $res=mysql_query($sql) or die(mysql_error() ) ; if( mysql_result($res , 0) > 0 ) { $hiba[]="blabla"; }

    ez kicsit energiatakarékosabb.
    Mutasd a teljes hozzászólást!
  • Én darabszámot néznék, ami vagy 0 vagy nagyobb, mint 1

    Illetve 0 vagy nagyobb mint 0
    Mutasd a teljes hozzászólást!
  • Köszönöm, azt hittem így is jó ha ==1-el.
    >0 lett jó.
    Mutasd a teljes hozzászólást!
  • Plusz használj EGYEDI kulcsot az email mezőre, így SQL oldalon blokkolod a duplikációt, és nincs szükség előzetes lekérésre sem, csak a hiba kódokat kell helyesen feldolgozni beírás esetén.
    Mutasd a teljes hozzászólást!
  • Helló!

    Szintaktikailag jónak tűnik így elsőre.

    Amire viszont figyelj, ha érdekel az alapvető biztonság: az urlben ($_GET), illetve pl űrlapokból ($_POST) érkező adat esetén mindenféleképpen használd a mysql_real_escape_string() függvényt, mely az alapvető "sql injection" típusú támadás ellen azért némiképp megvéd.
    Most nem akarok példákat írni, de az e-mail cím helyett jó kis parancsokat lehet futtatni az adatbázisban.

    A védelem a jelenlegi lekérdezésedbe beleépítve:
    $email_ellenoriz="SELECT Email FROM adat WHERE Email='".mysql_real_escape_string($_POST['email'])."'";

    Egy tippem van, lehetséges, hogy már többször szerepel a tesztelt e-mail cím az adatbázisban.

    Az if(mysql_num_rows($email_oke)==1) sorból az == 1 részt szimplán hagyd el (vagy cseréld >= 1-re, hiszen az általad írt módon csak akkor ír hibát, ha 1-szer találja meg.

    Ha nem ez a gond, akkor valahol a $hiba tömb lekezelésénél keresd az okot.

    SZERK: Ezzel kicsit elkéstem, megírtam és csak azt hittem, hogy rányomtam a küldésre, de helyette kivonultam a céges épületből cigizni. Mire visszaértem, rájöttem, elküldtem lett 20 post, illetve megoldás :D
    Mutasd a teljes hozzászólást!
  • vegyél ecigit, azt gépezés közben is tolhatod:)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd