Zdravím, mám takový problém s dolování dat z mysql. Zkoušel jsem si napsat skript na registraci uživatelů. To faká v pohodě. Ale když dojde na přihlášení, nebo změnu hesla, tak mi to hodí chybovou zprávu. Prostě Když se zaregistruji pod přezdívkou např. nick a heslem heslo, tak se to v pořádku uloží do databáze, ale když se chci přihlásit tak to žádný nick nemůže najít. Nevíte co to může být za chybku? Děkuji
Asi budeš mít špatně podmínku v SELECTu.
Toto je celý dotaz:
if ($u && $h) {
$dotaz = "SELECT id_uzivatele, uzivatelske_jmeno FROM uzivatele_reg WHERE uzivatelske_jmeno='$u' AND heslo=PASSWORD('$h'))";
$vysledek = mysql_query ($dotaz);
$radek = @mysql_fetch_array($vysledek);
if ($radek) {
setcookie ('uzivatelske_jmeno', $radek[1]);
setcookie ('id_uzivatele', $radek[0]);
header ("Location: http://". $_SERVER['HTTP_HOST']. dirname($_SERVER['PHP_SELF']). "/prihlasen.php");
exit();
protože jsem začátečník, nenapadá mě nic co by tam bylo špatně :(
Vidím v SELECTu jednu pravou závorku navíc.
Ještě bych doporučil nepoužívat při ladění @. Potom na chybu přijdeš hned a ušetříš nejen čas, ale i nervy ;-)
Osobne tam krome zavorky navic take zadnou chybu nevidim. Jen bych se rad vyjadril (teda nechal za sebe vyjadrit MySQL manual) k pouzivane funkci password(str)..
citace: "The PASSWORD() function is used by the authentication system in MySQL Server; you should NOT use it in your own applications. For that purpose, consider MD5() or SHA1() instead."
=Vojta=
Na jednu stranu mas pravdu, ale vysledkem by pouze bylo, ze by se dozvedel, ze v prikazu je chyba. Kde je, uz by mu ale dostatecne presne sdeleno nebylo.. mysql_fetch_array() jen zařve, ze $vysledek neni validni zdroj/ukazatel do tabulky :)
Jinak @ se vseobecne nedoporucuje pouzivat (i kdyz se casto pouziva, casto take bohuzel spatne..), ale osobne je pouzivam - ale az uplne ve finalni aplikaci pote, co projde testovanim. (protoze precene nechceme v pripade vypadku obtezovat uzivatele presnymi poznamkami o chybe;))
freeze: tak jasně, že interpret php nebude vyhazovat chybu v sql dotazu, ale jako nasměrování je to určitě lepší než jen suché konstatování "tady v těch 20 řádcích mám někde chybu" :)
Díky za rady. Závorky jsem si všiml hned jak jsem to vložil, tak sem ji vymazal stejně jako @ ale furt to hází stejnou chybu:( už fakt nevím čím to může být. Jinak mám program WampServer a stránky testuji na localhost, nemůže být chyba v programu?
Pod funkci mysql_query($dotaz); vložte chybovou funkci mysql_error() a tam zjistíte, kde je chyba.
$vysledek = mysql_query($dotaz);
echo mysql_error();
Třeba mu vadí ta funkce PASSWORD().
WampServer není program, ale kolekce programu (Apache+PHP+MySQL+další). A chyba v něm obvykle nebývá. To spíše chyba v nastavení.
uvaha:
uzivatelske_jmeno='$u'
neni v tom chyba? :)
skus to nahradit:
uzivatelske_jmeno='".$u."'
a
heslo='".PASSWORD($h)."'
=Squirrel=
Úvaha je chybná. Nastuduj si prosím používaní (chování) uvozovek v řetězcích (string).