Autor | Zpráva | ||
---|---|---|---|
pito Profil |
#1 · Zasláno: 1. 7. 2017, 00:17:34
Zdravím,
Mám dvě skupiny uživatelé a admini. Na hlavní stránce index.php je přihlašovací formulář. V databazi maji uživatelé nastaveno hodnotu 1 jako práva a admini hodnotu 2. Potřebují když se přihlasí uživatel tak aby ho to přesměřovalo na jiný web než admina. Zkoušel jsem to nějak takhle,ale někde je chyba index ob_start(); session_start(); require_once 'connection.php'; $error = false; if( isset($_POST['prihlas']) ) { $name = trim($_POST['nazev']); $name = strip_tags($name); $name = htmlspecialchars($name); $pass = trim($_POST['heslo']); $pass = strip_tags($pass); $pass = htmlspecialchars($pass); if (!$error) { $password = hash('sha256', $pass); // password hashing using SHA256 $sql="SELECT id, nazev, heslo FROM users"; $result = $db->query($sql); if ($result->num_rows > 0) { // output data of each row while($count = $result->fetch_assoc()) { if( $count['nazev'] == $name && $count['heslo']==$password ) { $_SESSION['nazev'] = $count['nazev']; $_SESSION['aktivace'] = $count['aktivace']; header("Location: login.php"); } else { $errMSG = "Nesprávny login nebo heslo!"; } } } } } login session_start(); if($_SESSION['aktivace'] == '2'){ header("Location: admin/index.php"); } else if ($_SESSION['aktivace'] == '1'){ header("Location: uzivatele/index.php"); } else { header("Location: index.php"); } |
||
Slark Profil |
#2 · Zasláno: 2. 7. 2017, 22:36:08
Proč při odeslání přihlašovacího formuláře vybíráš všechny uživatele a pak následně jednotlivé řádky porovnáváš se zadaným názvem(loginem)? Stačí si přece upravit ten SQL dotaz tak, aby jsi rovnou vybral uživatele podle sloupce "nazev" a následně jen kontroloval heslo. Nicméně po přihlášení můžeš kontrolovat $count["aktivace"] a podle toho upravit header("location ...").
Tvoje definice problému "Zkoušel jsem to nějak takhle,ale někde je chyba" není dostatečná k tomu aby se dala "chyba" nějakým způsobem řešit. |
||
pito Profil |
takže myslíš jakože změním dotaz SQL tedy přidám
WHERE nazev='$name' ORDER BY nazev" ?
Tak by to mělo přece jít. Odešlu formulář a zjistim nazev a heslo. Přes SQL (where) se mi v databazi najde uživatele kterého chci a pak se porovná heslo z formuláře a z databáze jestli je stejné, jestli je tak přidám data do session a přeměřuji na login.php kde podle $_SESSION['aktivace'] by mě to mělo přeměřovat. Jenomže když se chci přihlásit a zadám správné údaje tak se nestane nic
|
||
Keeehi Profil |
#4 · Zasláno: 3. 7. 2017, 12:58:11
pito:
Order by je tam zbytečně a $name obsahuje vstup od uživatele, takže je potřeba ecapovat, ale jinak ano. |
||
pito Profil |
#5 · Zasláno: 3. 7. 2017, 13:15:14
jo,ale nestane se nic. Ani mně to nikde nepřesměruje. Formulář mám v index.php tam kde se zpracují data a porovnavají. Vše jsem kontroloval a neměl by být nikde žádný překlep názvu
|
||
Slark Profil |
#6 · Zasláno: 3. 7. 2017, 14:33:23
Pošlete sem jak teď vypadá ten PHP kód na indexu
PS: máte doufám zapnuté vypisování chybových hlášek? |
||
Časová prodleva: 6 let
|
0