Autor | Zpráva | ||
---|---|---|---|
regent Profil |
#1 · Zasláno: 27. 3. 2011, 12:48:34 · Upravil/a: regent
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 |
#2 · Zasláno: 27. 3. 2011, 13:00:14
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 |
#3 · Zasláno: 27. 3. 2011, 13:05:40
bez zmeny.
môžeš to vyskúšať na http://markview.6f.sk |
||
G3n3sis19 Profil |
#4 · Zasláno: 27. 3. 2011, 13:07:09
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 |
#5 · Zasláno: 27. 3. 2011, 13:15:46
Co je v proměnné
$count a vypíše echo mysql_error() nějakou chybu?
|
||
G3n3sis19 Profil |
#6 · Zasláno: 27. 3. 2011, 13:27:44
je to array a v [0] má počet uživatelů na to jméno a heslo. Jen mu tam chyběli ' '
|
||
regent Profil |
#7 · Zasláno: 27. 3. 2011, 13:48:51
Stále to nefunguje. Nejaké iné návrhy?
|
||
TomasJ Profil |
#8 · Zasláno: 27. 3. 2011, 13:50:31 · Upravil/a: TomasJ
$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 |
#9 · Zasláno: 27. 3. 2011, 13:50:43
jsi si jisty ze se md5($_POST['heslo']); shoduje s tim v DB ?
|
||
G3n3sis19 Profil |
#10 · Zasláno: 27. 3. 2011, 13:51:35
TomasJ:
to mu vždy vyhodí 1, protože ikdyž count je 0, tak je tam 1 řádek |
||
TomasJ Profil |
#11 · Zasláno: 27. 3. 2011, 13:57:35
G3n3sis19:
WHERE nick = '$meno' AND heslo = '$heslo'" |
||
regent Profil |
#12 · Zasláno: 27. 3. 2011, 16:53:06
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 |
#13 · Zasláno: 27. 3. 2011, 17:00:53
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 |
#14 · Zasláno: 27. 3. 2011, 22:56:14
regent:
Mrkni do PHP FAQ - registrace uživatelů. |
||
G3n3sis19 Profil |
#15 · Zasláno: 27. 3. 2011, 22:59:17
regent:
zapoměl si } na konci ale ano, šlo |
||
regent Profil |
#16 · Zasláno: 28. 3. 2011, 07:29:29
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 |
#17 · Zasláno: 28. 3. 2011, 08:07:55
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 |
#18 · Zasláno: 28. 3. 2011, 08:50:41
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 |
#19 · Zasláno: 28. 3. 2011, 09:02:52 · Upravil/a: Bertram
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 |
#20 · Zasláno: 28. 3. 2011, 15:08:23
Bertram:
1. SELECT heslo FROM uzivatele ..... 2. SELECT meno FROM uzivatele .... |
||
TomasJ Profil |
#21 · Zasláno: 28. 3. 2011, 15:24:02 · Upravil/a: TomasJ
G3n3sis19:
Spíš bych dal $user = mysql_fetch_array(mysql_query("SELECT * FROM uzivatele WHERE nick='$nick'")); 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']“ |
||
Časová prodleva: 15 let
|
0