Cookie-Problem

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

  • Cookie-Problem

    In ein Formular lese ich gespeicherte Cookies (erstellt bei vorheriger Nutzung dieses Formulars) folgendermaßen in die einzelnen Textfelder (Beispiel hier: Textfeld "Name") ein:
    PHP-Code:
    if (isset($_COOKIE['Name'])) { echo $_COOKIE['Name']; } 
    In der dazu gehörigen sendmail.php werden die einzelnen Textfeld-Inhalte folgendermaßen in das Cookie geschrieben:
    PHP-Code:
    setcookie("Name"$Nametime()+60*10); 
    Nutzt man jetzt dieses Formular erneut und überschreibt die durch das Cookie eingefügten Vorgaben werden diese Eingaben beim Senden ignoriert und die sendmail.php sendet die durch das Cookie eingefügte Vorgaben.

    Wo liegt hier der Fehler in meiner Programmierung?
    Zuletzt geändert von Overtone; 24.09.2007, 16:18.

  • #2
    ...und überschreibt die durch das Cookie eingefügten Vorgaben werden diese Eingaben beim Senden ignoriert und die sendmail.php sendet die durch das Cookie eingefügte Vorgaben.
    Ev so
    PHP-Code:
    if(isset($_COOKIE['Name']) && !isset($_POST['Name'])){
    ...

    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Funktioniert nicht. Kann so eigentlich auch nicht stimmen. Das Feld ist ja beim Öffnen des Formulars leer. Also wird immer aus dem Cookie eingelesen und der Zusatz
      PHP-Code:
      && !isset($_POST['Name'])) 
      wird ignoriert, oder?

      Kommentar


      • #4
        Das Feld ist ja beim Öffnen des Formulars leer
        Das schon, aber beim Verschicken des Forms wird dieses Feld mitgeschickt. Du ignorierst dieses Feld weil du immer mit Cookie arbeitest
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Habe es bereits mehrfach getestet. Das Formular sendet in den entsprechenden Feldern immer den Cookie-Inhalt, auch wenn ich die Text-Vorgabe aus dem Cookie überschreibe.

          Kommentar


          • #6
            poste mal den relevanten code zum überschreiben des cookies. wird der ausgeführt? Wird das Cookie geändert?

            Kommentar


            • #7
              1. Eine Cookie haltbarkeit von 10 Minuten ist recht knapp, vor allen Dingen wenn man bedenkt, dass Server und Client in verschiedenen Zeitzonen laufen können und jeweils ihre eigene Uhr haben. Leider klappt die in der Spezifikation vorgesehene Syncronisierung nicht immer so perfekt.

              2. Dir ist schon klar, dass neu gesetzte Cookiedaten erst beim nächsten Request zur Verfühgung stehen?

              3. Ich würde Sessions verwenden um die Formdaten zwischenzulagern.
              Wir werden alle sterben

              Kommentar


              • #8
                Original geschrieben von TobiaZ
                poste mal den relevanten code zum überschreiben des cookies. wird der ausgeführt? Wird das Cookie geändert?
                Hier liegt wohl mein Fehler. Der Code zum Überschreiben des Cookies fehlt wohl. Nachfolgend Formular und Sendmail in Kurzfassung:

                Formular:
                <FORM METHOD="POST" ACTION="sendmail.php" name="formular" onSubmit="return pruefung(this)">

                <INPUT TYPE="text" NAME="Name" value="<?php if (isset($_COOKIE['Name'])) { echo $_COOKIE['Name']; } ?>">

                <INPUT TYPE="Submit" Name="" value="Abschicken">


                Sendmail:
                $Name=$_REQUEST['Name'];

                "Mail senden"

                //Ende Mail

                setcookie("Name", $Name, time()+60*60*24*365);

                Kommentar


                • #9
                  Ohne deine Konfiguration zu kennen, würde ich mal sagen, dass du, dank fehlender Parameterprüfung,Tür und Tor für XSS Attacken öffnest.
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    Zunächst geht es mir halt mal darum, dass die Cookie-Funktion gewährleistet ist. Der Sicherheits-Aspekt wird anschließend und bei Bedarf behandelt.

                    Kommentar


                    • #11
                      Hast du was gegen Sessions?
                      Wir werden alle sterben

                      Kommentar


                      • #12
                        Geht es nicht ohne? Die eingegebenen Daten sollen über Wochen auf den Clients gespeichert bleiben, also natürlich auch, wenn der Browser geschlossen wird. Es müsste doch lediglich bei der Übergabe an die sendmail.php geprüft werden, ob etwas in die entsprechenden Textfelder geschrieben worden ist, und dann eben dieser Inhalt und nicht die Vorgabe aus dem Cookie übergeben werden.
                        Zuletzt geändert von Overtone; 24.09.2007, 15:28.

                        Kommentar


                        • #13
                          benutze beim Mail versenden die $_POST/$_GET und nicht die Cookievariabeln
                          "Nicht jeder Mensch kann und soll Programmieren[...]".

                          Kommentar


                          • #14
                            Danke xkl1986. Du hast mich auf die Lösung gebracht. Ich musste in der sendmail.php
                            PHP-Code:
                            $Name=$_REQUEST['Name']; 
                            ersetzen durch
                            PHP-Code:
                            $Name=$_POST['Name']; 
                            Funktioniert jetzt einwandfrei. Kann mir trotzdem jemand kurz erklären wieso $_REQUEST nicht den gesendeten Feldinhalt sondern den Cookie-Inhalt auswertet?

                            Kommentar


                            • #15
                              http://de2.php.net/manual/de/languag...predefined.php
                              "Nicht jeder Mensch kann und soll Programmieren[...]".

                              Kommentar

                              Lädt...
                              X