Autor Zpráva
Sxmanek
Profil
Zdravím, zkouším udělat login na stránky, ale mám zde problém...
Mám klasicky index.php, kde je user panel(dva stavy pro přihlášené a nepřihlášené).
<?php
if (login() == true) {
    ?>
    <a href="index.php">Home</a><br>
    <a href="profile.php">Profile</a><br>
    <a href="logout.php">Log Out</a>
    <?php
} else {
    ?>
    <a href="index.php">Home</a><br>
    <a href="login.php">Login</a><br>
    <a href="register.php">Register</a>
    <?php
}
?>

Záleží na funkci login() viz...

<?php

session_start();

function login(){
    if (isset($_SESSION["user_id"]) && !empty($_SESSION["user_id"]) ) {
        return true;
    } else {
        return false;
    }
}

?>

Data vkládám pomocí formuláře...
<form method="post">
                <?php
                if (isset($_POST["submit"])) {
                    $username = $_POST["username"];
                    $password = md5($_POST["password"]);

                    if (empty("$username") || empty("$password")) {
                        echo "<p>Vyplňte všechna pole!</p>";
                    } else {
                        $check_login = mysql_query("SELECT id FROM users WHERE username = '$username' AND password = '$password'");
                        if (mysql_num_rows($check_login) == 1) {
                            $run = mysql_fetch_array($check_login);
                            $user_id = $run["id"];
                            $user_type = $run["type"];
                            if ($user_type == "d") {
                                echo 'Tvůj účet je deaktivován';
                            } else {
                                $_SESSION_ = ["$user_id"];
                                header("location: index.php");
                            }
                        }
                    }
                }
                ?>
                Uživatelské jméno:<br>
                <input type="text" name="username"/><br>
                Heslo:<br>
                <input type="password" name="password"/><br><br>
                <input type="submit" name="submit" value="Login"/>
            </form>

Po přihlášení se přesměruje opět na login.php a je jedno jestli zadám správně login nebo ne.
Problém je, že mě to nepustí přes if (mysql_num_rows($check_login) == 1)
SQL příkaz je v pořádku.
mimochodec
Profil
Zkusil sis to $check_login vypsat?
Pardon, to bude resource. Tak jiná otázka. Zkus si ten dotaz nejdřív složit do nějaké proměnné a vypsat.
Tori
Profil
Co je tohle: $_SESSION_ = ["$user_id"];? Předpokládám tam mělo být spíš tohle: $_SESSION["user_id"] = $run['id'];, ne?
Sxmanek
Profil
Tori:
$_SESSION["user_id"] = $run['id'];

Ano mělo :) Ale stejně mě to nepustí přes tu podmínku, bude problém někde s heslem, jelikož když smažu ověření přes heslo, tak mě to pustí.
mimochodec
Profil
V dotazu chybí md5(password)
Sxmanek
Profil
to mám zde $password = md5($_POST["password"]);
pak už jen pracuji s $password
juriad
Profil
Sxmanek:
1) Vypíš si dotaz před jeho spuštěním.
2) Zkus si ten samý dotaz spustit ručně v PHPMyAdminu nebo Admineru.
3) Skončil chybou?
4) Kolik řádek vráti?
5) Jak jsi ukládal heslo do databáze? Také pomocí funkce md5?
6) Jaká je definice sloupce password? MD5 vrací řetězec o délce 32 znaků.

7) Vypiš si na začátku a na konci každé stránky SESSION třeba var_dumpem.
Sxmanek
Profil
juriad:
MD5 vrací řetězec o délce 32 znaků.

Dík, měl jsem nastaven max 30 znaků teď už vše běží ok.

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: