Autor | Zpráva | ||
---|---|---|---|
GeneralDv Profil |
#1 · Zasláno: 10. 8. 2009, 11:07:49 · Upravil/a: GeneralDv
Ahoj. Dělá mi problém login, kterej hází chybu (viz níž) a neodesílá cookies při přihášení uživatele.. poradíte mi pls ? script vypadá:
<h1>Přihlášení k účtu</h1> <?php $nick = $_POST["nick"]; $heslo = $_POST["heslo"]; $zobr = true; if (isset($_POST["prihlasit"])){ if ($heslo=="" OR $nick==""){ echo("Prosím, zadejte heslo a nick !"); } else{ $heslo1 = md5($heslo); $najdi = mysql_query("select id from uzivatele where nick='".$nick."' and heslo='".$heslo1."';"); $radky = mysql_num_rows($najdi); if ($radky==false or $najdi==false){ echo("Přihlášení se nezdařilo, prosím opakujte !"); } elseif ($radky!=1){ echo("Vámi zadané údaje jsou chybné, nebo uživatel neexistuje !"); } else{ $nick = mysql_real_escape_string($nick); $heslo1 = mysql_real_escape_string($heslo1); $vyber = mysql_query("select id, nick from uzivatele where nick='".$nick."' and heslo='".$heslo1."';"); $vybr = mysql_fetch_array($vyber); if ($vybr==true and $vyber==true){ $zobr=false; $_SESSION["prihlasen"] = 1; $_SESSION["id"] = $vybr["id"]; $_SESSION["nick"] = $vybr["nick"]; setcookie("prihlasen", "1", time()+3600); setcookie("nick", $_SESSION["nick"], time()+3600); setcookie("id", $_SESSION["id"], time()+3600); echo('Přihlášení proběhlo v pořádku !<br><strong>Nebudete-li přesměrování do 5 sekund, klikněte <a href="index.php?page=uvod">SEM</a></strong><meta http-equiv="Refresh" content="0 ; URL=http://www.professional.gamx.eu/">'); } else{ echo("Přihlášení se nezdařilo, prosím opakujte !"); } } } } if ($zobr==true): ?> <form action="" method="post"> <input type="hidden" name="prihlasit"> <table> <tr> <td>Uživ. jméno: </td> <td><input type="text" name="nick" value=""> </td> </tr> <tr> <td>Heslo: </td> <td><input type="password" name="heslo" value=""> </td> </tr> <tr> <td></td><td><input type="submit" value="Přihlásit"></td> </tr> </table> </form> <?php endif; ?> A chyba zní: Warning: Cannot modify header information - headers already sent by (output started at *) */login.php on line 36 Warning: Cannot modify header information - headers already sent by (output started at */login.php on line 37 Warning: Cannot modify header information - headers already sent by (output started at */login.php on line 38 za odpovědi předem díky.. |
||
Radek9 Profil |
#2 · Zasláno: 10. 8. 2009, 11:19:42
Cookies se musí definovat úplně nahoře. Tudíž i nad doctypem a veškerýmy výpisi echa.
|
||
GeneralDv Profil |
#3 · Zasláno: 10. 8. 2009, 18:01:19
Nejde nějak jinak zachovat přihlášení uživatele i po zavření stránky ? Všechny scripty se mi includujou do středu stránky a nevim jak bych to měl udělat :(
|
||
denCo Profil |
#4 · Zasláno: 10. 8. 2009, 18:20:45
nato je aj session... netreba ti to davaj aj do cookies a aj do session... a jednoducho daj podmienku, ze ak je definovana premenna $_SESSION["prihlasen"], $_SESSION["id"] a $_SESSION["nick"] a ak maju spravnu hodnotu tak ich vpusti na stranku
|
||
GeneralDv Profil |
#5 · Zasláno: 10. 8. 2009, 19:43:41 · Upravil/a: GeneralDv
Nevim co s tim. V loginu sem změnil akorát že sem nastavil $login_send_ok true, smazal sem odesílání COOKIES a na začátek indexu:
<?php session_start(); require_once("db.php"); if ($login_send_ok!=false){ setcookie("prihlasen", "1", time()+3600); setcookie("nick", $_SESSION["nick"], time()+3600); setcookie("id", $_SESSION["id"], time()+3600); } if ($_COOKIE["nick"]!=false AND $_COOKIE["id"]!=false AND $_COOKIE["prihlasen"]!=0){ $query = mysql_query("select prava from uzivatele where id='".$_COOKIE["id"]."' and nick='".$_COOKIE["nick"]."'"); if (mysql_num_rows($query)!=0){ $_SESSION["prihlasen"] = 1; $_SESSION["id"] = $_COOKIE["id"]; $_SESSION["nick"] = $_COOKIE["nick"]; } } Teď žádný chyb. hlášky nevypisuje ale koláče do prohlížeče nepřicházej.. Napadla mně jedna věc, co ty cookie odesílat pomocí JS, to by řešilo situaci kdy se musí odesílat před výstupem ? |
||
Taps Profil |
#6 · Zasláno: 11. 8. 2009, 17:42:23
GeneralDv
mrkni na http://pecan.cz/index.php?id=42&n=prace-s-cookies třeba ti to pomůže |
||
GeneralDv Profil |
#7 · Zasláno: 11. 8. 2009, 21:19:33
Pořád mi to nejde, teď sem tu skoušel v JS ale zase mi nejdou do prohlížeče žádný cookies (mam je zaplý, všude jinde jedou):
<script> datum = new Date(); datum.setTime(datum.getTime() + 7 *24*60*60*1000); document.cookie="nick=;expires="+ datum.toGMTString()"; document.cookie="id=;expires="+ datum.toGMTString()"; document.cookie="prihlasen=;expires="+ datum.toGMTString()"; </script> to je ten JS kterej má za úkol odeslat cookies prohlížeči, nevidíte v tom někdo chybu ? |
||
Alphard Profil |
#8 · Zasláno: 11. 8. 2009, 21:32:21
GeneralDv:
Z vašeho kódu nejsem moc moudrý. Tento kód [#5] vzkládáte také doprostřed stránky? Session a cookies mají společnou vlastnost, musí se odeslat před jakýmkoliv výstupem. Je jedno, co použijete. Jestli je tak velký problém přesunout daný script na začátek, lze použít bufferovací funkce. ob_start() na začátek (úplný začátek) a ob_end_flush() na konec. |
||
GeneralDv Profil |
#9 · Zasláno: 12. 8. 2009, 09:22:15
Alphard: díky, už to funguje. Ale to že se sessions musí odesílat před výstupen nevim, mě to nikdy problémy nedělalo...
|
||
Alphard Profil |
#10 · Zasláno: 12. 8. 2009, 09:25:08
GeneralDv:
„Ale to že se sessions musí odesílat před výstupen nevim, mě to nikdy problémy nedělalo“ session_start() musí být před výstupem, nenapsal jsem to dost přesně, omlouvám se. |
||
Časová prodleva: 15 let
|
0