Ankündigung

Einklappen
Keine Ankündigung bisher.

Switch & Cookies: Fehler beim übermitteln

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Switch & Cookies: Fehler beim übermitteln

    Ich habe ein Script gebastelt, mit denen User selbst aus verschiedenen Topgrafiken auswählen können, welche oben angezeigt werden soll. das ganze habe ich mit einem post-formular und einer switch-anweisung gelöst. nun habe ich den wert, der zum jeweiligen case gehört in einen cookie geschrieben, damit der banner auch nach einem reload immer noch gewechselt bleibt. allerdings ist es nun so, dass beim ersten auswählen gar nichts passiert und erst, wenn man das ganze noch mal macht, die grafik geändert wird. außerdem wird die grafik wieder auf die ursprungsgrafik gesetzt, wenn man sie seite 2mal reloaded.

    hier mal die codes, damit ihr besser seht, was ich meine:

    das formular, welches in einer php-datei steckt, die auf jeder seite includet wird.
    PHP-Code:
    <form name="form" action="" method="post">
    <
    input type="Radio" name="style" value="classic"Classic

    <input type="Radio" name="style" value="new"> New
    <
    input type="Submit" name="OK" value="Auswählen" style="font-size:8pt;">
    </
    form
    und hier die switch-anweisung sammt cookie, die auch in jeder seite includet wird:
    PHP-Code:
    <?php
    setcookie 
    ("test"$HTTP_POST_VARS["style"]);

    switch(
    $_COOKIE["test"]) {
    case new : include(
    "header-new.php"); break;
    case 
    classic : include("header2.php"); break;
    default : include(
    "header2.php");
    }

    ?>
    ich hoffe echt, dass mir jemand helfen kann. ich hab schon alles ausprobiert, was mir eingefallen ist und hab auch schon gegoogelt und hier gesucht. es muss ja mit dem cookie zu tun haben, aber da es das erste mal ist, dass ich mit setcookie() arbeite, bin ich im moment etwas überfragt und php.net hat mir auch nicht weiter helfen können.


  • #2
    Setcookie veranlasst php, einen Cookie Header mit der Antwort zu schicken (server->client)
    Ein entsprechend konfigurierter Browser wird den Wert mit den folgenden Anfragen ebenfalls im header mitsenden (client->server)
    Das Feld $_COOKIE enthält alle mit dieser Anfrage (client->server) mitgeschickten Cookie Header.
    In diesem Durchlauf per setcookie gesetzt Werte werden frühestens mit der nächsten Anfrage mitgeschickt und stehen deshalb auch erst im nächsten Durchlauf über $_COOKIE zur Verfügung. Deshalb geht Deine Version beim ersten Mal schief.

    PHP-Code:
    <?php
    if (isset($_POST['style'])) {
        
    $style $_POST['style'];
        
    setcookie("style"$_POST['style']);
    }
    else if(isset(
    $_COOKIE['style'])) {
        
    $style $_COOKIE['style'];
    }
    else {
        
    $style 'default';
    }
        
    switch(
    $style) {
        case 
    'new'/* Zeichenketten wie 'new' */
            
    require 'header-new.php';
            break;
        case 
    'classic'/* oder 'classic' mit Anführungszeichen markieren */
            
    require 'header2.php';
            break;
        default:
            require 
    'header2.php';
    }
    ?>

    Kommentar


    • #3
      Re: Switch &amp; Cookies: Fehler beim übermitteln

      BTW: Dein Cookie wird jedesmal wieder gelöscht, wenn die Anfrage nicht über Dein Formular stattfindet, also $HTTP_POST_VARS["style"] nicht gesetzt ist.

      Kommentar


      • #4
        @ bruchpilot:
        danke für die lösung. ich hatte das problem mit dem cookie gedanklich auch schon eingekreist bzw. wusste, woran mein code gescheitert ist, hatte aber keine ahnung, wie ich es lösen konnte. danke vielmals für den code. werde ihn auch gleich mal mit php.net durcharbeiten um auch zu verstehen, was du da aus meinen anfängeraugen her gesehen gezaubert hast

        Kommentar


        • #5
          wenn ich jetzt den style ändere bekomme ich eine fehlermeldung ganz oben auf der seite angezeigt, aber die grafik wird trotzdem geändert.

          die meldung:

          Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/*editiert*/index.php:10) in /www/htdocs/*editiert*/header.php on line 4

          zeile 4: "setcookie("style", $_POST['style']);"

          Kommentar


          • #6
            Forensuche: headers already sent

            Kommentar

            Lädt...
            X