ein paar Fehlermeldungen seit php-version 4.1.0 und neuer...

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

  • ein paar Fehlermeldungen seit php-version 4.1.0 und neuer...

    mein script sieht wie folgt aus und ich habe keine Ahnung warum ich da aufeinmal ein paar Fehlermeldungen bekomme.
    Bis jetzt hat das script einwandfrei gefuntzt.

    code (die errors hab ich fett gemacht):
    <?php
    $database= "xxx";
    $sqlhost= "localhost";
    $sqluser= "yyy";
    $sqlpass= "zzz";

    $verbindung = mysql_connect ( $sqlhost, $sqluser, $sqlpass);
    if (!$verbindung) {
    echo "Keine Verbindung mit SQLDB möglich!\n";
    exit;
    }
    mysql_select_db($database);

    // Cookiefunktionen
    function setCArray($name,$cookieArray,$expires) {
    // Cookiename, Array mit den im Cookie zu speichernden Daten und Verfallsdatum übergeben
    $cookieString=implode("||",$cookieArray);
    setcookie($name,$cookieString,$expires); //Warning: Cannot add header information - headers already sent => habe aber keinen html-code davor!!!
    }

    function getCString($cookieString) { // Cookiestring übergeben und als Array zurückgeben
    return explode("||",$cookieString);
    }

    // Log-Table-Säuberung
    function ipcheck_cleanup() {
    global $timeout,$curr_gmt_time;
    global $tbl_ipcheck,$tbl_logs;
    $timeout = time() - 43200; //Verfallzeit: 12 Stunden
    $sql = "SELECT ID,TIMEss "
    . "FROM counter WHERE TIMEss < ".timeout; //Warning: Use of undefined constant timeout - assumed 'timeout'

    $res = mysql_query($sql);
    while ($row = @mysql_fetch_array($res)) {
    $del_sql = "DELETE FROM counter WHERE ID='".$row[0]."'";
    $del_res = mysql_query($del_sql);
    } //end while
    } //end function


    // Startinitialisierung
    $cookievars=getCString($CAITS); //Warning: Undefined variable: CAITS

    $sessionID=$cookievars[1]; //Warning: Undefined offset: 1

    $ip=$cookievars[2]; //Warning: Undefined offset: 2

    ipcheck_cleanup(); // alte Session-IDs plätten

    // Sessionmanagement
    if (!$CAITS) { // Warning: Undefined variable: CAITS
    $ip=$REMOTE_ADDR;
    mt_srand((double)microtime()*1000000);
    $sessionID=md5(ereg_replace(".","",$ip)+mt_rand(100000,999999));
    $cookievars[]=$sessionID;
    $cookievars[]=$ip;
    setCArray("CAITS",$cookievars,time()+43200); // Verfallsdatum 12 Stunden (=)43200)!! 2592000 = 30 Tage
    }
    ?>


    Was passt da nicht??
    $PHP resource 4ever$

  • #2
    Ich nehme an die Reihenfolge der Fehler ist

    o Warning: Undefined variable: CAITS
    o Warning: Undefined offset: 1
    o Warning: Undefined offset: 2
    o Use of undefined constant timeout - assumed 'timeout'
    o Warning: Cannot add header information - headers already sent => habe aber keinen html-code davor!!!

    Wenn dem so ist, so hat sich das mit dem Header erledigt, wurden doch zuvor die Warnings ausgegeben.

    Zur Konstanten "timeout", soll es eine solche sein? Wenn ja wo ist sie definiert?

    Oder sollte der Select nicht wie folgt aussehen, zumindest gibt es eine global $timeout Definition in der Funktion.
    PHP-Code:
    $sql "SELECT ID,TIMEss FROM counter WHERE TIMEss < $timeout"
    Von wo beziehst Du eigentlich folgernde Variablen?
    global $timeout,$curr_gmt_time;
    global $tbl_ipcheck,$tbl_logs;

    Ist das Ding da das Du gepostet hast irgendein Include-File?

    Kommentar


    • #3
      Deklariere und initialisiere alle Variablen oder schalte in deiner .php alle Warnings aus:

      aus
      > error_reporting = E_ALL
      machst du
      > error_reporting = E_ALL & ~E_NOTICE
      [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
      [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
      [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

      © Harald Schmidt

      Kommentar


      • #4
        es ist kein include-file.
        es ist das original script.

        verstehe aber noch immer nicht ganz was ich jetzt ändern muss ausser dem sql-statement.


        p.s.: schön wieder was von dir zu hören, hand!
        $PHP resource 4ever$

        Kommentar


        • #5
          PHP wird immer sensibler, was die Übergabe und Definition von Variablen betrifft. Wenn man sauber programmiert betrifft eines das weniger.

          Mach es am Besten so, wei es Troublegum vorgeschlagen hat. Schalte die Warnings weg.
          http://www.php.net/manual/de/functio...-reporting.php

          Nochwas Dein Skript hat noch mehr Leichen im Keller

          Ich glaube die globals in der Funktion kannst Du entfernen, wenn Du sie dort nicht brauchst oder brauchen wirst. Das ganze wird dann etwas übersichtlicher.

          Und ich glaub ja auch nicht, daß das Skript aufgrund des SQL-Statements woanders astrein gelaufen ist.

          Mir ist Deine Signatur schon abgegeangen

          Kommentar


          • #6
            ok, hand. mal was ganz anderes:
            du hast sicherlich schon gecheckt, was ich mit dem script erreichen will.

            wenn nicht, dann erklär ich's kurz:
            der code stammt von meiner leftframe.php-datei die neben dem html-code noch 'nen counter beinhaltet.

            mit den cookies will ich überprüfen, ob der user schon mal da war (schreib ich in die tabelle counter rein). wenn ja, dann soll der counter nicht weitergezählt werden. ansonsten schon.
            gleichzeitig soll der counter aber nie weiterzählen wenn der user ein reload der website durchführt.

            => viell. hast du ein besseres script für mich. hab mir das aus mehreren Tipps zusammengebastelt.
            kann dir die leftframe.php auch mailen wenn du willst. is nicht so schlimm zu verstehen.
            => viell. kannst du mir in diesem zusammenhang auch gleich erklären wie ich eine "User online"-Anzeige einbaue.

            zur lauffähigkeit:
            ist auf meinem freien lycos account einwandfrei gelaufen. und vorher bei meinem anderen free account anbieter (freedom2surf) ebenfalls.
            jetzt hab ich's woanders laufen und nix geht mehr.

            schön, dass dir meine signatur gefällt
            Zuletzt geändert von Metallica; 26.04.2002, 23:03.
            $PHP resource 4ever$

            Kommentar


            • #7
              Wirklich? Mit dem SQL String?
              $sql = "SELECT ID,TIMEss "
              . "FROM counter WHERE TIMEss < ".timeout;

              Aber is ja wurscht.

              Funzt das Skript nachdem Du die Warnings abgeschaltet hast noch immer nicht?

              Aber da hab ich eine Überraschung betreffend User Online:
              http://www.php-resource.de/forum/sho...?threadid=3080

              Kommentar


              • #8
                das mit den warnings muss ich noch probieren. is aber auch nicht das gelbe vom Ei.
                hab meinen neuen webspace von Sky bekommen. ich glaube, der hat die warnings auf seinen server fix eingestellt und wird nicht sehr erfreut sein wenn ich die codemäßig abstelle wenn das überhaupt geht.

                das user-online script dass ich damals postete, hab ich durch zufall über google gefunden.
                was ich jetzt wissen wollte ist, ob man mein jetztiges script um eine user-online-anzeige erweitern kann nachdem ich eh schon die komplette funktionalität wegen dem counter drinnen habe.

                p.s.: schalte ich die warnings so aus??:
                error_reporting = E_ALL & ~E_NOTICE
                $PHP resource 4ever$

                Kommentar


                • #9
                  Hast Du Dir den Link http://www.php.net/manual/de/functio...-reporting.php nicht angesehen?
                  Das steht einerseits wie man error_reporting umgeht, andererseits hat Troublegum es ohnehin schon geschrieben.
                  Desweiteren, wenn Du die Warnings nicht abdrehen willst, was ansich ganz vernünftig ist ,wird erklärt, wie man ansonsten richtig mit zuvor undefinierten Variablen umgeht:
                  Code:
                  The E_NOTICE error reporting level reports the use of undefined variables
                  as an error.
                  
                  For example:
                  error_level (E_ALL); # Set error reporting to highest level
                  [b]if ($foo)            # This will generate an error
                    print "bar";       # because $foo is not defined[/b]
                  
                  To avoid this behavior, use isset to test if the given
                  variable has been defined.
                  
                  For example:
                  error_level (E_ALL);
                  [b]if (isset ($foo))
                      print "bar";[/b]
                  Demnach könnte Dein Code so in etwa aussehen. Hab mich mit dem Skript nicht intensiv auseinendergesetzt, deshalb weiß ich nicht ob der Aufruf ipcheck_cleanup(); in den If heineingehört oder außerhalb stehen muß. Du kennst die Logik ja besser:
                  PHP-Code:
                  // Startinitialisierung 
                  if (isset ($CAITS)) {
                      
                  $cookievars=getCString($CAITS); 
                      
                  $sessionID=$cookievars[1];
                      
                  $ip=$cookievars[2];
                      
                  ipcheck_cleanup();
                  } else {
                      
                  // Sessionmanagement 
                      
                  $ip=$REMOTE_ADDR
                      
                  mt_srand((double)microtime()*1000000); 
                      
                  $sessionID=md5(ereg_replace(".","",$ip)+mt_rand(100000,999999)); 
                      
                  $cookievars[]=$sessionID
                      
                  $cookievars[]=$ip
                      
                  setCArray("CAITS",$cookievars,time()+43200); // Verfallsdatum 12 Stunden (=)43200)!! 2592000 = 30 Tage 

                  Warnings sind nur Warnungen, die dem Entwickler auf Sachen hinweisen, die unter Umständen zu Problemen führen könnten und ihn eben unterstützen. Will man keine Warnungen so kann man sie ja abdrehen.

                  Wenn Du
                  error_reporting = E_ALL & ~E_NOTICE;
                  probiert hättest, hätte sich diese Frage, ob man das syntaktisch so angibt, erübrigt.

                  Kommentar


                  • #10
                    ok. hab den code jetzt so angepaßt wie du es mir geschrieben hast. jetzt sind diese warnings mal weg.

                    das einzige warning was er mir jetzt noch ausgibt ist bei diesem befehl:

                    $sql = "SELECT ID,TIMEss FROM counter WHERE TIMEss < ".timeout;


                    =>Warning: Undefined offset: 2 in /home/metallica/www/LeftFrame.php on line 45
                    Warning: Use of undefined constant timeout - assumed 'timeout'


                    hmmm, ???
                    $PHP resource 4ever$

                    Kommentar

                    Lädt...
                    X