jenslm: Cookies ohne Reload

Ist es moeglich Cookies auch ohne Page-Reload zu erstellen oder mache ich irgendetwas falsch.

setcookie("usertype", $_GET['usertype'], time()+365*24*60*60);

lg, jens

  1. Lieber jenslm,

    ich verstehe den Sinn Deiner Frage nicht. Du hast das Prinzip der HTTP-Kommunikation verstanden? Schauen wir uns das nocheinmal an:

    1.) Browser sendet HTTP-Anfrage an den Server.
    2.) Server beantwortet die Anfrage mit einer HTTP-Response.

    Der Server kann Cookie-Daten im Header der HTTP-Response an den Browser senden.

    Wo willst Du nun Deinen Reload ins Spiel bringen?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. folgendes:

        
      $usertype_array = array('test1', 'test2');  
      $language_array = array('test3', 'test4');  
        
      if (isset($_GET['usertype'] && $_GET['language']) && in_array($_GET['usertype'], $usertype_array) && in_array($_GET['language'], $language_array))  
      {  
      	Header("Location: http://".$rootfolder."/system");  
      	setcookie('usertype', $_GET['usertype'], time()+31536000);  
      	setcookie('language', $_GET['language'], time()+31536000);  
      }  
      
      

      Problem die Cookies werden nicht geschrieben?
      Was mache ich falsch?
      Lg, Jens

      1. ok ich muss noch etwas dazu sagen.
        Der Code ist in einer cookies.php gespeichert die in eine andere Seite naemlich index.php inkludiert wird. Ruf ich cookies.php direkt auf funktioniert alles einwandfrei.
        Funktionieren Cookies im Zusammenhang mit include nicht?

        lg, jens

        1. Hallo Jens,

          Der Code ist in einer cookies.php gespeichert die in eine andere Seite naemlich index.php inkludiert wird.

          das spielt keine Rolle.

          Ruf ich cookies.php direkt auf funktioniert alles einwandfrei.
          Funktionieren Cookies im Zusammenhang mit include nicht?

          Wie gesagt: Das spielt keine Rolle.
          Bekommst du eventuell eine Notice-Meldung "Cannot modify header information. Headers already sent ..."?

          Wichtig ist, dass dein Script keinerlei Ausgaben an den Browser sendet, bevor HTTP-Header gesetzt werden. Wenn in deinem Fall auch die Weiterleitung durch den Location-Header nicht funktioniert, deutet das stark auf so einen Effekt hin.

          Ciao,
           Martin

          --
          Schildkröten können mehr über den Weg berichten als Hasen.
          1. Wichtig ist, dass dein Script keinerlei Ausgaben an den Browser sendet, bevor HTTP-Header gesetzt werden. Wenn in deinem Fall auch die Weiterleitung durch den Location-Header nicht funktioniert, deutet das stark auf so einen Effekt hin.

            weiterleitung funktioniert nur die cookies werden nicht gesetzt.

            lg

            1. Kanns sein dass die wegen der Weiterleitung nicht mehr beachtet werden?

              1. Nene hat sich erledigt, hab vergessen anzugeben wo die Cookies gueltig sein sollen. Eigene Dummheit eben.
                lg dennis

    2. Hallo,

      ich verstehe den Sinn Deiner Frage nicht. Du hast das Prinzip der HTTP-Kommunikation verstanden? Schauen wir uns das nocheinmal an:

      1.) Browser sendet HTTP-Anfrage an den Server.
      2.) Server beantwortet die Anfrage mit einer HTTP-Response.

      Der Server kann Cookie-Daten im Header der HTTP-Response an den Browser senden.

      ergänzend dazu: Der Browser sendet (wenn er darf) Cookies, die er bei vorhergehenden Request/Response-Zyklen von diesem Server erhalten hat, beim Request wieder zurück. Sonst wäre ja keine Wiedererkennung des Clients durch Cookies möglich.

      Ciao,
       Martin

      --
      Viele Fachleute vertreten die Ansicht, jedes Feature eines Programms, das sich nicht auf Wunsch abstellen lässt, sei ein Bug.
      Außer bei Microsoft. Da ist es umgekehrt.
  2. Ist es moeglich Cookies auch ohne Page-Reload zu erstellen oder mache ich irgendetwas falsch.

    Ja, eine ajax-Response kann auch einen Cookie (im HTTP-Header) senden.

    Hotti

  3. Hello,

    Ist es moeglich Cookies auch ohne Page-Reload zu erstellen oder mache ich irgendetwas falsch.

    Jein.
    Erstellen kann der Server die Cookies immer und dann mit der nächsten Response ausliefern.
    Ob der Client den Cookie angenommen aht, weiß der Server aber erst mit dem nächsten Request und dieser ist dann zur Sicherheit oft ein parametrisierter "Reload", also ein Location-Header auf dieselbe Seite oder eine "Unterseite" oder mit einem angehängten Paramter. Diese Abweichungen von der Original-UTL benötigt man, um sicherzustellen, dass kein zirkulärer Verlauf entsteht. Der Server muss in die Lage versetzt werden, Originalrequest und Kontrollrequest zu unterscheiden.

    Im Array $_COOKIE
    http://php.net/manual/de/reserved.variables.cookies.php
    landet der Cookie fühestens mit dem Folge- oder Kontrollrequest.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de