Autor | Zpráva | ||
---|---|---|---|
panmagor Profil * |
#1 · Zasláno: 5. 5. 2008, 14:48:24
Dobrý den všem!
Mám v DB uloženy přihlašovací údaje. Řekněme user "admin" a pass "admin" a přihlašování probíhá tak, že v následujícím skriptu se porovnává zadaný text od uživatele, s textem v DB. Pokud zadal uživatel admin a admin, pak by ho to teoreticky mělo přihlásit, protože to souhlasí s údaji v DB. Bohužel to uživatele nepřihlásí a pokaždé to vypíše "chyba" Takže tady je formulář pro přihlášení: <form action="overeni.php" method="POST"> Uživatel: <input type="text" name="user" /> Heslo: <input type="password" name="pass"/> <input type="submit" name="OK" value="Odeslat"> </form> A tady je část toho "overeni.php" $uzivatel = 'mysql_query ("SELECT uzivatel FROM uzivatele")'; $heslo = 'mysql_query ("SELECT heslo FROM uzivatele")'; $status = 'chyba'; if(($_POST["user"] == "$uzivatel") && ($_POST["pass"] == "$heslo")) { //echo "Jsi admin"; $_SESSION['user_type'] = 'admin'; $status = 'OK'; } if ($status == 'OK') { Header("Location: write.php");} else {Header("Location: login.php?logged=".$status);} |
||
Matty Profil |
#2 · Zasláno: 5. 5. 2008, 14:51:50
panmagor
Nevim, zda to může být příčina, ale zaručeně to tam je navíc: if(($_POST["user"] == $uzivatel) && ($_POST["pass"] == $heslo)) - proměnné bez uvozovek |
||
lokutus7323 Profil * |
#3 · Zasláno: 5. 5. 2008, 14:52:43
Ahoj..nemýlím se,že se chyba vypíše gned po načtení stránky než vůbec něco zadáš?
|
||
kajaman Profil |
#4 · Zasláno: 5. 5. 2008, 14:54:05
je to IMHO celé špatně:
1, vybíráš data z DB jako kdybys tam měl jen jeden záznam 2, do promněnných $uzivatel a $heslo přiřazuješ resource a ne nějakou hodnotu, k tomu slouží napří. fce mysql_fetch_array... |
||
Taps Profil |
#5 · Zasláno: 5. 5. 2008, 15:06:43
Já bych to zkusil vyřešit takto:
if(isset($_POST['OK']=="Odeslat"){ $heslo=$_POST['pass']; $uzivatel=$_POST['user']; $vyber_z_db = mysql_query ("SELECT uzivatel,heslo FROM uzivatele where heslo='$heslo' and uzivatel='$uzivatel'"); a pak bych pokračoval dále...zaleží co máš uloženo v tabulce } |
||
panmagor Profil * |
#6 · Zasláno: 6. 5. 2008, 08:37:53
A co nějak takhle-
<?php $uzivatel = 'mysql_query ("SELECT uzivatel FROM uzivatele")'; $heslo = 'mysql_query ("SELECT heslo FROM uzivatele")'; $radek_uzivatele = mysql_fetch_assoc ($uzivatele); $radek_heslo = mysql_fetch_assoc ($heslo); $status = 'chyba'; if(($_POST["user"] == $radek_uzivatel) && ($_POST["pass"] == $radek_heslo)) { //echo "Jsi admin"; $_SESSION['user_type'] = 'admin'; $status = 'OK'; } if ($status == 'OK') { Header("Location: write.php");} else {Header("Location: login.php?logged=".$status);} ?> |
||
kajaman Profil |
#7 · Zasláno: 6. 5. 2008, 09:00:27
Pořád vybíráš z DB jako kdybys v ní měl jen jeden záznam: chybí Ti "WHERE", jak psal Taps:
"SELECT uzivatel,heslo FROM uzivatele where heslo='$heslo' and uzivatel='$uzivatel'" a dále (je to jen překlep asi, ale pozor na ně, dokážou potrápit!): $radek_uzivatele X $radek_uzivatel |
||
panmagor Profil * |
#8 · Zasláno: 6. 5. 2008, 09:33:12
<?php $vyber_db = mysql_query ("SELECT uzivatel, heslo FROM uzivatele WHERE uzivatel='$uzivatel' AND heslo='$heslo'"); $uzivatel = $_POST['user']; $heslo = $_POST['pass']; //$radek_uzivatele = mysql_fetch_array ($uzivatel); //$radek_heslo = mysql_fetch_array ($heslo); $status = 'chyba'; if(($_POST["user"] == $uzivatel) && ($_POST["pass"] == $heslo)) { //echo "Jsi admin"; $_SESSION['user_type'] = 'admin'; $status = 'OK'; } if ($status == 'OK') { Header("Location: write.php");} else {Header("Location: login.php?logged=".$status);} ?> ;-) Takhle? |
||
panmagor Profil * |
#9 · Zasláno: 6. 5. 2008, 09:34:33
Jo tak nic... teď mě to příhlásí pokaždé, i když zadám špatné údaje...
|
||
Mastodont Profil |
#10 · Zasláno: 6. 5. 2008, 09:56:23 · Upravil/a: Mastodont
$uzivatel = $_POST['user']; $heslo = $_POST['pass']; if(($_POST["user"] == $uzivatel) && ($_POST["pass"] == $heslo)) Stane se :-))) |
||
kajaman Profil |
#11 · Zasláno: 6. 5. 2008, 10:28:54 · Upravil/a: kajaman
$uzivatel = $_POST['user']; $heslo = $_POST['pass']; if(($_POST["user"] == $uzivatel) && ($_POST["pass"] == $heslo))
tohle je nesmysl ;-), zkus to takhle asi: <?php $vyber_db = mysql_query ("SELECT uzivatel, login, heslo FROM uzivatele WHERE uzivatel="'.$_POST['login'].'" AND heslo="'.$_POST['heslo'].'""); $zaznam = MySQL_Fetch_Array($vyber); $uzivatel = $zaznam['uzivatel']; if($vyber_db !== FALSE) echo "Welcome".$uzivatel; else echo "Go to hell!"; |
||
Časová prodleva: 16 let
|
0