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 |
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 |
#3 · Zasláno: 24. 10. 2014, 00:57:59
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 |
#4 · Zasláno: 24. 10. 2014, 01:13:27
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 |
#5 · Zasláno: 24. 10. 2014, 01:32:43
V dotazu chybí md5(password)
|
||
Sxmanek Profil |
#6 · Zasláno: 24. 10. 2014, 01:40:40
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 |
#8 · Zasláno: 24. 10. 2014, 02:12:18
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. |
||
Časová prodleva: 10 let
|
0