Autor Zpráva
GeneralDv
Profil
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
Cookies se musí definovat úplně nahoře. Tudíž i nad doctypem a veškerýmy výpisi echa.
GeneralDv
Profil
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
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
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
GeneralDv
mrkni na http://pecan.cz/index.php?id=42&n=prace-s-cookies třeba ti to pomůže
GeneralDv
Profil
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
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
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
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.

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: