index.php und dbase_add_record

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

  • index.php und dbase_add_record

    Hallo Forumianer,

    ich hocke an ner Kopfnuss und komm nicht weiter.

    Folgendes Problem:
    Ich habe als Startseite der Domain ne index.php. in dieser werden
    verschiedene Daten des Aufrufs in ner dBase Datenbank gelogt:

    User-IP, Hostname des Zugangsproviders, wenn Cookie gesetzt auch
    der Name des Clients etc..

    Es wird auch ne Flash Animation eingebunden und abgespielt und der
    Stylesheet aufgerufen.

    Öffne ich die Seite mit IE oder Firefox läuft alles wie gewollt, kein Thema.
    Bei Netscape Navigator (Version 6) sieht die Sache anders aus. Die Seite bricht
    an der Stelle, wo die Daten per 'dbase_add_record' gespeichert werden
    ab. Ohne Fehlermeldung ohne alles. Ich ahb da schon Stunden dran
    gebastelt, ohne Erfolg.
    Meine Lösung war nun, den User_Agent abzufragen und bei
    Netscape keine Speicherung vorzunehmen, dann läufts
    seltsamerweise, ist aber nicht so die Musterlösung, da ich
    die Daten ja für meine Statistik brauche.

    Hier der Codeabschnitt, der den Fehler verursacht:
    PHP-Code:
    // Datenbank öffnen
     
    $DBFPfad="conections.dbf";
     
    $Agent=$_SERVER['HTTP_USER_AGENT'];
     
    $Adr=$_SERVER['REMOTE_ADDR'];
     
    $Hostgethostbyaddr($Adr);
     
    $Port$_SERVER['REMOTE_PORT'];
     
    $sidsession_id();
     
    $Datum=date("d.m.Y");
     
    $datum=explode(".",$Datum);
     if (
    $_SESSION['login']!=){
        if (
    is_readable($DBFPfad)) { // Abfrage ob Datenbank angelegt ist
           
    if (!isset($_SESSION["reg"])){
           
    $_SESSION["reg"]=1;
           
    $Base dbase_open ($DBFPfad,2);
           
    $num = (dbase_numrecords ($Base)) + 1;
           if (!
    stristr($Agent,'Netscape')){
              
    dbase_add_record ($Base, array($num,$Adr,
              
    $Host,$Port,$sid,$datum[0].'.'.$datum[1].'.'.$datum[2],
              
    $datum[2] ,$datum[1] ,$datum[0] ,date("l"),
              
    date("H:i:s"),date("H") ,$Agent." ~ ".$name2));
           }
           
    dbase_close ($Base);
           }
        }
        else {
             
    $_SESSION["reg"]=1;
             
    $def = array(array("ID","C",15),array("IP","C",16),
              array(
    "Client DNS","C",60),   
               array(
    "Port","C",8),array("Session","C",25),
                 array(
    "Date","C",11),array("Year","C",5), 
                 array(
    "Month","C",3),array("Day","C",3),
                 array(
    "WeekDay","C",8),array("Time","C",11),
                 array(
    "Hour","C",3),array("Client","C",100));
             if (!
    dbase_create($DBFPfad,$def)){
                print 
    "Error!";
             }
             else {
                echo 
    "Datenbank angelegt<BR>";
             }
             
    $Base dbase_open ($DBFPfad,2);
             
    $num = (dbase_numrecords ($Base)) + 1;
             echo 
    $num."</H6></TR>"// Anzahl Datensätze in Head anzeigen
             
    dbase_add_record ($Base, array($num,$Adr,
                         
    $Host,$Port,$sid,
                         
    date("d.m.Y") ,date("Y") ,
                         
    date("m") ,date("d") ,
                         
    date("l") ,date("H:i:s"),
                         
    date("H") ,$Agent.' ~ '.$name2));
             
    dbase_close ($Base);
        }

    Die nachfolgenden Seitendaten kommen, wenn ich die
    Netscapesperre rausnehme in dem Browser nicht an (¿?)
    warum auch immer. der Quelltext hört an der dbase_add_record einfach auf.

    Habt Ihr ne Idee wie das kommen mag?
    Zuletzt geändert von oeno; 05.04.2005, 13:34.

  • #2
    Re: index.php und dbase_add_record

    ich würde mal annehmen, dass da beim netscape irgendwas im user agent steht, welches deine query ungültig macht.

    werden die eingefügten daten überhaupt irgendwo escaped/unschädlich gemacht?
    kontrollausgabe UA in so einem falle, wo es "ohne fehler" abbricht?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Danke für die schnelle Antwort.

      Ich hab schon per echo die erzeigten Daten anzeigen lassen,
      hatte keine Auswirkungen auf den Programmablauf.

      EDIT:
      die Ausgabe des Agents ergibt:
      Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3

      Zuletzt geändert von oeno; 05.04.2005, 13:39.

      Kommentar


      • #4
        Ist es möglich das dein DB Feld wo du die Browserkennung einträgst zu kurz ist?

        Kommentar


        • #5
          Das wär natürlich möglich. Als Größenangebe hab ich 60 Zeichen vorgegeben ... mal prüfen:

          123456789012345678901234567890123456789012345678901234567890
          Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3

          ok, der String ist zu lang. Das Verwirrende ist dann aber, das da schon
          ebenso lange Strings rein kamen, die dann einfach nach den 60 Zeichen
          abgeschnitten wurden. Warum hier nicht? Und warum keine Fehlermeldung?

          Kommentar


          • #6
            Ich weiss ja nicht wie die anderen Browserkennungen aussschauen, aber vielleicht killt der die Query auf Grund des ; oder des /

            Kommentar

            Lädt...
            X