Autor | Zpráva | ||
---|---|---|---|
studentt Profil * |
#1 · Zasláno: 4. 10. 2012, 11:25:42
Dobrý den, mám problém s přihlášením rozpozná jestli mám správné jméno a heslo či ne, ale nemůžu přijít na to proč nefunguje předávání informací o přihlášení vkládám kód všech třech stránek.
1) Formulář (prihlaseni) 2) Přihlášení (log) 3) stránka pro přihlášené (add) Předem děkuji za radu. case 'prihlaseni': echo '<form action="?stranka=log" method="post" class="log"><h2>Přihlášení</h2><table><tr><td align="right">Nick:</td><td><input type="text" name="login"></td></tr><tr><td align="right">Heslo:</td><td><input type="text" name="heslo"></td></tr><tr><td></td><td><input type="submit" value="Přihlásit se" /></td></tr></table></form>'; break; case 'log': echo '<div class="loggen">'; require "db.php"; $login = mysql_real_escape_string($_POST["login"]); $heslo = mysql_real_escape_string($_POST["heslo"]); $dotaz = mysql_query("select * from uzivatele where nick = '$login' and heslo = '$heslo'"); $overeni = mysql_num_rows($dotaz); $row = mysql_fetch_array($dotaz); if($overeni == 1) { session_start(); $_SESSION['nick'] = stripslashes($login); $_SESSION['id'] = $row["id"]; header("Location: ?stranka=add"); die(); } else { echo"<p>Zadal jsi špatný nick nebo heslo!</p>"; } echo '<a href="?stranka=hlavni-stranka">Zpě na hlavní stránku</a>'; echo '</div>'; break; case 'add': if($_SESSION['nick']!=""){ echo'Jste přihlášen.'; } else { echo'Nejsi přihlášen!'; } break; |
||
Tori Profil |
#2 · Zasláno: 4. 10. 2012, 12:01:16
session_start patří na začátek skriptu, ne do podmínky.
|
||
Joker Profil |
#3 · Zasláno: 4. 10. 2012, 12:01:53
studentt:
Klasická chyba, před session_start je echo. Navíc session_start má být na začátku každé stránky používající session a ne jen v jedné větvi. Jinak ten kód má hned několik dalších problémů: 1. Ukládat v databázi přímo uživatelovo heslo je vážný bezpečnostní problém. Ukládejte jen otisk hesla. 2. SELECT *, když je potřeba jen jeden sloupec. 3. Místo zpětného odescapování proměnné $login, navíc s použitím špatné funkce, by bylo lepší načíst hodnotu z databáze. 4. Místo $_SESSION['nick']!="" (ř. 27) by bylo lepší použít funkci empty, takhle to pro nepřihlášené bude generovat notice
|
||
studentt Profil * |
#4 · Zasláno: 4. 10. 2012, 13:05:14
Joker:
Děkuji, přihlášení už funguje a na ostatní chyby se určitě ještě mrknu. |
||
Časová prodleva: 11 let
|
0