Autor Zpráva
studentt
Profil *
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
session_start patří na začátek skriptu, ne do podmínky.
Joker
Profil
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 *
Joker:
Děkuji, přihlášení už funguje a na ostatní chyby se určitě ještě mrknu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0