Autor Zpráva
Utas
Profil *
Č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
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 *
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
no tak si porovnej jestli heslo tak jak ho máš v SESSION je i v databázi (zřejmě zahashované)
Utas
Profil *
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
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 *
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
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 *
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
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
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)

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: