Auslesen von Cookies?

mangaka

Grünschnabel
hallo,
ich bin nicht zum 1. Mal hier im Forum, aber ist mein 1. Beitrag...kommen wir zum Anlass:
Ich habe einen Code geschrieben, wie ihr im Folgendem sehen könnt, der Cookies erstellt und eigentlich auch auslesen können sollte->index.php
aber das tut er nicht, ich habe kein plan mehr voran es liegen könnte :(


login.html

HTML:
<html>
<head>
</head>
<body> 
<form action="check.php" method="post">
name:<br><input type="text" name="name"><br>  
pw:<br><input type="password" name="pw">
<input type="submit" value="senden">
</form>
</body>
</html>

check.php
PHP:
<?php
$name=$HTTP_POST_VARS['name']; 
$pw=$HTTP_POST_VARS['pw']; 
$t = time()+3600*24*10;
setcookie("name",$name,$t);
setcookie("pw",$pw,$t);
?>
<html>
<body>
<?php
$name=$HTTP_POST_VARS['name'];
$pw=$HTTP_POST_VARS['pw'];	

$db=mysql_connect ("localhost", "", "") or die ("Verbindung zur DB konnte nicht hergestellt werden");
mysql_select_db ("usr_web2_3") or die ("DB wurd nicht gefunden");

$aufgabe="SELECT * FROM ludete WHERE name LIKE '$name'";
$ergebnis=mysql_query ($aufgabe) or die ("Aufgabe nicht ausgeführt"); 

$anz=mysql_num_rows($ergebnis);	  

if ($anz==1) {
$zeile=mysql_fetch_row($ergebnis) or die ("Datensatz konnte nicht ermittelt werden"); 

 if ($pw==base64_decode($zeile[1])) {
 echo "Sie sind eingeloggt, <a href='../index.php'>weiter</a>";
 }  
 else {
 echo "Login fehlgeschlagen";
 } 
 
} 
else {
echo "Benutzername nicht vorhanden";
}	 
?>
</body>
</html>
// check.php geht, ich kann micht einloggen und es werden cookies erstellt.

INDEX.PHP
<?php
if (!isset ($_COOKIE['name']) && !isset ($_COOKIE['pw']))
{
header ("Location: adcon/login.html");
}
?>
<html>
<body>
<?php		
$name=$_COOKIE["name"];				 
$pw=$_COOKIE["pw"];	
 echo "geil, dein name ist $name <br> dein pw: $pw";	
echo "<br><a href='logout.php'>logout</a>";
?>
</body>
</html>
// und hier werde ich sofort auf login.html weiter geleitet, d.h. er findet eigentlich keine cookies, aber sie sind da-.-



Ich habe den gleichen script ohne mysql code und habe die datein alle im gleichen ordner und dort geht es, voll komisch Oo
 
Zuletzt bearbeitet:
Bitte schreibe Deinen Code in die entsprechenden Code-Tags (mit der Editierfunktion).
Die Tags sind für html:
[ html ]
Dein Code
[ /html ]
und für PHP
[ php ]
Dein code
[ / php ]
natürlich ohne Leerzeichen.
Und bei der Gelegenheit rücke Deinen Code bitte auch gleich ein.
So ist das echt mühsam zu lesen.
 
wie bereits erwähnt lässt dich sein code nicht gut lesen.
ich habe ihn aber mal überflogen.
du setzt einen cookie namens name.
dieser sollte dann auch in der variable $name vorhaneden sein (manchmal ist das nicht der fall, dann solltest du es über $_COOKIE[name] aufruen, das geht immer).
nachlesen kann man das unter
http://de.php.net/manual/en/function.setcookie.php
dein problem liegt aber an einer anderen stelle.
wenn du einen cookie setzt (mit setcookie), dann wird er erst beim user gesetzt, wenn dieser die seite aufgerufen hat (nicht während der ausführung der datei auf dem server).
somit ist der cookie auch erst beim nächsten aufruf der seite erreichbar.

um es zu verdeutlichen, hier mal der aublauf des cookie-setzens:

1. user ruft skript vom server auf
2. server "bearbeitet" das skript
3. server sendet die "fertige" html-datei an den user (mit der information, ich glaube im header, dass dieser einen cookie setzen soll)
4. user empfängt die datei und führt die header-informationen (cookie-setzen) aus.
erst ab jetzt ist der cookie also solcher beim user verfügbar, denn auf dem server ist er es nie.
5. user ruft eine weitere seite (oder dieselbe) auf.
jetzt werden die cookie-informationen, die user-seitig gespeichert wurden mit dem request der neuen seite an den server gesendet.
erst jetzt ist die information des cookies für den server sichtbar.

//greets
//bad taste
 
hääääääääääääää....komisch ich meine ich habe es doch so gemacht wie du gesagt hast...
oO
 
Zuletzt bearbeitet:
Versuchde dann mal, die Seite direkt nochmal zu aktuallisieren.
Geht mit JavaScript ganz einfach
Code:
<script language="javascript">
		setTimeout("document.location.href='index.php'",100);
</script>

Aber eigentlich ist das ja quatsch, da er die index.php ja neu aufruft, nachem der Cookie in check.php schon erstellt worden ich.
Hmm, sonst wüsste ich auch net weiter.

Cya
-Perry-


PS.
Versuch die Cookie-Variablen doch mal vorher auszugeben und verfolge ihren weg.
 
Zuletzt bearbeitet:
genau das meine ich ja...deshlab verstehe ich es auch nicht...wie schon erwähnt habe ich nochma den gleichen script ohne mysql-code, der genau so aufgebaut ist, der auch funktioniert

ich mach ver such ma, wie du gesagt ahst, deren weg zu verfolgen.

achja habe vergessen was zu sagen:
die cookies werden aufjedenfall erstellt, das kann ich ja nachsehen und sie haben auch die were drinstehen, die ich angegeben hatte!
nur index.php weigert sich anscheinend den cookie auszulesen
 
Zuletzt bearbeitet:
ich habe das problem jetzt gelöst, aber ich verstehe nicht warum es zu einem problem kommt...
ich habe die datein wie bei einem anderen script nun in einen gemeinsamen ordner gepackt und jetzt geht es...
ich gebe mich aber damit nicht zufrieden könnt ihr mir sagen woran das liegt?
 
Vielleicht lag es einfach nur an den relativen Pfaden.
Irgentwo hast du dann sicher ein paar Pünktchen vergessen ("../ordner/*.php")
Ich könnte es mir nur damit erklären.

Cya
 
wenn die skripte in verschiedenen ordnern liegen, dann kommt dein problem vermutlich daher.
wenn cookies gesetzt werden, dann kann man sie für die gesammte domain, nur eine subdomain oder auch nur für den aktuellen ordner setzen.
je nach den server-einstellungen ist eine variante default.
somit kann es sein, dass die cookies nur für den einen ordner gesetzt wurden, und in den anderen daher nicht zu sehen sind.
kleiner tip: um in skripte zu schauen, welche cookies für dieses skript gesetzt sind, verwendet man am besten folgendes:
PHP:
print_r($COOKIES);

je nachdem, welchen browser du verwendest, kann man sich ja auch alle cookies anzeigen lassen und in welchen domains (bzw. domains/ordner) diese gelten.

//greets
//badtaste
 
Zurück