ugrás a tartalomhoz

Bejelentkezés - setcookie probléma

AQKing · 2008. Feb. 14. (Cs), 13.51
Sziasztok!

Eléggé új vagyok a programozás terén, szóval előre is elnézést kérek mindenkitől, ha számotokra triviális dolgokra kérdezek rá.

Egy beléptető rendszert szeretnék létrehozni, ahol eljutottam addig, hogy leelenőrzi a felhasználót és a jelszavát és belépteti ha sikeres, ellenkező esetben nem.

A továbbiakban azt szeretném, ha sikeres bejelentkezés után létrehozna egy cookie-t, ami eltárolja a felhasználó nevét.

A kód:

include('connect.php');

$nick = $_REQUEST['nick'];
$jelszo = $_REQUEST['jelszo'];
$submit = $_REQUEST['submit'];
$hibas = $_REQUEST['hibas'];

$eredmeny = mysql_query("SELECT * FROM MyDB WHERE Nick like ('$nick') AND Jelszo like ('$jelszo')");
$login = mysql_num_rows($eredmeny);

if((isset($submit)) or (isset($hibas)))
{
	if($login==1){
	setcookie("MyCookie", $nick);    //ez történik ha sikerül belépni
	include('sikeres.php');
	}else{
	include('sikertelen.php');       //ez történik ha nem sikertül belépni
	}
}else{
	if(isset($hibas))
	{
	include('sikertelen.php');
	}else{
	include('form_bej.php');
	}
}
Amikor sikeresen bejelentkezik, azaz el kellene készülnie a cookienak, a következő hibát dobja ki:

Warning: Cannot modify header information - headers already sent by (output started at ...index.php:9) in ...index.php on line 55.


Ami erre a sorra utal:

setcookie("MyCookie", $nick);    //ez történik ha sikerül belépni
Firefoxot használok és a cookie-k engedélyezve vannak.

Tudna valaki segíteni, hogy hol, miben lehet a hiba? Esetleg tudna valaki ajánlani valamilyen másik (számotokra logikusabb) bejelentkezés rendszert, ami nem cookie-val van megoldva?

- Előre is köszönet! -
 
1

Mindenekelőtt

vbence · 2008. Feb. 14. (Cs), 14.07
Ahogy bizonyára te is tudod, a cookie-k a kliens gépén tárolódnak, tehát egy rosszindulatú felhasználó olyan nicket küld neked cookieban, amilyet akar.

Másodsorban: ha rékeresel akár itt a Weblaboron a hibaüzenetre találsz ezer és egy topicot, olyat, mint ez, akik szintén újat nyitottak ahelyett, hogy rákerestek volna. Röviden: a cookie (és más header függvények) előtt nem lehet semmilyen output, sem echo, sem print, sem pedig egy üres sor egy beiclude-olt fájl végén.

Keresd meg az index.php 9-es sorát (fekete fehéren ott a hibaüzenetben), majd szervezd át a kódodat, hogy a login még az output ELŐTT fusson le. Vagy kapcsold be az output bufferinget.

B
2

Egy üres sor lehet ;-)

Fraki · 2008. Feb. 14. (Cs), 18.25
Egy üres sor lehet ;-)