Gå til innhold

php Overvåking script


Anbefalte innlegg

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 av xox
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

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 av Slettet+142
Lenke til kommentar
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å :innocent: , det er samme for meg åssen skriptet ser ut,, ganske enig med deg der at det er en "søppel" script ! :whistle:

Vil ha noe som gir bedre oversikt :)

Lenke til kommentar
Gjest Slettet+142

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 av Slettet+142
Lenke til kommentar
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! :D , skal prøve den ut nå :)

Lenke til kommentar

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 :blush:

Edit:

Mangler kode 1 tegnet "<?php " eller?

kan Lite php og db som sagt :blush:

Endret av xox
Lenke til kommentar
Gjest Slettet+142

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
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

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 :hmm:

rettigheter er ok

Endret av xox
Lenke til kommentar
Gjest Slettet+142

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

nå funka det bra:D ;)

Men en ting ,se på bildet under. Hver gang jeg flasher index.php så skrives ip adressen på nytt.

post-81752-1180029789_thumb.jpg

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? :innocent:

takk for hjelpen :)

Endret av xox
Lenke til kommentar
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 :thumbup:

Endret av xox
Lenke til kommentar
Gjest Slettet+142

Slik, da håper jeg at jeg har klart å fikse det :D

 

 

<?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 av Slettet+142
Lenke til kommentar
Fungerte fint hos meg :hmm:

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 :dontgetit:

Endret av xox
Lenke til kommentar
Gjest Slettet+142

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...