Autor | Zpráva | ||
---|---|---|---|
Pearljam Profil |
#1 · Zasláno: 23. 10. 2016, 15:37:15
Zdravím, prosím o radu, nevím jak vyřešit oznámení o chybně zadaném uživatelském jménu nebo heslu při loginu.
V scriptu mám při nesprávném zadaní uživatelského jména nebo hesla aby se objevilo okno se zprávou, ale po kliknutí se objeví hláška, místo přesměrování na znovu index.php s formulářem. Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/139518/virtual/www/login.php:19) in /data/web/virtuals/139518/virtual/www/login.php on line 20 <?php session_start(); include("config.php"); if(isset($_POST['login'])) { $userName = secure($_POST['username'], $mysqli); $pass = secure($_POST['password'], $mysqli); $q = "SELECT * FROM user WHERE username = '$userName' AND pass = '$pass'"; if($res = $mysqli->query($q)) { if($res->num_rows > 0) { $_SESSION['userName'] = $userName; header("Location:admin.php"); exit; } else { echo'<script>alert("Chybně zadané uživatelské jméno nebo heslo !");</script>'; header("Location:index.php"); exit; } } } |
||
nodo Profil |
#2 · Zasláno: 23. 10. 2016, 17:23:43
Problém je obvykle v tom, že na začiatku kódu je prázdny riadok alebo medzera.. Funkcie ktoré menia hlavičky stránky (header, session_start, set_cookie), musia byť pred tým ako začneš niečo vypisovať (echo, print).
Čiže v tvojom prípade session_start(); daj na stránku ako prvú vec |
||
TomášK Profil |
nodo
To není mezera, má ta echo před header, echo'<script>alert("Chybně zadané uživatelské jméno nebo heslo !");</script>'; header("Location:index.php"); Hlavičky se musí posílat před obsahem. Navíc, pokud stránka přesměrovává, nemá žádný obsah. Upozornění je potřeba zobrazit až na stránce, kam je uživatel přesměrovaný. |
||
Pearljam Profil |
#4 · Zasláno: 23. 10. 2016, 18:30:23
TomášK:
Děkuji, pokud odstraním řádek 19 echo s oznámením tak bezproblému se vrátím na index s přihlašovacím formulářem, ale bez oznámení to ano, ale chtěl bych sotat hlášku o neplatném přihlášení. |
||
Keeehi Profil |
#5 · Zasláno: 23. 10. 2016, 20:49:27
Pearljam:
Tak přesměruj třeba na stránku header("Location:index.php?badlogin=1"); |
||
WAWApUKUI Profil * |
#6 · Zasláno: 24. 10. 2016, 20:39:02
Alebo daj
echo'<script>alert("Chybně zadané uživatelské jméno nebo heslo !"); setTimeout("location.href='index.php'",100);</script>';
|
||
Hando Profil |
#7 · Zasláno: 24. 10. 2016, 22:40:41
WAWApUKUI:
Dobrá rada nad zlato. :) Uvozovky, apostrofy - vše dohromady, včetně chyby... V čem si pomůže, když nahradí krátký nežádoucí výstup před header() tvým dlouhým ne nutně spolehlivým výstupem? Spoléhat se v běhu scriptu na JS mi nepřijde jako vhodné řešení... Když nebude chtít použít řešení od Keeehiho, tak se může držet použití session, uložit chybu a po přesměrování zkontrolovat, zda existuje zpráva o chybě a případně zprávu vypsat a příslušnou proměnnou smazat... |
||
Keeehi Profil |
#8 · Zasláno: 24. 10. 2016, 23:32:05
Hando:
Jediný problém se session je, že se může pak to oznámení zobrazit v jiném okně. Což se asi většinou nestane ale teoretická šance tu je. |
||
Pearljam Profil |
#9 · Zasláno: 25. 10. 2016, 21:18:43
Hando:
Děkuji velice za názory, pomocí toho scriptu to řešit nechci, spíše bych šel cestou jak píše Hando ,nevím jestli jsem to pochopil správně, takže do proměnné vložit text s hláškou a až v index.php s přihlašovacím formulářem vypsat pomocí echo text s proměné ? Takhle by to mohlo fungovat ? |
||
Hando Profil |
#10 · Zasláno: 26. 10. 2016, 12:47:08
Ano, myšlenka je taková - když dojde k chybě, uložíš si hlášku do session (může to být i více hlášek, abys toho člověka nevracel zpět kvůli každé jedné chybě), přesměruješ na původní stránku a podíváš se, jestli session obsahují hlášku o chybě, třeba $_SESSION['error']['nějaká hláška']. Pokud ano, zpracuješ je, zobrazíš a smažeš, aby se ti nezobrazovaly pořád znovu.
Samozřejmě si musíš být vědom toho, na co upozorňoval Keeehi: „Jediný problém se session je, že se může pak to oznámení zobrazit v jiném okně. Což se asi většinou nestane ale teoretická šance tu je.“ Ale pokud neděláš nějaký významný projekt, kde by na tom hodně záleželo, tak bych to asi moc neřešil... |
||
Časová prodleva: 5 dní
|
|||
blaaablaaa Profil |
#11 · Zasláno: 31. 10. 2016, 08:04:26
Hando
Pripadne presmeruje s nejakym hashem v getu, ktery si ulozis i k sessione a podle toho pak zobrazi chybove hlasky ve spravnem okne :) |
||
Časová prodleva: 6 let
|
0