Archief - PHP: setcookie() werkt precies niet...

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bram

Legacy Member
PHP:
setcookie('usname', $loginname, time()+(7*86400));
setcookie('pass', $loginpass, time()+(7*86400));
da gebruik ik voor een inlog script, mor ze worden precies niet gezet, want
PHP:
$cookie = isset($_COOKIE['usname']) ? $_COOKIE['loggedin'] : "Not Set";
$pass = !empty($_COOKIE['pass']) ? $_COOKIE['pass'] : "Not Set";

echo 'Cookie: '.$cookie.'<br />';
echo 'Pass: '.$pass;
geeft voor beiden "Not Set"...

als ik als controle een $_SESSION toevoeg, dan lukt het wel...
iemand een idee wat er fout gaat?
Het volledige inlog script is dit:
PHP:
if($sect == "in") {
	$loginname = isset($_POST['usname']) ? $_POST['usname'] : "";
	$loginpass = isset($_POST['passw']) ? $_POST['passw'] : "";
	
	$loginpass = md5($loginpass);
	
	$remember = isset($_POST['remember']);
	
	if(!empty($loginname) && !empty($loginpass)) {
	    $c = mysql_num_rows(mysql_query("SELECT * FROM accounts WHERE name = '$loginname' AND password = '$loginpass'"));
	    if($c > 0) {
			if($remember == TRUE) {
				setcookie('usname', $loginname, time()+(7*86400));
				setcookie('pass', $loginpass, time()+(7*86400));
			} else {			
				$_SESSION['loggedin'] = $loginname;
			}
	            
	    } else {
	        echo 'Wrong password or username';
	    }
	}
	header("Location: /read/home/");

}
(de $remember is een vinkje bij het inloggen)

koebeest

Legacy Member
PHP:
$cookie = isset($_COOKIE['usname']) ? $_COOKIE['loggedin'] : "Not Set";

wa staat die loggedin daar te doen. Zet es allemaal op usname

Bram

Legacy Member
koebeest zei:
PHP:
$cookie = isset($_COOKIE['usname']) ? $_COOKIE['loggedin'] : "Not Set";

wa staat die loggedin daar te doen. Zet es allemaal op usname

cookie noemde eerst loggedin, maar ik dacht zo "hmm, da is wel nie zo veilig alsek daarop ga gaan controleren wie precies is ingelogd"

kga het veranderen ma tis maar een kleinigheid geloofk, want diejen $_COOKIE['pass'] doet het ook niet...


edit: wat dokterice suggereerde deed me wel denken, en het probleem is ondertss al opgelost... Het probleem was de header die verzonden werd, daardoor maakte hij de cookies niet aan...
Kga proberen te redirecten met js in de hoop dat da wel lukt.


edit2: volgend vervelend probleem: alsek inlog via cookies, maar ik ga naar een andere pagina, dan verdwijnen ze weer en ben ik dus weer uitgelogd (zonder op logout te klikken natuurlijk)

edit3: oké, het lag dus niet aan de header, vanaf ik redirect met JS is het ook gedaan met de leut voor de cookies... Ie maakt ze dus aan, maar vernietigt ze ook meteen weer, of ik de login en logout nu in 1 pagina steek, of in 2 aparte...

Bram

Legacy Member
oké dees is echt maf... ik kan dus perfect cookies aanmaken (test.php maakt een cookie aan, die geeft em ook weer alsek die laat echo'en op index.php), behalve blijkbaar in login.php. de cookie wordt aangemaakt, maar onmiddellijk daarna weer leeggemaakt, ondanks dat dat nergens wordt opgegeven... ik snap er niets meer van.

twordt nog maffer: alsek bij firefox m'n cookies ga gaan opzoeken, dan zie ik ze weldegelijk staan, ingevuld en alles... blijkbaar is het dus een probleem met de echo/isset herkent ze niet.
er staan nochtans geen typfouten in...

Ryzer

Legacy Member
PHP:
setcookie('usname', $loginname, time()+(7*86400));
setcookie('pass', $loginpass, time()+(7*86400));

Zeker dat $loginname en $loginpass een waarde hebben?

Post trouwens je VOLLEDIGE files eens want ik kan niet goed uit aan die snippets van je...

Bram

Legacy Member
Ryzer zei:
PHP:
setcookie('usname', $loginname, time()+(7*86400));
setcookie('pass', $loginpass, time()+(7*86400));

Zeker dat $loginname en $loginpass een waarde hebben?

Post trouwens je VOLLEDIGE files eens want ik kan niet goed uit aan die snippets van je...

http://bramme.net/cosmosw/

daar staan alle files die te maken hebben met de login

http://bramme.net/cosmoswars/ is de site in actie. paswoord en username zijn beiden "demo"

de cookies worden zo te zien wel gezet, maar niet ingelezen...

killgore

Legacy Member
Dokterice zei:
bovenaan u code


ob_start ();

Ik zie deze oplossing té veel de laatste tijd.

Dit is NIET de goede oplossing, maar eerder uw probleem wegsteken ipv uw code goed te schrijven.

Uw code goed schrijven is uw site zo structureren dat alle output pas geflusht wordt als alle http-protocol gerelateerde zaken (cookies & headers voornamelijk) uitgevoerd zijn.

Zit je site zo ineen dat het voor jou handiger is die cookie pas te setten NA een bepaald stukje code waar outputfuncties inzitten? Wel, gebruik dan een template systeem, dat is heus niet moeilijk om te leren, meer zelfs: de tijd die het je kost om dat te leren win je zeker terug door het ontwikkelingsgemak dat het je zal leveren.

Dit is trouwens geen antwoord (of slechtst gedeeltelijk) op threadstarter, maar puur op die ob_start opmerking.

Bram

Legacy Member
ik was idd al van plan om me eerst eens bezig te houden met smarty... kheb het al gedownload ofzo, maar kzal eerst eens wa beter de documentation moeten lezen, want ksnap er nog nie al te veel van...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan