Cookies werden nicht gelesen

SeeSharpNewBee

Erfahrenes Mitglied
Hi,

ich weiß, das thema war hier sicher schon hundert mal oder so, ich hab auch ca. 30 beiträge gelesen, jedoch hat keiner davon mein problem gelöst, und das ist folgendes:

ich setze cookies:

PHP:
<?
	setcookie('login[user]', $usr, time() + (3600*24*31)) or die ("cookie error");
	setcookie('login[pass]', $pass, time() + (3600*24*31)) or die ("cookie error");
?>

und möchte sie wenn der user die seite wieder aufmacht/neu lädt/sonstiges die cookies wieder ausgelesen werden, doch das funktioniert bei mir nicht. Cookies werden akzepiert und korrekt geschrieben.

cookies auslesen:
PHP:
<?PHP
error_reporting(E_ALL);

if(isset($_COOKIE['login'])) 
{	
	echo "Hallo ".$_COOKIE['login']."!";
}
else
{
	echo "Willkommen, bitte loggen Sie sich ein!";
}

?>

oder muss das auch geschehen bevor header infos gesendet werden? Danke
 
Wenn Du die Cookies
Code:
login[user]
und
Code:
login[pass]
setzt, dann solltest Du auch diese auslesen und nicht den Cookie login.
Die Rueckmeldung von setcookie() sagt uebrigens nichts darueber aus ob der Cookie nun gesetzt wurde oder nicht. Deine "or die()"-Konstrukte kannst Du Dir also absolut schenken.
 
Noch ein Sicherheitshinweis: Ein Passwort – egal in welcher Form –sollte nie in einem Cookie gespeichert werden. Prinzipiell sollten Cookies nicht anhand ihrer Daten mit einem Benutzer in Verbindung gebracht werden können. Daher sollte auch der Benutzername dort nicht gespeichert werden.
 
Ok, das hab ich jetzt geändert in:

PHP:
<?
	if(setcookie('login[user]', $usr, time() + (3600*24*31)) && setcookie('login[pass]', $pass, time() + (3600*24*31)))
	{
		echo "Cookies wurden gestzt";
	}
?>

das hatt aber immer noch nichts gebracht, ich hab schon mehrere tuts gelesen und mit google gesucht, und überall komm ich nur zu der "konstruktion" die ich hier habe, damit meine ich nicht die "or die" sondern den rest, und es will einfach nicht funktionieren.
 
Wegen dem passwort, das wird md5 verschlüsselt, aber wenn ich so überlege, brauch ich eigentlich nur den benutzernamen! Trotzdem funktioniert das nicht, warum, waaaaaaaaa, ich werd wahnsinnig!
 
Falls dein Webserver ein Apache-Webserver ist, prüfe mal, welche Werte die apache_response_headers()-Funktion – also die tatsächlich gesetzten Header-Felder – zurückgibt. Darunter sollten sich auch die beiden Cookies befinden. Weitergehend solltest du prüfen, ob dein Browser die Cookies überhaupt akzeptiert und speichert.
 
Diese funktin hat folgendes zurückgegeben:

PHP:
Array ( [X-Powered-By] => PHP/5.1.1 ) Accept: */* 
Accept-Language: de-at 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322) 
Host: localhost 
Connection: Keep-Alive 
Cookie: PHPSESSID=e41afb7155dc4649d7f2530b5c27d282

damit kann ich aber nichts anfangen. Wegen, ob überhaupt erstellt werden bzw. akzeptiert werden, das hab ich schon überprüft, sie werden exakt erstellt und werden auch akzeptiert.

Ich teste das ganze mit xampp, wenn das hilft. Danke
 
Probier mal Folgendes:
PHP:
<?php

	ini_set('display_errors', true);
	error_reporting(E_ALL);

	var_dump( setcookie('foo', 'bar', time()+3600*24*31, '/', '.'.$_SERVER['SERVER_NAME']) );

?>
Das var_dump() ist dabei nur zu Testzwecken.
 
Nur mal so nebenbei: MD5 ist ein Hash, keine Verschluesselung. Und wenn Du schon Passworte hashst schlage ich vor, dass Du besser SHA1 nutzt, da dieser einen laengeren Hash erzeugt und somit die Chance von Kollisionen geringer ist.
Weiterhin ist auch sowas wie
PHP:
if(setcookie('login[user]', $usr, time() + (3600*24*31)))
ueberfluessig, denn solange setcookie() ausgefuehrt werden kann gibt es true zurueck.
php.net hat gesagt.:
If setcookie() successfully runs, it will return TRUE. This does not indicate whether the user accepted the cookie.
Probier doch mal folgendes Script:
PHP:
<?php
error_reporting(E_ALL);
if (isset($_GET['check']))
	{
		if (isset($_COOKIE['testcookie']))
			{
				setcookie('testcookie','test',time()-3600);
				echo 'Cookie gesetzt';
			}
		else
			{
				echo 'Cookie nicht gesetzt';
			}
	}
else
	{
		setcookie('testcookie','test',time()+3600);
		header('Location: cookietest.php?check=1');
	}
?>
 
Zurück