Cookie Sperrung

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

  • Cookie Sperrung

    Hallo, habe ein kleines Probelm:

    Warum funktioniert diese Cookie-Sperre nicht?

    PHP-Code:
    <?
    if(! $ipsperre) 

    $dateiname = "guestbook/entries.txt";

    $datei = fopen ($dateiname, "a");
    if($datei) {
        //fputs($datei, $datensatz);
        fputs($datei, $datensatz."\r\n");
        fclose($datei);
    }


    if($mail == "Ja")
    {


    mail("$mastermail", "Neuer Gästebuch Eintrag", "Hallo,\r\n$teilnehmername hat bei Ihrem Gästebuch einen neuen Eintrag verfasst.\r\n\r\nFolgendes hat er hinzugefügt:\r\n
    Name: $teilnehmername\r\n
    E-Mail: $email\r\n
    Homepage: $homepage\r\n
    IP: $ip\r\n
    Host: $host\r\n
    \r\n
    Mitteilung: \r
    <html>$text</html>
    ");
    }

    sleep(1);

    echo "<html>";
    echo "<meta http-equiv=refresh content=3;url=start.php?site=guestbook&page=1>";
    echo "<h1>Vielen Dank für den Eintrag in unserem Gästebuch...</h1>";
    echo "Falls Du nicht in wenigen Sekunden weitergeleitet wirst, dann klicke bitte <a href=\"start.php?site=guestbook&page=1\" class=link>hier</a>";
    echo "</html>";
    }

    $ip = getenv ("REMOTE_ADDR"); 
    //Zeile 387
    setcookie("ipsperre", "$ip", time() + 4 * 3600);  


    else 

     echo "Sorry, man darf nur einen Eintrag innerhalb von 4 Stunden machen.";

    ?>

    Fehlermeldung:
    Warning: Cannot modify header information - headers already sent by (output started at /home/webmaste/public_html/band/start.php:6) in /home/webmaste/public_html/band/start.php on line 388


    Gruss adihas

  • #2
    Re: Cookie Sperrung

    Original geschrieben von adihas
    Fehlermeldung:
    Warning: Cannot modify header information - headers already sent by (output started at /home/webmaste/public_html/band/start.php:6) in /home/webmaste/public_html/band/start.php on line 388
    wie schon die fehlermeldung sagt!

    siehe auch manual.
    http://de.php.net/manual/de/function.setcookie.php

    setcookie() definiert ein mit den HTTP Header-Informationen zu übertragendes Cookie. [color=red]Wie andere Header auch, müssen Cookies vor irgendwelchen anderen Ausgaben Ihres Skriptes gesendet werden (dies ist eine Einschränkung des Protokolls). Sie müssen deshalb solche Funktionsaufrufe vor irgendwelchen Ausgaben, inklusive <html>- oder <head>-Tags sowie irgendwelcher Whitespaces tätigen.[/color] Erfolgte bereits vor dem Aufruf dieser Funktion eine Ausgabe erfolgt sein, gibt setcookie() scheitern und FALSE zurückgeben. War setcookie() erfolgreich, wird TRUE zurückgegeben. Dies sagt jedoch nichts darüber aus, ob der Benutzer das Cookie auch akzeptiert hat.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Muss ich dass denn so machen:?

      PHP-Code:
      <?
      if(! $ipsperre) 

      $dateiname = "guestbook/entries.txt";

      $datei = fopen ($dateiname, "a");
      if($datei) {
          //fputs($datei, $datensatz);
          fputs($datei, $datensatz."\r\n");
          fclose($datei);
      }


      if($mail == "Ja")
      {


      mail("$mastermail", "Neuer Gästebuch Eintrag", "Hallo,\r\n$teilnehmername hat bei Ihrem Gästebuch einen neuen Eintrag verfasst.\r\n\r\nFolgendes hat er hinzugefügt:\r\n
      Name: $teilnehmername\r\n
      E-Mail: $email\r\n
      Homepage: $homepage\r\n
      IP: $ip\r\n
      Host: $host\r\n
      \r\n
      Mitteilung: \r
      <html>$text</html>
      ");
      }

      sleep(1);
      $ip = getenv ("REMOTE_ADDR"); 

      setcookie("ipsperre", "$ip", time() + 4 * 3600);  
      echo "setcookie(\"ipsperre\", \"$ip\", time() + 4 * 3600)";
      echo "<html>";
      echo "<meta http-equiv=refresh content=3;url=start.php?site=guestbook&page=1>";
      echo "<h1>Vielen Dank für den Eintrag in unserem Gästebuch...</h1>";
      echo "Falls Du nicht in wenigen Sekunden weitergeleitet wirst, dann klicke bitte <a href=\"start.php?site=guestbook&page=1\" class=link>hier</a>";
      echo "</html>";
      }


      else 
      {

      ?>

      Wenn ja, kommt leider immernoch eine Fehlermeldung.

      Kommentar


      • #4
        so in der art. BEVOR die erste ausgabe gemacht wird, muss der cookie gesetzt werden.

        Original geschrieben von adihas
        Wenn ja, kommt leider immernoch eine Fehlermeldung.
        ist das noch die gleiche meldung, oder eine andere. ich konnte den abschnitt in deinem post nicht ganz lesen. ich glaube mein monitor ist defekt...
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Die Meldung ist immernoch gleich, nur haben sich logischerweise die Zeilennummer geändert.
          Es geht nicht, ich weiss nicht wie ich es machen soll...

          Stimmt der Code so nicht:
          PHP-Code:
          <?
          if(! $ipsperre) 

          $dateiname = "guestbook/entries.txt";

          $datei = fopen ($dateiname, "a");
          if($datei) {
              //fputs($datei, $datensatz);
              fputs($datei, $datensatz."\r\n");
              fclose($datei);
          }


          if($mail == "Ja")
          {


          mail("$mastermail", "Neuer Gästebuch Eintrag", "Hallo,\r\n$teilnehmername hat bei Ihrem Gästebuch einen neuen Eintrag verfasst.\r\n\r\nFolgendes hat er hinzugefügt:\r\n
          Name: $teilnehmername\r\n
          E-Mail: $email\r\n
          Homepage: $homepage\r\n
          IP: $ip\r\n
          Host: $host\r\n
          \r\n
          Mitteilung: \r
          <html>$text</html>
          ");
          }

          sleep(1);
          $ip = getenv ("REMOTE_ADDR"); 

          echo "setcookie(\"ipsperre\", \"$ip\", time() + 4 * 3600)";
          echo "<html>";
          echo "<meta http-equiv=refresh content=3;url=start.php?site=guestbook&page=1>";
          echo "<h1>Vielen Dank für den Eintrag in unserem Gästebuch...</h1>";
          echo "Falls Du nicht in wenigen Sekunden weitergeleitet wirst, dann klicke bitte <a href=\"start.php?site=guestbook&page=1\" class=link>hier</a>";
          echo "</html>";
          }

          ?>

          Kommentar


          • #6
            was bringt denn das?
            PHP-Code:
            echo "setcookie(\"ipsperre\", \"$ip\", time() + 4 * 3600)"
            setze das setcookie() noch weiter an den anfang.

            hast du vor dem <?php am anfang der datei auch keinerlei ausgaben?
            ein leerschritt davor ist auch eine ausgabe
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Sorry, weiss auch nicht was ich mit dem wollte ...ich probiere es mal...

              Kommentar


              • #8
                Kann ich noch weiter rauf als ich jetzt schon bin?

                Wenn ich den befehl noch weiter oben einsetze, dann erstellt es ja gleich beim aufruf der Seite ein Cookie...Ich will aber, dass es erst beim Speichern eins setzt.

                PHP-Code:
                <?
                if(! $ipsperre) 
                {
                $ip = getenv ("REMOTE_ADDR");
                setcookie("ipsperre", "$ip", time() + 4 * 3600);
                $dateiname = "guestbook/entries.txt";

                $datei = fopen ($dateiname, "a");
                if($datei) {
                    //fputs($datei, $datensatz);
                    fputs($datei, $datensatz."\r\n");
                    fclose($datei);
                }


                if($mail == "Ja")
                {


                mail("$mastermail", "Neuer Gästebuch Eintrag", "Hallo,\r\n$teilnehmername hat bei Ihrem Gästebuch einen neuen Eintrag verfasst.\r\n\r\nFolgendes hat er hinzugefügt:\r\n
                Name: $teilnehmername\r\n
                E-Mail: $email\r\n
                Homepage: $homepage\r\n
                IP: $ip\r\n
                Host: $host\r\n
                \r\n
                Mitteilung: \r
                <html>$text</html>
                ");
                }

                sleep(1); 

                echo "<html>";
                echo "<meta http-equiv=refresh content=3;url=start.php?site=guestbook&page=1>";
                echo "<h1>Vielen Dank für den Eintrag in unserem Gästebuch...</h1>";
                echo "Falls Du nicht in wenigen Sekunden weitergeleitet wirst, dann klicke bitte <a href=\"start.php?site=guestbook&page=1\" class=link>hier</a>";
                echo "</html>";
                }

                ?>

                Kommentar


                • #9
                  Original geschrieben von adihas
                  Kann ich noch weiter rauf als ich jetzt schon bin?
                  das sollte schon reichen, um auf nummer sicher zu gehen, dass vorher keine ausgabe sind.

                  aber das
                  PHP-Code:
                  if(! $ipsperre)] 
                  solltest du in das
                  PHP-Code:
                  if(!$ipsperre)] 
                  ändern. oder geht das auch mit dem leerschritt?

                  ist der fehler jetzt eigentlich weg. mein monitor hatte da wohl einen fleck. kannst du das nochmal schreiben.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Ja, mit einem Leerschlag würde es auch gehen (nach meinem Buch).
                    Aber leider war das nicht der Fehler, es geht immernoch nicht.

                    Hier findest du mal die Datei mit dem KOMPLETTEN Code:


                    zur Datei

                    Kommentar


                    • #11
                      hier sind noch ein paar VIELE ausgabe davor !!!!

                      Code:
                      .
                      .
                      .
                      <p align="left"><b><font color="#FFFFFF" size="4">Guestbook</font></b></p>
                      <script src="guestbook/function.js" 
                      type="text/javascript"></script>
                      </head>
                      .
                      .
                      .
                      usw.

                      [color=red]das muss alles NACH DEM setcookie() kommen [/color]
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Setzt es dann das Cookie nicht gleich beim Aufruf der Seite?

                        Kommentar


                        • #13
                          jepp. aber nur, wenn du setcookie() verwendest.
                          und das muss vor irgendwelchen ausgabe angewendet werden.
                          sonst kann das cookie ja nicht am anfang gesendet werden....
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            Dann geht das nicht mit IP sperre (Cookie Sperre) ?

                            Kommentar


                            • #15
                              warum sollte das nicht gehen?

                              wenn du ein cookie setzen willst,
                              [color=red]MUSS DU ES VOR ALLEN ANDEREN AUSGABEN MACHEN.[/color]
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X