peace2 Skrevet 24. mai 2007 Del Skrevet 24. mai 2007 (endret) Hei , jeg trenger et overvåking-script som ikke er så avansert men noe som gjør bedre jobb enn dette scriptet (det er den jeg bruker nå) : <?php if($fp = @fopen('log.php', 'a')) { fwrite($fp, strftime(' <br /><hr /> <span style="font-weight: bold;"> Logg for : </span><span style="color: rgb(255, 102, 0);">hovedside</span> : <span style="font-weight: bold;"> Dato: </span>%d.%m.%Y <span style="font-weight: bold;"> Klokka </span> %H:%M:%S').' <span style="font-weight: bold;">IP adresse </span>'.$_SERVER['REMOTE_ADDR']); fclose($fp); } ?> Negative siden med den er at samme ip adressen blir loggført hvert eneste gang man går inn på siden, det gjør at loggfilen blir veldig fort stor og vansklig å lese av (hørte at jeg måtte bruke database, men jeg har lite kunnskap når det gjelder php nog databaser ) Det jeg tenkte er: Hvis noen har /om det er mulig å lage et script (feks. ut fra min gamle) som ikke registrer samme ip-adresse flere ganger ,men bare oppdatere dato og klokkeslett istedet. (det er det beste jeg kunne tenke meg, men hvis noen har andre tips/ metoder så er det bare å poste dem ) Edit: * Serveren er http://home.no.net. Endret 24. mai 2007 av xox Lenke til kommentar
Gjest Slettet+142 Skrevet 24. mai 2007 Del Skrevet 24. mai 2007 (endret) Går det greit med et skript som baserer seg på MySQL database? Ser du nevner at du ikke har så bra kunnskap med dette, men har du tilgang til MySQL database? [edit] Ellers syntes jeg skriptet ditt er laget utrolig unødvenig. My enklere med en flatfil som logger ip, dato og posisjon[?]... Endret 24. mai 2007 av Slettet+142 Lenke til kommentar
peace2 Skrevet 24. mai 2007 Forfatter Del Skrevet 24. mai 2007 Går det greit med et skript som baserer seg på MySQL database?Ser du nevner at du ikke har så bra kunnskap med dette, men har du tilgang til MySQL database? 8691402[/snapback] Jeg er litt usikker der ,men serveren jeg bruker er hos http://home.no.net/ Lenke til kommentar
peace2 Skrevet 24. mai 2007 Forfatter Del Skrevet 24. mai 2007 Går det greit med et skript som baserer seg på MySQL database?Ser du nevner at du ikke har så bra kunnskap med dette, men har du tilgang til MySQL database? [edit] Ellers syntes jeg skriptet ditt er laget utrolig unødvenig. My enklere med en flatfil som logger ip, dato og posisjon[?]... 8691402[/snapback] Jeg vil bare ha noe som kan gi meg litt bedre oversikt enn det jeg bruker nå , det er samme for meg åssen skriptet ser ut,, ganske enig med deg der at det er en "søppel" script ! Vil ha noe som gir bedre oversikt Lenke til kommentar
Gjest Slettet+142 Skrevet 24. mai 2007 Del Skrevet 24. mai 2007 (endret) Har laget en kode som baserer seg på en flatfil. [EDIT] Har fikset koden nå. Endret 24. mai 2007 av Slettet+142 Lenke til kommentar
Gjest Slettet+142 Skrevet 24. mai 2007 Del Skrevet 24. mai 2007 (endret) UTESTET Skrive til filen, "Overvåkeren": <?php define("SKILLE", "|-_-.-_-|"); $found = false; $fil = file("logg.txt"); foreach($fil as $nr => $linje){ $l = explode(SKILLE, $linje); if($l[3]==$_SERVER['REMOTE_ADDR']){ $found = true; $foran = array(); foreach($fil as $id=>$val){ if($id==$nr) continue; $foran[$id]= $val; } $nylinje = $l[0].SKILLE.date("d.m.Y").SKILLE.date("H:i:s").SKILLE.$l[3]; $foran[$nr] = $nylinje; $fp = fopen("logg.txt", "w"); fwrite($fp, implode("\n", $foran)); fclose($fp); unset($fp, $foran, $nylinje, $id, $nr, $val); break; } } if($fp = @fopen('logg.txt', 'a') && !$found) { $streng = ''; $streng .= 'hovedside'; // Logg For $streng .= SKILLE; $streng .= date("d.m.Y"); // Dato $streng .= SKILLE; $streng .= date("H:i:s"); // Klokkeslett $streng .= SKILLE; $streng .= $_SERVER['REMOTE_ADDR']; // IP $streng .= "\n"; fwrite($fp, $streng); fclose($fp); } ?> Lese filen: <?php define("FILSKILLE", "|-_-.-_-|"); $fil = file("logg.txt"); $antall = count($fil); echo '<table>'."\n"; echo '<tr><td><b>Logg for:</b></td><td><b>Dato</b></td><td><b>Klokkeslett</b></td><td><b>IP Adresse</b></td></tr>'."\n"; foreach($fil as $linje){ $line = explode(FILSKILLE, $linje); echo '<tr><td>'.$line[0].'</td><td>'.$line[1].'</td><td>'.$line[2].'</td><td>'.$line[3].'</td></tr>'; echo "\n"; } echo '</table>'; ?> [Edit1] La til <?php i Kode 1. [/Edit1] Endret 24. mai 2007 av Slettet+142 Lenke til kommentar
peace2 Skrevet 24. mai 2007 Forfatter Del Skrevet 24. mai 2007 UTESTET Skrive til filen, "Overvåkeren": define("SKILLE", "|-_-.-_-|"); $found = false; $fil = file("logg.txt"); foreach($fil as $nr => $linje){ $l = explode(SKILLE, $linje); if($l[3]==$_SERVER['REMOTE_ADDR']){ $found = true; $foran = array(); foreach($fil as $id=>$val){ if($id==$nr) continue; $foran[$id]= $val; } $nylinje = $l[0].SKILLE.date("d.m.Y").SKILLE.date("H:i:s").SKILLE.$l[3]; $foran[$nr] = $nylinje; $fp = fopen("logg.txt", "w"); fwrite($fp, implode("\n", $foran)); fclose($fp); unset($fp, $foran, $nylinje, $id, $nr, $val); break; } } if($fp = @fopen('logg.txt', 'a') && !$found) { $streng = ''; $streng .= 'hovedside'; // Logg For $streng .= SKILLE; $streng .= date("d.m.Y"); // Dato $streng .= SKILLE; $streng .= date("H:i:s"); // Klokkeslett $streng .= SKILLE; $streng .= $_SERVER['REMOTE_ADDR']; // IP $streng .= "\n"; fwrite($fp, $streng); fclose($fp); } ?> Lese filen: <?php define("FILSKILLE", "|-_-.-_-|"); $fil = file("logg.txt"); $antall = count($fil); echo '<table>'."\n"; echo '<tr><td><b>Logg for:</b></td><td><b>Dato</b></td><td><b>Klokkeslett</b></td><td><b>IP Adresse</b></td></tr>'."\n"; foreach($fil as $linje){ $line = explode(FILSKILLE, $linje); echo '<tr><td>'.$line[0].'</td><td>'.$line[1].'</td><td>'.$line[2].'</td><td>'.$line[3].'</td></tr>'; echo "\n"; } echo '</table>'; ?> 8691784[/snapback] takker! , skal prøve den ut nå Lenke til kommentar
peace2 Skrevet 24. mai 2007 Forfatter Del Skrevet 24. mai 2007 (endret) Nå har jeg prøvd å sette dette opp men lurer på hva filene skal hete? skal kode nr 1 være i hovedsidefilen? "index.php" feks. (eller der jeg vil overvåke) men hva med andre koden ? jeg kan ikke ha den i "logg.txt" fila, for da vil den ikke fungere Edit: Mangler kode 1 tegnet "<?php " eller? kan Lite php og db som sagt Endret 24. mai 2007 av xox Lenke til kommentar
Gjest Slettet+142 Skrevet 24. mai 2007 Del Skrevet 24. mai 2007 Kode 1 mangler <?php, ja :/ Virker som om du har skjønt hvor Kode 1 skal. Kode 2 kan du bare legge inn i en fil f.eksleslogg.php. Det eneste Kode2 gjør, er å vise loggen på en litt mer brukervennlig måte Lenke til kommentar
peace2 Skrevet 24. mai 2007 Forfatter Del Skrevet 24. mai 2007 Kode 1 mangler <?php, ja :/ Virker som om du har skjønt hvor Kode 1 skal. Kode 2 kan du bare legge inn i en fil f.eksleslogg.php. Det eneste Kode2 gjør, er å vise loggen på en litt mer brukervennlig måte 8692327[/snapback] åh , da har jeg skjønt det nå ^^ Lenke til kommentar
peace2 Skrevet 24. mai 2007 Forfatter Del Skrevet 24. mai 2007 (endret) Test ressulat Overvåkingsfilen: Warning: fwrite(): supplied argument is not a valid stream resource in c:\easyphp1-8\www\sibbiphp\index2.php on line 73 Warning: fclose(): supplied argument is not a valid stream resource in c:\easyphp1-8\www\sibbiphp\index2.php on line 74 Linjene 73 og 74 er: fwrite($fp, $streng); fclose($fp); ingenting ble skrevet til log.txt rettigheter er ok Endret 24. mai 2007 av xox Lenke til kommentar
Gjest Slettet+142 Skrevet 24. mai 2007 Del Skrevet 24. mai 2007 Hmm. Rart :/ Prøv med denne koden da: <?php define("SKILLE", "|-_-.-_-|"); $found = false; $fil = file("logg.txt"); foreach($fil as $nr => $linje){ $l = explode(SKILLE, $linje); if($l[3]==$_SERVER['REMOTE_ADDR']){ $found = true; $foran = array(); foreach($fil as $id=>$val){ if($id==$nr) continue; $foran[$id]= $val; } $nylinje = $l[0].SKILLE.date("d.m.Y").SKILLE.date("H:i:s").SKILLE.$l[3]; $foran[$nr] = $nylinje; $fp = fopen("logg.txt", "w"); fwrite($fp, implode("\n", $foran)); fclose($fp); unset($fp, $foran, $nylinje, $id, $nr, $val); break; } } if(($fp = @fopen('logg.txt', 'a')) && !$found) { $streng = ''; $streng .= 'hovedside'; // Logg For $streng .= SKILLE; $streng .= date("d.m.Y"); // Dato $streng .= SKILLE; $streng .= date("H:i:s"); // Klokkeslett $streng .= SKILLE; $streng .= $_SERVER['REMOTE_ADDR']; // IP $streng .= "\n"; fwrite($fp, $streng); fclose($fp); } ?> Lenke til kommentar
peace2 Skrevet 24. mai 2007 Forfatter Del Skrevet 24. mai 2007 (endret) nå funka det bra:D Men en ting ,se på bildet under. Hver gang jeg flasher index.php så skrives ip adressen på nytt. Er det lett å få sperra det? sånn at enten det blir tidsbestemt ( feks. samme ip kan logges max en gang per time) eller at det blir engangs IP med bare dato /kl slett som oppdateres. (hindre spam) lurer på om det blir vansklig å lage det slikt? takk for hjelpen Endret 24. mai 2007 av xox Lenke til kommentar
Gjest Slettet+142 Skrevet 24. mai 2007 Del Skrevet 24. mai 2007 Oi. Jeg trodde jeg lagde skriptet slik at samme ip ikke skulle lagres flere ganger, men oppdatere dato/kl jeg :/ *Fikse, Fikse* Lenke til kommentar
peace2 Skrevet 24. mai 2007 Forfatter Del Skrevet 24. mai 2007 (endret) Oi. Jeg trodde jeg lagde skriptet slik at samme ip ikke skulle lagres flere ganger, men oppdatere dato/kl jeg :/ *Fikse, Fikse* 8693026[/snapback] oi da :/, men det var en god idee å lagre ip-en kun en gang! for håpe at det funker Endret 24. mai 2007 av xox Lenke til kommentar
Gjest Slettet+142 Skrevet 24. mai 2007 Del Skrevet 24. mai 2007 (endret) Slik, da håper jeg at jeg har klart å fikse det <?php define("SKILLE", "|-_-.-_-|"); if(!is_file("logg.txt")){ $fp = fopen("logg.txt", "w"); fwrite($fp, ""); fclose($fp); } $found = false; $fil = file("logg.txt"); foreach($fil as $nr => $linje){ $l = explode(SKILLE, $linje); $ip = ""; $ip = $l[3]; $ip2 = ""; $ip2 = $_SERVER['REMOTE_ADDR']; if($ip == $ip2){ $found = true; //echo "IP Allerede i logg"; $foran = array(); foreach($fil as $id=>$val){ if($id==$nr) continue; $foran[$id]= $val; } $nylinje = $l[0].SKILLE.date("d.m.Y").SKILLE.date("H:i:s").SKILLE.$l[3]; $foran[$nr] = $nylinje; $fp = fopen("logg.txt", "w"); fwrite($fp, implode("\n", $foran)); fclose($fp); unset($fp, $foran, $nylinje, $id); break; } //else echo '<pre>'.print_r($l, 1).'</pre><br>'; } if(($fp = @fopen('logg.txt', 'a')) && !$found) { $streng = ''; $streng .= 'hovedside'; // Logg For $streng .= SKILLE; $streng .= date("d.m.Y"); // Dato $streng .= SKILLE; $streng .= date("H:i:s"); // Klokkeslett $streng .= SKILLE; $streng .= $_SERVER['REMOTE_ADDR']; // IP $streng .= "\n"; fwrite($fp, $streng); fclose($fp); } ?> Endret 24. mai 2007 av Slettet+142 Lenke til kommentar
Gjest Slettet+142 Skrevet 24. mai 2007 Del Skrevet 24. mai 2007 (endret) Fungerte fint hos meg Endret 24. mai 2007 av Slettet+142 Lenke til kommentar
peace2 Skrevet 24. mai 2007 Forfatter Del Skrevet 24. mai 2007 (endret) Fungerte fint hos meg 8693728[/snapback] hmm , jeg har brukt easyPHP til testinga , men kan prøve å lasteopp den å se , sikker på at du har sendt den endelige koden? Edit: Nå har jeg brukt både easyPHP og home.no.net , og begge virker på samme måte Endret 24. mai 2007 av xox Lenke til kommentar
Gjest Slettet+142 Skrevet 24. mai 2007 Del Skrevet 24. mai 2007 Poster begge kodene på nytt for sikkerhets skyld jeg Kode 1: <?php define("SKILLE", "|-_-.-_-|"); if(!is_file("logg.txt")){ $fp = fopen("logg.txt", "w"); fwrite($fp, ""); fclose($fp); } $found = false; $fil = file("logg.txt"); foreach($fil as $nr => $linje){ $l = explode(SKILLE, $linje); $ip = ""; $ip = $l[3]; $ip2 = ""; $ip2 = $_SERVER['REMOTE_ADDR']; if($ip == $ip2){ $found = true; echo "IP Allerede i logg"; $foran = array(); foreach($fil as $id=>$val){ if($id==$nr) continue; $foran[$id]= $val; } $nylinje = $l[0].SKILLE.date("d.m.Y").SKILLE.date("H:i:s").SKILLE.$l[3]; $foran[$nr] = $nylinje; $fp = fopen("logg.txt", "w"); fwrite($fp, implode("\n", $foran)); fclose($fp); unset($fp, $foran, $nylinje, $id); break; } //else echo '<pre>'.print_r($l, 1).'</pre><br>'; } if(($fp = @fopen('logg.txt', 'a')) && !$found) { $streng = ''; $streng .= 'hovedside'; // Logg For $streng .= SKILLE; $streng .= date("d.m.Y"); // Dato $streng .= SKILLE; $streng .= date("H:i:s"); // Klokkeslett $streng .= SKILLE; $streng .= $_SERVER['REMOTE_ADDR']; // IP $streng .= "\n"; fwrite($fp, $streng); fclose($fp); } ?> Kode 2: <?php echo '<br><br><br>'; define("FILSKILLE", "|-_-.-_-|"); $fil = file("logg.txt"); $antall = count($fil); echo '<table>'."\n"; echo '<tr><td><b>Logg for:</b></td><td><b>Dato</b></td><td><b>Klokkeslett</b></td><td><b>IP Adresse</b></td></tr>'."\n"; foreach($fil as $linje){ $line = explode(FILSKILLE, $linje); echo '<tr><td>'.$line[0].'</td><td>'.$line[1].'</td><td>'.$line[2].'</td><td>'.$line[3].'</td></tr>'; echo "\n"; } echo '</table>'; ?> Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå