Zadejte hledaný výraz...

Registrace – ověření e-mailové adresy, jestli není v DB

kowestra
verified
rating uzivatele
(3 hodnocení)
29. 8. 2009 20:38:43
Při řešení registrace jsem narazil na takový menší problém. Jak ověřím, jestli je e-mail v databázi?
Př. Nový uživatel se chce zaregistrovat. E-mail zadá jako neco@neco.cz, po vyplnění ostatních údajů uživatel klikne na odeslat. Všechny údaje jdou ke zpracování do souboru reg.php. Pokud již v databázi e-mail bude, tak se z reg.php přesměruje zpět na registrační formulář, kde se zobrazí, že e-mail už v databázi je.
Něco jsem zkoušel:
function emailvdb ($email, $link) {
$vysledek=mysql_query("SELECT * FROM login WHERE mail='".$email."'", $link);
return (boolean) mysql_num_rows($vysledek);
}
.....
if(emailvdb($_POST, $database)){
header("location: ./?page=registrace&t=false&w=exist");
}
Podle mně je toto to nejpodstatnější, ale nefunguje mi to. Nevíte někdo jak to vyřešit?
29. 8. 2009 20:38:43
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363036
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
29. 8. 2009 21:15:10
Určitě nemá mysql_query parametry obráceně? ;)
29. 8. 2009 21:15:10
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363035
kowestra
verified
rating uzivatele
(3 hodnocení)
29. 8. 2009 21:27:27
Napsal Souki;351408
Určitě nemá mysql_query parametry obráceně? ;)
JJ, máš pravdu opraveno, ale stále to nefunguje.
29. 8. 2009 21:27:27
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363034
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
29. 8. 2009 21:42:10
dej tam místo tohohle
return (boolean) mysql_num_rows($vysledek);
tohle
return mysql_fetch_array($vysledek);
a podmínku uprav na
if(emailvdb($_POST, $database) != NULL)
ale máš ten kod napsanej nějak zvláštně...
29. 8. 2009 21:42:10
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363033
kowestra
verified
rating uzivatele
(3 hodnocení)
29. 8. 2009 21:53:58
Napsal Pooky;351429
dej tam místo tohohle
return (boolean) mysql_num_rows($vysledek);
tohle
return mysql_fetch_array($vysledek);
a podmínku uprav na
if(emailvdb($_POST, $database) != NULL)
ale máš ten kod napsanej nějak zvláštně...
Jak to myslíš "zvláštně"? Zkoušel jsem to upravit, ale furt to nefunguje.
29. 8. 2009 21:53:58
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363032
silebis
verified
rating uzivatele
29. 8. 2009 22:36:05
Uprav si select na select count(mail) from login where mail LIKE '".$email."'
29. 8. 2009 22:36:05
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363031
kowestra
verified
rating uzivatele
(3 hodnocení)
29. 8. 2009 22:48:58
Napsal silebis;351463
Uprav si select na select count(mail) from login where mail LIKE '".$email."'
NN taky to nefunguje.
Nevím, jestli to pomůže, ale $database obsahuje přibližně toto:
$database= mysqli_connect (adesa, jméno, heslo, databáze, port);
29. 8. 2009 22:48:58
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363030
// $link je resource
$email = 'pepa@pepan.cz';
$select = mysql_fetch_object(mysql_query(
sprintf(
"select count(mail) as c from login where mail = '%s'",
mysql_real_escape_string($email,$link)
)
));
if($select->c == 0) {
// neni
} else {
// je
}
Escapování si uprav podle toho, co používáš. Hm, už je to dlouho, co sem sql dotaz psal bez frameworku :).
29. 8. 2009 22:49:30
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363029
kowestra
verified
rating uzivatele
(3 hodnocení)
29. 8. 2009 23:24:06
Napsal mekishizufu;351470
// $link je resource
$email = 'pepa@pepan.cz';
$select = mysql_fetch_object(mysql_query(
sprintf(
"select count(mail) as c from login where mail = '%s'",
mysql_real_escape_string($email,$link)
)
));
if($select->c == 0) {
// neni
} else {
// je
}
Escapování si uprav podle toho, co používáš. Hm, už je to dlouho, co sem sql dotaz psal bez frameworku :).
Zkoušel jsem to, ale furt to nefunguje. Nějak se mi to nezdá. Je to vůbec v PHP? Sry ještě nejsem na takovém levelu. Možná, že po nějakých úpravách to pojede.
29. 8. 2009 23:24:06
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363028
Předtím, než jsem to sem postnul, jsem to samozřejmě vyzkoušel, chybu máš pravděpodobně někde jinde.
29. 8. 2009 23:33:31
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363027
silebis
verified
rating uzivatele
30. 8. 2009 08:30:06
zapni si zobrazovani chyb z phpka a mas hned jasno v cem je problem
30. 8. 2009 08:30:06
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363026
Tomáš Burda
verified
rating uzivatele
(1 hodnocení)
30. 8. 2009 20:04:07
Napsal kowestra;351485
Zkoušel jsem to, ale furt to nefunguje. Nějak se mi to nezdá. Je to vůbec v PHP? Sry ještě nejsem na takovém levelu. Možná, že po nějakých úpravách to pojede.
Co konkretne nefunguje? Pripadne si tam napis ruzny echa a pozoruj kam az to dojede a kde to co vypise...
30. 8. 2009 20:04:07
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363025
kowestra
verified
rating uzivatele
(3 hodnocení)
30. 8. 2009 20:30:52
Ok, tak jsem zapnul zobrazování chyb a dopsal echa.
Chyby mi hlásí:
Warning: mysql_real_escape_string() expects parameter 2 to be resource, object given in .......reg.php on line 22
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in .......reg.php on line 24
Notice: Trying to get property of non-object in .......reg.php on line 26
V reg.php to odpovídá:
19: $select = mysql_fetch_object(mysql_query(
20: sprintf(
21: "select count(mail) as c from login where mail = '%s'",
22: mysql_real_escape_string($_POST,$database)
23: )
24: ));
25:
26: if($select->c == 0) {
27: // neni
28: echo 'neni ';
29: } else {
30: echo 'je ';
31: // je
32: }
Když tam zadám, e-mail, který už v databázi je, tak mně to zobrazí text na 28. řádku ("není"). Myslím si, že jak se opraví ty chyby, tak by to mělo šlapat, ale vůbec nechápu, co to znamená. (S mysql_real_escape_string() a mysql_fetch_object() jsem nikdy nepracoval) Prosím o radu.
30. 8. 2009 20:30:52
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363024
Pokud používáš mysqli, tak to tomu musíš přizpůsobit.
$link = mysqli_connect('localhost', 'user', 'pass');
mysqli_select_db($link, 'db');
$email = 'pepa@pepan.cz';
$select = mysqli_fetch_object(
mysqli_query($link,sprintf("select count(mail) as c from login where mail = '%s'",
mysqli_real_escape_string($link,$email)
)));
echo $select->c == 0 ? 'neni' : 'je';
30. 8. 2009 20:46:40
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363023
ppp
verified
rating uzivatele
(38 hodnocení)
30. 8. 2009 20:47:09
Zkusil bych to tak:
function emailvdb ($email, $link) {
$vysledek=mysql_query("SELECT * FROM login WHERE mail like '$email'", $link)
or die("Chyba v dotazu");
return mysql_num_rows($vysledek)>0;
}
.....
if(emailvdb($_POST, $database)){
header("location: ./?page=registrace&t=false&w=exist");
}
30. 8. 2009 20:47:09
https://webtrh.cz/diskuse/registrace-overeni-e-mailove-adresy-jestli-neni-v-db#reply363022
Pro odpověď se přihlašte.
Přihlásit