Autor | Zpráva | ||
---|---|---|---|
Utas Profil * |
#1 · Zasláno: 3. 8. 2010, 16:32:49
Čau,
mám problém. Stáhl jsem fórum (není to PHPBB) a nejde mi spárovat se stránkami. V DB se tabulka jmenuje: uzivatele -> uziv_jmeno, uziv_heslo. Po přihlášení: $_SESSION[uziv_jmeno], $_SESSION[uziv_heslo]. K zakódování hesel používám jen md5. Tohle je soubor autorizace.php z toho fóra, tady si mohu spárovat moje stránka s tím fórem, něco jsem už zvládl sám, ale pořád to nejde. Není to tím, že jsem tam nezabudoval to kódování md5? Děkuji tomu, kdo mi to pomůže rozchodit. <?php $prihlaseni = FALSE; if($_GET[odhlaseni] == "true") { setcookie("klic", "", time() - 3600); session_destroy(); header("Location: index.php"); exit(); } elseif(isset($_COOKIE[klic])) { $ip = $_SERVER[REMOTE_ADDR]; $query = mysql_query("SELECT uid,uziv_jmeno,prava FROM uzivatele WHERE (ip = '$ip' AND klic = '$_COOKIE[klic]')") or die("Chyba databaze. Zkuste prosim akci opakovat pozdeji."); $row = mysql_fetch_array($query); if(empty($row)) { setcookie("klic", "", time() - 3600); } else { $klic = md5(date("U")); setcookie("klic", $klic, time()+24*3600*14); mysql_query("UPDATE uzivatele SET ip = '$ip', klic = '$klic' WHERE uid = '$row[uid]';") or die("Chyba databaze. Zkuste prosim akci opakovat pozdeji."); $prihlaseni = TRUE; } } elseif((isset($_SESSION[uziv_jmeno])) && (isset($_SESSION[uziv_heslo]))) { $query = mysql_query("SELECT uid,uziv_jmeno,prava FROM uzivatele WHERE (uziv_heslo = '$_SESSION[uziv_heslo]' AND uziv_jmeno = '$_SESSION[uziv_jmeno]')") or die("Chyba databaze. Zkuste prosim akci opakovat pozdeji."); $row = mysql_fetch_array($query); if(empty($row)) { session_destroy(); } else { $prihlaseni = TRUE; } } elseif(isset($_POST[prihlasit])) { if(!empty($_POST[robutek])) { die("Nevyplňuj poslední prázdné pole!"); } $heslo_aut = sha1(orez_retezec_2($_POST[uziv_heslo])); $jmeno_aut = orez_retezec($_POST[uziv_jmeno]); $trvale = orez_retezec($_POST[trvale]); $query = mysql_query("SELECT uid FROM uzivatele WHERE (uziv_heslo = '$uziv_heslo' AND LOWER(uziv_jmeno) = '$uziv_jmeno')") or die("Chyba databaze. Zkuste prosim akci opakovat pozdeji."); $row = mysql_fetch_array($query); if(empty($row)) { $chyba_prihlaseni = TRUE; } else { if($trvale) { $klic = md5(mt_rand(1, 10000)); setcookie("klic", $klic, time()+24*3600*14); $ip = $_SERVER[REMOTE_ADDR]; mysql_query("UPDATE uzivatele SET ip = '$ip', klic = '$klic' WHERE uid = '$row[uid]';") or die("Chyba databaze. Zkuste prosim akci opakovat pozdeji."); } else { $_SESSION[uziv_jmeno] = $uziv_jmeno; $_SESSION[uziv_heslo] = $uziv_heslo; } header("Location: index.php"); exit(); } } $prihlaseni_jmeno = $row[jmeno]; $prihlaseni_uid = $row[uid]; $prihlaseni_admin = $row[admin]; ?> |
||
AM_ Profil |
#2 · Zasláno: 3. 8. 2010, 18:02:12
Utas:
„$_GET[odhlaseni]“ řetězcové indexy pole patří do uvozovek! $_GET['odhlaseni'] oprav si to v celém programu. Tedy kromě inline zápisu v řetězcích. Jakou chybu ti to hází? Bez toho těžko věštit, kde je problém. |
||
Utas Profil * |
#3 · Zasláno: 3. 8. 2010, 18:20:36
Chybu žádnou, ale prostě na fóru to pořád píše, že musím být přihlášen, přitom na stránkách přihlášen jsem. Tohle byl stažený soubor i s fórem a když ho upravím, tak tím mi bylo řečeno, že prý tak spáruji stránky s tím fórem. Jednou mi to už někdo dělal, ale poté jsem musel formátovat disk, takže to nemám. Zkus se na to mrknout. Dík za snahu :-)
|
||
AM_ Profil |
#4 · Zasláno: 3. 8. 2010, 18:48:43
no tak si porovnej jestli heslo tak jak ho máš v SESSION je i v databázi (zřejmě zahashované)
|
||
Utas Profil * |
#5 · Zasláno: 4. 8. 2010, 09:10:37
To právě ano. A to bych potřeboval, jestli by mi to tu někdo nenapsal. Hashuju v md5. Všechny údaje jsou výše uvedeny. Dík.
|
||
tiso Profil |
#6 · Zasláno: 4. 8. 2010, 10:01:14
Utas: pokiaľ po niekom chceš, aby ti to napísal, tak si to zadaj ako prácu do sekcie Práce a zakázky, nezabudni uviesť potrebné údaje.
|
||
Utas Profil * |
#7 · Zasláno: 4. 8. 2010, 13:39:16
Tiso, já ti nechci dávat prachy, já chci od tebe poradit. To snad nemyslíš vážně? Denně se tu radí jak o závod a ty chceš po mě, abych ti platil za to, že mi tu napíšeš jednu řádku? Jediné co nevím, je to, jak zapsat: výpis z DB zahsahovanej (md5) = $_SESSION[uziv_heslo] ..
|
||
tiso Profil |
#8 · Zasláno: 4. 8. 2010, 14:13:52
Utas: o mňa tu vôbec nejde (a tú zakázku by som ani nebral). Ide o to, že ten skript je plný chýb a nie je v tvojich silách ho na základe rady upraviť. A keď píšeš:
„A to bych potřeboval, jestli by mi to tu někdo nenapsal.“, tak to je jasný kandidát na práce a zakázky. |
||
Utas Profil * |
#9 · Zasláno: 4. 8. 2010, 17:25:07
Ach, tady mě snad nikdo neposlouchá. Já nechci nic celýho opravovat, já bych jen potřeboval napsat jak se zapíše: výpis z DB zahsahovanej (md5) = $_SESSION[uziv_heslo] . Zbytek si opravím sám....
|
||
Petr ZZZ Profil |
#10 · Zasláno: 6. 8. 2010, 09:58:48 · Upravil/a: Petr ZZZ
Utas:
„Ach, tady mě snad nikdo neposlouchá. Já nechci nic celýho opravovat, já bych jen potřeboval napsat jak se zapíše: výpis z DB zahsahovanej (md5) = $_SESSION[uziv_heslo] . Zbytek si opravím sám…“ Jestli máš kód plný chyb a víš o tom, bylo by myslím ohleduplné, kdybys ho sem dal už opravený a jen s tou jednou chybou, u které potřebuješ poradit. Čte to tu hodně lidí, kteří doufají, že se něco naučí. Na jedné straně chceš poradit, ale na druhé straně jakoby ti bylo jedno, zda se někdo z tvého kódu něčemu bude moci přiučit. Skoro mě napadá, zda v tom není záměr – pokud by tomu skutečně bylo tak, že přímo nechceš, aby se z tvého kódu někdo byl schopen něco naučit, tak mi připadne zvláštní, že čekáš, zda někdo poradí Tobě. Nic ve zlým, ale nad těmito věcmi přemýšlím poměrně často: Je zde spousta lidí, kteří žádají o radu, ale na čtenářské obci jim zjevně nezáleží (začíná to už odfláknutým písemným projevem). Přitom čtenářská obec jsou ti, kteří internetovým diskusím dávají 90% jejich smyslu. |
||
AM_ Profil |
#11 · Zasláno: 6. 8. 2010, 12:47:46
Utas:
„jak se zapíše: výpis z DB zahsahovanej (md5) = $_SESSION[uziv_heslo] .“ Tak jak to zapisuješ. Jak se zapíše hgfhmh? přece hgfhmh. Chtěl jsi se zřejmě zeptat, jak se porovnává zahashované heslo v databázi s heslem v session? vzhledem k tomu, že "odhashovat" nejde, jediná možnost je zadané heslo zahashovat a porovnat hashe, tedy: $heslo_z_db_v_md5 == md5($zadane_heslo) |
||
Časová prodleva: 14 let
|
0