Autor Beitrag
Ccenter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: So 01.04.12 14:04 
Moin,

versuche gerade ein Cookie per PHP zu erstellen aber ich bekomms nicht zum laufen. Kann mir bitte jemand mal sagen warum das nicht funktioniert?

Datei heißt index.php und liegt auf einem Server:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>

    <body>

       <?php
        setcookie("CookieTest", "Cookie-Wert123");
  
  $cookie = $_COOKIE["CookieTest"];
  echo "Der Inhalt des Cookies: $cookie";
       ?>
        
    </body>

</html>


Wenn ich die Seite aufrufe bekomme ich immer nur zu sehen:
"Der Inhalt des Cookies: ". Und wenn ich mir in den Browsereinstellungen die vorhandenen Cookies anzeigen lasse, ist meiner nicht dabei.
Ich habs bereits mit Firefox und Internet Explorer probiert.


Moderiert von user profile iconChristian S.: Topic aus Off Topic verschoben am So 15.07.2012 um 12:44
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: So 01.04.12 14:32 
das geht so nicht.
Erstmal werden Cookies im Header übertragen, was heißt es muss gesetzt werden BEVOR irgendetwas an Inhalt übertragen wird.
2. Kannst du das Cookie auch erst dann aufrufen wenn es gesetzt wurde -> beim 2. Aufruf oder mit Javascript.

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: So 01.04.12 16:10 
In der PHP Doku gibt es für viele Funktionen Beispiel-Code. Auch für setcookie. Ein Blick in die Manual lohnt sich immer:
www.php.net/manual/d...nction.setcookie.php

Zitat:

setcookie() definiert ein mit den HTTP Header-Informationen zu übertragendes Cookie. Wie andere Header auch, müssen Cookies vor jeglicher Ausgabe Ihres Skriptes gesendet werden (dies ist eine Einschränkung des Protokolls). Das bedeutet, dass Sie diese Funktion aufrufen müssen, bevor Sie eine Ausgabe, dazu zählen auch <html>- oder <head>-Tags sowie jede Art von Whitespaces, übermitteln.

Sind die Cookies einmal gesetzt, können Sie beim nächsten Seitenaufruf anhand der $_COOKIE oder $HTTP_COOKIE_VARS Arrays auf diese zugreifen. Beachten Sie, dass die Superglobals wie $_COOKIE seit PHP 4.1.0 verfügbar sind. Die Cookie-Werte stehen auch in $_REQUEST.


Mit isset kannst du prüfen ob das Cookie bereits gesetzt wurde:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<?php
  define('COOKIE_NAME''MY_COOKIE');

  if(isset($_COOKIE[COOKIE_NAME]) {
    // Cookie ist gesetzt -> Auslesen
  } else {
    // Cookie ist nicht gesetzt -> Cookie setzen
  }
?>

<html>
...
Ccenter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: Di 03.04.12 13:34 
Gut, Danke.
Der erste Fehler lag also darin, dass ich setcookie nicht im Header hatte. Der zweite Fehler ist, dass ich mir den Inhalt erst beim zweiten
Aufruf liefern lassen kann. In Ordnung, warum klappt das trotzdem nicht?

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
  
  <?php
  setcookie(”CookieTest”, “Cookie-Wert123”);
  ?>

    </head>
    <body>
       
        <?php
        $cookie = $_COOKIE["CookieTest"];
        echo "Der Inhalt des Cookies: $cookie";
        ?>
        
    </body>
</html>


Der Inhalt wird auch beim zweiten Aufruf nicht angezeigt.
Wenn ich mir im Firefox die vorhanden Cookies anzeigen lasse ist meiner wieder nicht dabei.
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Di 03.04.12 13:43 
header = bevor IRGENDETWAS gesendet wird, unter "irgendetwas" zählt auch
ausblenden Quelltext
1:
2:
3:
4:
5:
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>

genau das hat aber Andreas L. auch schon geschrieben.

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht