Autor | Zpráva | ||
---|---|---|---|
General Profil * |
#1 · Zasláno: 3. 6. 2009, 14:49:24
Čus všichni.. Udělal sem si registraci na web, funguje v pohodě ale login mi nějak nejde. Hlásí mi to hlášku "Špatně zadané údaje !" ale údaje sou totožný s tabulkou v databázi a připojení je taky dobrý.. Dokázal by mi někde pomoc pls ? (za odpovědi díky)
index.php <?php session_start(); require_once("config_db.php"); if($_POST["nick"]){ $heslo = md5($heslo); $ip = $_SERVER["REMOTE_ADDR"]; $query = mysql_query("SELECT * FROM reg_uzivatele WHERE nick='$nick' and heslo='$heslo'") or die(mysql_error()); $vysledek = mysql_fetch_array($query); if($vysledek["nick"]){ $_SESSION["prihlasen"] = 1; $_SESSION["login"] = $Vysledek["nick"]; $_SESSION["UserId"] = $Vysledek["id"]; $_SESSION["UserEmail"] = $Vysledek["email"]; echo("Přihlášení proběhlo úspěšně !"); } else{ echo("Špatně zadané údaje !"); } } else{ echo("<p>..."); } ?> |
||
Mastodont Profil |
#2 · Zasláno: 3. 6. 2009, 15:01:29
Tipnul bych, že máš mít
$heslo = md5($_POST['heslo']); |
||
General Profil * |
#3 · Zasláno: 3. 6. 2009, 15:09:48
„Tipnul bych, že máš mít“
„1 $heslo = md5($_POST['heslo']);“ Ale pořád to nejde.. |
||
Akacko Profil |
#4 · Zasláno: 3. 6. 2009, 15:23:53 · Upravil/a: Akacko
General
Měl bys vědět, že $vysledek není to samé co $Vysledek. A můžeš si aplikaci debugovat tím, že si vypíšeš obsah proměnných, které používáš v podmínkách a tak zjistíš, kde máš chybu. |
||
AM_ Profil |
#5 · Zasláno: 3. 6. 2009, 15:34:46 · Upravil/a: AM_
část bych opravil takto:
$query = mysql_query("SELECT * FROM reg_uzivatele WHERE nick='$nick' and heslo='$heslo'") or die(mysql_error()); if(mysql_num_rows($query) > 0){ $vysledek = mysql_fetch_array($query); $_SESSION["prihlasen"] = 1; $_SESSION["login"] = $Vysledek["nick"]; $_SESSION["UserId"] = $Vysledek["id"]; $_SESSION["UserEmail"] = $Vysledek["email"]; echo("Přihlášení proběhlo úspěšně !"); } else{ echo("Špatně zadané údaje !"); } nemůžeš použít fetch_array, když ještě nevíš, jestli výsledek dotazu obsahuje nějaký řádek. Sice by ti to náhodou asi fungovalo, jak má, ale přinejmenším to při zadání špatných údajů bude házet varování. Jak zmíni Akacko, zdebuguj si to a najdi si, co je špatně. |
||
General Profil * |
#6 · Zasláno: 3. 6. 2009, 15:39:10
Už sem to opravil.. kontroloval sem ještě jednou tabulku v DB, skoušel sem je (proměný) vypsat jestli nepřídu na chybu.. ale pořád to nejde :(
|
||
bohyn Profil |
#7 · Zasláno: 3. 6. 2009, 15:41:24
General
V podmince mas $_POST['nick'] a v dotazu $nick. Dalsi vec je ze ten tvuj script je nachylny na SQL injection, pouzivej funkci mysql_real_escape_string() na osetreni promenych vkladanych do dotazu. |
||
General Profil * |
#8 · Zasláno: 3. 6. 2009, 15:52:12
Už se v tom nevyznam.. vypisuje mi to chybu a špatně zadaný údaje.. neznáte někdo pls nějakej web kde je takovejdle login ? Upravil bych si to, když sem to skoušel z různejch "známějších" webů tak mi to taky nefachčilo.. upravit si to dokážu.
|
||
bohyn Profil |
#9 · Zasláno: 3. 6. 2009, 17:34:13 · Upravil/a: bohyn
General
„vypisuje mi to chybu“ Proc ji teda neposles? |
||
General Profil * |
#10 · Zasláno: 3. 6. 2009, 17:41:40
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/gamxeu/public_html/hostings/professional/test/prihlas.php on line 11
|
||
Akacko Profil |
#11 · Zasláno: 3. 6. 2009, 17:53:21
General
Chyba bude nejspíše v SQL dotazu. Ukaž nám tvůj dotaz. |
||
General Profil * |
#12 · Zasláno: 3. 6. 2009, 17:56:07
Ten script vypadá tak jak ste mi poradili, jinak díky:
[url=http://example.com]<?php session_start(); require_once("config_db.php"); if($_POST["nick"]){ $heslo = md5($_POST['heslo']); $ip = $_SERVER["REMOTE_ADDR"]; $query = mysql_query("SELECT * FROM reg_uzivatele WHERE nick='$nick' and heslo='$heslo'") or die(mysql_error()); if(mysql_num_rows($vysledek) > 0){ $vysledek = mysql_fetch_array($query); $_SESSION["prihlasen"] = 1; $_SESSION["login"] = $Vysledek["nick"]; $_SESSION["UserId"] = $Vysledek["id"]; $_SESSION["UserEmail"] = $Vysledek["email"]; echo("Přihlášení proběhlo úspěšně !"); } else{ echo("Špatně zadané údaje !"); } } else{ echo("<p>..."); } ?>[/url] |
||
Akacko Profil |
#13 · Zasláno: 3. 6. 2009, 18:31:36
General
Vůbec jsi nečetl co jsme ti psali. $query = mysql_query("SELECT * FROM reg_uzivatele WHERE nick='$nick' and heslo='$heslo'") or die(mysql_error()); Neexistuje proměnná $nick. $_SESSION["login"] = $Vysledek["nick"]; $_SESSION["UserId"] = $Vysledek["id"]; $_SESSION["UserEmail"] = $Vysledek["email"]; Neexistuje pole $Vysledek, ale existuje pole $vysledek. Jak už psal bohyn, ten SQL dotaz bude náchylný na SQL Injekci. |
||
AM_ Profil |
#14 · Zasláno: 3. 6. 2009, 18:32:44
Omlouvám se, v mém kódu byla chyba, parametr mysql_num_rows má být $query a ne $vysledek. Ale mohl jsi se trochu snažit a přijít si na to sám, byl to celkem do očí bijící přehmat :) (opraveno v původním příspěvku - [#5])
|
||
bohyn Profil |
#15 · Zasláno: 3. 6. 2009, 18:33:36
General
$vysledek = mysql_fetch_array($vysledek); |
||
General Profil * |
#16 · Zasláno: 4. 6. 2009, 13:27:57
Už možná vim čim to je, bude někde chyba v přenášení hesla nebo nicku.. http://www.professional.gamx.eu/test/login.txt tu i když "vyměnim" tu $nick tak to stejně nejde..
PS: hází to Špatně zadané údaje ! |
||
AM_ Profil |
#17 · Zasláno: 4. 6. 2009, 13:38:53
Tak si ty údaje zkus vypsat a mrkni se do databáze jak tam jsou, ne? nebo si přes phpmyadmina spusť čistě ten dotaz do DB na jméno a heslo jestli ti to hodí správné řádky...
|
||
General Profil * |
#18 · Zasláno: 4. 6. 2009, 14:33:13
Dobrej nápad, nick to vyhodí správnej => SQL dotaz je OK.. , je problém v šifrování hesla a v registraci mam ale taky md5.. skoušel sem to i přes base64 ale taky to blbne.. bylo by to bezpečný bez šifrování ?
|
||
AM_ Profil |
#19 · Zasláno: 4. 6. 2009, 14:44:37
General
Jen si to pěkně pro tu md5 odlaď... zřejmě jsi někde zase zapomněl použít superglobální pole $_POST, místo toho zahashoval prázdný řetězec a teď se divíš ;) base64 není šifra, jen 6bitový přepis pomocí tisknutelných znaků!!! |
||
bohyn Profil |
#20 · Zasláno: 4. 6. 2009, 15:10:38
General
v md5 zalezi na velikosti pismen (a != A), nebo jak rika AM_, mas spatne ulozene heslo. |
||
General Profil * |
#21 · Zasláno: 4. 6. 2009, 15:42:56
To s tim base64 sem nevěděl.. já vim že záleží na velkejch písmenech, v databázi ty údaje mam tak jak to je zprávně, script na registraci http://www.professional.gamx.eu/test/register.txt]http://www.professional.gamx.eu/test/register.txt nikde mi nepříde že bych tam měl chybu
|
||
Časová prodleva: 6 dní
|
|||
carlos Profil * |
#22 · Zasláno: 10. 6. 2009, 20:58:59
A máš v databázi pro heslo dostatečnou délku, aby se ti tam vešlo celé zašifrované heslo?
|
||
AM_ Profil |
#23 · Zasláno: 10. 6. 2009, 21:42:41
zkus si vypsat $heslo před tím, než položíš SQL dotaz, a pak se podívej na skutečnou hodnotu do databáze. shodují se?
takhle se hledají chyby, vypisuješ klíčové informace v klíčových momentech. |
||
Časová prodleva: 15 let
|
0