Autor Zpráva
panmagor
Profil *
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
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 *
Ahoj..nemýlím se,že se chyba vypíše gned po načtení stránky než vůbec něco zadáš?
kajaman
Profil
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
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 *
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
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 *
<?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 *
Jo tak nic... teď mě to příhlásí pokaždé, i když zadám špatné údaje...
Mastodont
Profil
$uzivatel = $_POST['user'];
$heslo = $_POST['pass'];

if(($_POST["user"] == $uzivatel) && ($_POST["pass"] == $heslo))


Stane se :-)))
kajaman
Profil
$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!";
  

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: