daniel: überprüfen ob cookie gesetzt

hallo forumler,

ich dreh noch durch mit diesen sch* -cookies....

ich will checken, ob ein cookie schon gesetzt wurde, und es, falls nicht, setzten.

ich dachte das geht dann folgendermaßen:

<?php
if(isset($sent))
{
 if(!isset($_COOKIE["dvcunited"])) {
  $value="teilgenommen"; setcookie("dvcunited",$value,time()+3628800); }
 else {
     echo "es wurde KEIN Cookie gesetzt/Cookie ist bereits gesetzt!"; }
}
?>

dieses code steht VOR allem html code auf der seite.
die unterscheidung ob gesetzt oder nicht scheint auch zu funktionieren. aber der neue cookie wird _nicht_ gesetzt ???

wenn ich die seite lade, OHNE das der cookie gesetzt ist, müßte es ja eigentlich mit setcookie() gesetzt werden.
stattdessen folgende fehlermeldung:

Warning: Cannot add header information - headers already sent by (output started at /is/htdocs/29799/www.baseball-cheerleading.de/Sites/sonstiges/gewinnspiel_popup.php:4) in /is/htdocs/xxxxxx/www.baseball-cheerleading.de/Sites/sonstiges/gewinnspiel_popup.php on line 7

wiso klappt das denn nicht???
an einfachen setcookie kann es doch nicht so viele prbleme geben???
*schluchz*

grüße und danke für jede hilfe !!!
daniel

  1. hallo daniel,

    wenn ich mir deinen Code anschaue, dann glaube ich es ist doch richtig, du hast den Namen des Cookie als Konstante, versuch es mal ohne Hochkommata. Bei mir klappts wunderbar. Also ich habe ein Formular (html-Dokument) mit 2 Textfeldern - Kennung und Password, dient zur Authentifizierung bei der mysql-DB. Ich will mir jedoch den Namen (also Kennung) des Besuchers merken, daher speichere ich es als Cookie, ansonsten sollte es ziemlich deinen Vorstellungen entsprechen.

    also das hier ist erprobt, musst du nur deinen Vorstellungen anpassen:

    <?php
    //Festlegen der Gültigkeitsdauer
    function valid($stunden) {
             $sekunden = time() + 3600 * $stunden;
             return $sekunden;
    }

    //auslesen der vom Client geschickten Daten
    while(list($key,$value) = each($HTTP_POST_VARS)) {
    //Verbinden mit der Datenbank:
    if ($key == 'kennung') $k = $value;
    if ($key == 'password') $p = $value;
    }

    //Verbindung mit der DB herstellen
    $conn = mysql_connect('localhost', $k, $p);
    // prüfen, ob ok
    if ($conn) {

    //da... prüfen, ob die cookie_name schon gesetzt ist
    if(!isset($_COOKIE[cookie_name])) {
    //wenn nicht, für 2 Stunden Cookie setzen
      setcookie(cookie_name,$k,valid(2));
    } else {
      //beim zweiten Login-Versuch kommt einfach diese Meldung :-)
      echo "es wurde KEIN Cookie gesetzt/Cookie ist bereits gesetzt!";
    }

    //das hier betrifft die DB... nichts mit Cookies zu tun
    if ($ergebnis = mysql_list_dbs()) {
    echo '<select name="st" width="100" style="width:500px;" size="5">';
    while($ds = mysql_fetch_row($ergebnis)) {
        echo '<option>';
        for ($i = 0; $i < mysql_num_fields($ergebnis); $i++) {
            echo $ds[$i];
            if (mysql_num_fields($ergebnis) > 1) echo ' - ';
        }
        echo '</option>';
    }
    echo '<select>';
    } else {
    //daweil nur eine einfache Ausgabe der Fehlermeldung
    echo 'Fehlermeldung: ' .mysql_error();
    };
    };
    ?>

    Wenn du willst kann ich dir das ganze Projekt schicken, wenn du eine mysql-DB hast, kannst du es ausprobieren, ich habe nämlich in der nächsten Datei (in einem anderen Frame) die Begrüßung reingetan.

    <html>
    <head></head>
    <body>

    <table>
    <tr>
    <td>
    <font face="Arial">
    <?php
    echo 'Hallo ' . $HTTP_COOKIE_VARS['cookie_name'];
    ?>
    </font>
    </td>
    </tr>
    </table>

    </body>
    </html>

    also es funktioniert.

    cu kati

    hallo forumler,

    ich dreh noch durch mit diesen sch* -cookies....

    ich will checken, ob ein cookie schon gesetzt wurde, und es, falls nicht, setzten.

    ich dachte das geht dann folgendermaßen:

    <?php
    if(isset($sent))
    {
    if(!isset($_COOKIE["dvcunited"])) {
      $value="teilgenommen"; setcookie("dvcunited",$value,time()+3628800); }
    else {
         echo "es wurde KEIN Cookie gesetzt/Cookie ist bereits gesetzt!"; }
    }
    ?>

    dieses code steht VOR allem html code auf der seite.
    die unterscheidung ob gesetzt oder nicht scheint auch zu funktionieren. aber der neue cookie wird _nicht_ gesetzt ???

    wenn ich die seite lade, OHNE das der cookie gesetzt ist, müßte es ja eigentlich mit setcookie() gesetzt werden.
    stattdessen folgende fehlermeldung:

    Warning: Cannot add header information - headers already sent by (output started at /is/htdocs/29799/www.baseball-cheerleading.de/Sites/sonstiges/gewinnspiel_popup.php:4) in /is/htdocs/xxxxxx/www.baseball-cheerleading.de/Sites/sonstiges/gewinnspiel_popup.php on line 7

    wiso klappt das denn nicht???
    an einfachen setcookie kann es doch nicht so viele prbleme geben???
    *schluchz*

    grüße und danke für jede hilfe !!!
    daniel

  2. Aloha!

    Warning: Cannot add header information - headers already sent by (output started at /is/htdocs/29799/www.baseball-cheerleading.de/Sites/sonstiges/gewinnspiel_popup.php:4) in /is/htdocs/xxxxxx/www.baseball-cheerleading.de/Sites/sonstiges/gewinnspiel_popup.php on line 7

    wiso klappt das denn nicht???
    an einfachen setcookie kann es doch nicht so viele prbleme geben???
    *schluchz*

    Es steht da, warum es nicht klappt: Irgendetwas im Skript "Sites/sonstiges/gewinnspiel_popup.php", und dort in Zeile 7 generiert eine Ausgabe von Seitentext, welche es unmöglich macht, hinterher noch HTTP-Headerinformationen (wie z.B. ein Cookie) hinzuzufügen.

    Potentielle Kandidaten für sowas: Leerzeichen, Leerzeilen oder Fehlermeldungen von anderen Befehlen.

    Suche nach irgendwas, was Ausgabe produziert, und entferne/deaktiviere es.

    - Sven Rautenberg

    1. Sven hat recht, du musst vorm Cookiesetzen jede Ausgabe meiden - egal was, auch leerzeichen. *katihatdencodenetgenaugelesen* *schäm*

      cu kati

      Aloha!

      Warning: Cannot add header information - headers already sent by (output started at /is/htdocs/29799/www.baseball-cheerleading.de/Sites/sonstiges/gewinnspiel_popup.php:4) in /is/htdocs/xxxxxx/www.baseball-cheerleading.de/Sites/sonstiges/gewinnspiel_popup.php on line 7

      wiso klappt das denn nicht???
      an einfachen setcookie kann es doch nicht so viele prbleme geben???
      *schluchz*

      Es steht da, warum es nicht klappt: Irgendetwas im Skript "Sites/sonstiges/gewinnspiel_popup.php", und dort in Zeile 7 generiert eine Ausgabe von Seitentext, welche es unmöglich macht, hinterher noch HTTP-Headerinformationen (wie z.B. ein Cookie) hinzuzufügen.

      Potentielle Kandidaten für sowas: Leerzeichen, Leerzeilen oder Fehlermeldungen von anderen Befehlen.

      Suche nach irgendwas, was Ausgabe produziert, und entferne/deaktiviere es.

      • Sven Rautenberg