Autor Zpráva
regent
Profil
Dobrý deň. Mám problém s prihlásením na stránku. Vytvoril som kód v php, ale ak zadám platné meno aj heslo, vypíše sa mi chybová hláška, ktorú som naeditoval ja.
Kód je tu:
<html>

<div style="text-align:right; height:5%; width:102%; position: absolute; top:0px; left:0px; riqht:0px; background:navy; border:0; margin:0px;">
<br>
<form action="login.php" method="post">
<div style="text-align:left; height:6%; width:102%;">
<font color="White" size="6">
<b>
Markview
</b>
</font>
</div>
Meno:<input type="text" name="nick">
Heslo:<input type="password" name="heslo">
<input type="submit" name="submit" value="Prihlásiť" class="button">
</form>
</div>
<br>
</body>
</html>

<?php
$con = mysql_connect("localhost","meno","heslo");
mysql_select_db("nazov", $con);

if(isset($_POST['submit'])){
$meno= $_POST['nick'];
$heslo = md5($_POST['heslo']);
 list($count) = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM uzivatelia WHERE nick = $meno AND heslo = $heslo"));
  if ($count != 1){
echo "Zlé prihlasovacie údaje!!!";

  } else {
$_SESSION['user'] = true;
$_SESSION['username'] = $meno;
header("Location: user.php");


}
}
?>


Vypisuje mi moju chybovú hlášku: Zlé prihlasovacie údaje!!!, ktorú som tam zadal ja.
Kde by mohla byť chyba?
G3n3sis19
Profil
takto to zkus
<?php
$con = mysql_connect("localhost","meno","heslo");
mysql_select_db("nazov", $con);

if(isset($_POST['submit'])){
$meno= $_POST['nick'];
$heslo = md5($_POST['heslo']);
 $count = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM uzivatelia WHERE nick = $meno AND heslo = $heslo"));
  if ($count[0] != 1){
echo "Zlé prihlasovacie údaje!!!";

  } else {
$_SESSION['user'] = true;
$_SESSION['username'] = $meno;
header("Location: user.php");


}
}
?>
regent
Profil
bez zmeny.
môžeš to vyskúšať na http://markview.6f.sk
G3n3sis19
Profil
jaj. změn si linku 8 na toto
 $count = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM uzivatelia WHERE nick = '$meno' AND heslo = '$heslo'"));
Davex
Profil
Co je v proměnné $count a vypíše echo mysql_error() nějakou chybu?
G3n3sis19
Profil
je to array a v [0] má počet uživatelů na to jméno a heslo. Jen mu tam chyběli ' '
regent
Profil
Stále to nefunguje. Nejaké iné návrhy?
TomasJ
Profil
$count = mysql_num_rows(mysql_query("SELECT * FROM uzivatelia WHERE nick = '$meno' AND heslo = '$heslo'"));

Tohle by možná mohlo jít.
EDIT: Opraveno, odebrán count().
G3n3sis19
Profil
jsi si jisty ze se md5($_POST['heslo']); shoduje s tim v DB ?
G3n3sis19
Profil
TomasJ:
to mu vždy vyhodí 1, protože ikdyž count je 0, tak je tam 1 řádek
TomasJ
Profil
G3n3sis19:
WHERE nick = '$meno' AND heslo = '$heslo'"
Kde nick=$nick a heslo=$heslo
regent
Profil
G3n3sis19: regol som sa na 30 krát, stále nič, a registrácia posiela údaje v md5
TomasJ: Stále nič.
Ako by ste to napísali celé vy? Ako ste to písali klasicky na internete?
regent
Profil
A mohlo by to byť takto?:
$count = mysql_query("SELECT * FROM uzivatelia WHERE nick = '$meno' AND heslo = '$heslo'"));
$rowtest = mysql_num_rows($count);
if($rowtest > 0){
  
  $_SESSION['user'] = true;
$_SESSION['username'] = $meno;
header("Location: user.php");

  } else {
echo "Zlé prihlasovacie údaje!!!";
Davex
Profil
regent:
Mrkni do PHP FAQ - registrace uživatelů.
G3n3sis19
Profil
regent:
zapoměl si

}
na konci ale ano, šlo
regent
Profil
to sa mi nepáči. dal som to tam všetko, prekontroloval cez zvýrazňovač, prečo mi to nejde. Som na endora.cz
Bertram
Profil
Já bych na to šel trochu jinak.

1) Poslal dotaz na databázi pro vrácení údajů o uživateli $_POST['nick']
2) Případná chybová hláška o neexistenci uživatele $_POST['nick']
3) Porovnání hesla z databáze s heslem $_POST['heslo']
4) Případná chybová hláška o chybném hesle $_POST['heslo']
5) Nastavení statusu přihlášeného uživatele
pcmanik
Profil
Bertram:
To su zbytocne 2 dotazy na DB, vyuzitie to ma len vtedy ak chces uzivatelovi oznamit ze netrafil spravne heslo k menu.
Bertram
Profil
To je věc názoru, alespoň uživatel ví co z těch dvou údajů zadal špatně,třeba má problém s pamětí :-)
A co se toho tvého případu týče, tak bych nastavil charset pro databázové spojení, i tam muže být problém.

např:
mysql_set_charset('utf8',$link); 


edit:A navíc nevím o žádném druhém.
G3n3sis19
Profil
Bertram:

1. SELECT heslo FROM uzivatele .....
2. SELECT meno FROM uzivatele ....
TomasJ
Profil
G3n3sis19:
Spíš bych dal
$user = mysql_fetch_array(mysql_query("SELECT * FROM uzivatele WHERE nick='$nick'"));
pcmanik:
A to je, pokud správně umím počítat, 1 dotaz a z $user si vytáhneš údaje, jelikož se vrátí pole se všemi sloupci.
Např.: $nick = $user['nick'];, $mail = $user['mail'];, $name = $user['name']; atp...

Takhle to asi Bertram myslel.
Sám psal, cituji:
1) Poslal dotaz na databázi pro vrácení údajů o uživateli $_POST['nick']

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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