Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   IP loggen bij uploaden plaatje (https://forum.scholieren.com/showthread.php?t=1576726)

Psychopath 30-04-2007 22:49

IP loggen bij uploaden plaatje
 
Ik zou graag een IP log bij willen houden bij mijn pic server van welk adres welk plaatje komt, maar ik ben nu al weken op zoek naar hoe ik dat het beste/makkelijkste kan doen, maar alles draai eigenlijk op niks uit.

Ik heb voor het oploaden een PHP script op mijn apache server.
Ik ben een ramp met PHP, ik kan net coes herkennen en een klein beetje aanpassen etc, zou iemand me een beetje kunnen helpen met het fixen van een log?

freyk 30-04-2007 23:00

Wat heb je al (laat eens wat code zien).

hint:
PHP-code:

$ipadres=$_SERVER['REMOTE_ADDR'];
echo 
"hallo, jouw ipadres is $ipadres


Psychopath 30-04-2007 23:35

Citaat:

freyk schreef op 01-05-2007 @ 00:00 :
Wat heb je al (laat eens wat code zien).

hint:
PHP-code:

$ipadres=$_SERVER['REMOTE_ADDR'];
echo 
"hallo, jouw ipadres is $ipadres


PHP-code:

<font size=2>
In verband met recentelijk misbruik en de toekomstige bestrijding hiervan word het volgende adres minimaal 30 dagen opgeslagen en bewaard. <b><?php echo $_SERVER["REMOTE_ADDR"]; ?></b>
</font>

Wat betreft IP-check alleen dit, maarja, dat is een beetje loos als je het niet kan waar maken, voor de rest heb ik vele scripts gezocht op internet of uit andere pagina's geprobeerd te halen, vaak liep het dan vast op het wegschrijven in een/het bestand.

Ik heb ook iets geprobeerd met de log's van de apache module in WAMP, maar ik kon wel ongeveer de juiste variabele vinden alleen bij het instaleren crashte de gehele error log er bij dus...



Gelijk maar het hele php-script zoals het op het moment stabiel draait.

PHP-code:

<?php

$site_name 
$_SERVER['HTTP_HOST']; 
$url_dir "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); 
$url_this =  "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 


$upload_dir "stuff/"
$upload_url $url_dir."/stuff/"
$message =""




if (!
is_dir("stuff")) {
  die (
"file directory doesn't exist");
}

if (
$_FILES['userfile']) { 
  
$message do_upload($upload_dir$upload_url); 

else { 
  
$message ""


print 
$message

function 
do_upload($upload_dir$upload_url) { 

  
$temp_name $_FILES['userfile']['tmp_name']; 
  
$file_name $_FILES['userfile']['name']; 
  
$file_type $_FILES['userfile']['type']; 
  
$file_size $_FILES['userfile']['size']; 
  
$result    $_FILES['userfile']['error']; 
  
$file_url  $upload_url.$file_name
  
$file_path $upload_dir.$file_name

 
   if ( 
$file_name =="") {
      
$message "<font size=5><b>Uw bestand moet wel een naam hebben....</b></font>"
      return 
$message
   }

      
$result  =  move_uploaded_file($temp_name$file_path); 
   
$message = ($result)?"<center><font size=5><b>het uploaden is voltooid....<br><br> <a href=$upload_dir$file_name>$upload_url$file_name</a><br></font><font size=4 color=grey>[img]$upload_url$file_name[/img]</font><br><br> <IMG SRC=$upload_dir$file_name WIDTH=200> <font size=4><br><br><br>Onthoud de link goed, je kan namelijk niet zelf in de directory op zoek gaan!<br><br><br></center></font></b>" :
            
"Somthing is wrong with uploading a file."

   return 
$message;

?> 
<head>
<title>Psychopath's simple image server</title>
</head>
<body>
<font size=2>
In verband met recentelijk misbruik en de toekomstige bestrijding hiervan word het volgende adres minimaal 30 dagen opgeslagen en bewaard. <b><?php echo $_SERVER["REMOTE_ADDR"]; ?></b>
</font>
<br><br><br><br><br><br><br>
<form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
  <b>Upload Image</b><input type="file" id="userfile" name="userfile">
 <input type="submit" name="upload" value="Upload">
</form>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<font size=1>
    <center>
        <b>Notice:</b><br>De eigenaar van deze webserver behoud zich het recht toe ieder plaatje op ieder moment te verwijderen.<br> Plaatjes met inhoud die in nederland bij wet strafbaar zijn (zoals kinderporno) zullen meteen worden verwijderd.<br> De eigenaar is niet aansprakelijk noch verantwoordelijk voor de inhoud van de plaatjes,<br> maar wel bereid om na overleg en een goede onderbouwing dingen te verwijderen.<br> <b>&#169 HJA de Reus, Januari 2007 
    </center>
</font>
</body>

Ik weet dat de filetype check er uit is, maar die gaf op een één of andere manier problemen bij sommige mensen met vrij groote plaatjes...

freyk 01-05-2007 08:38

Ik dacht aan het volgende coderegels die je toe kan voegen aan je scriptje.
Let wel op dat wel een mysql server nodig heeft en dat het nog niet getest is.

PHP-code:

##############
# Script: ff inloggen bij een database, zooi registreren
# Auteur: Freyk van forum.scholieren.com
# Versie: 0.1
##############

# als alles goed is upgeload 
  
if ( $result =="1") {
# doe dan het volgende:

#Gebruik de volgende gegevens om in te loggen bij een database
$server="localhost"// locatie van de server
$database="Psychopathsdatabase"//naam van de database
$gebruikersnaam="piet"//gebruiker
$wachtwoord="mijnwachtwoord"//wachtwoord
$tabel="picsregistratie"//tabel

#zoek ipadres op van de klant
$ipadres=$_SERVER['REMOTE_ADDR'];

# Maak contact met databaseserver
mysql_connect($server,$gebruikersnaam,$wachtwoord)or die( "Kan geen contact maken met $server");

# Maak contact met database op de server server
@mysql_select_db($database) or die( "Kan geen contact maken met $database");

#voer waardes in de aangegeven tabel van de database
# tabel picsregistratie moet er als volgt uitzien: 
# |registratienummer|bestandsnaam|groote|url
# |path|uploaddir|ipadres
$afbeeldingregistereren "INSERT INTO $tabel VALUES ('','$file_name','$file_type','$file_size','$file_url','$file_path','$upload_dir','$ipadres')";
# voer quary uit  
mysql_query($afbeeldingregistereren);

#sluit de verbinding tussen de database af
mysql_close();
   }; 

Dit is de basis die je verder uit kan bouwen.
Ik zal later ff verder naar je script kijken.

Psychopath 01-05-2007 09:44

Citaat:

freyk schreef op 01-05-2007 @ 09:38 :
Ik dacht aan het volgende coderegels die je toe kan voegen aan je scriptje.
Let wel op dat wel een mysql server nodig heeft en dat het nog niet getest is.

PHP-code:

##############
# Script: ff inloggen bij een database, zooi registreren
# Auteur: Freyk van forum.scholieren.com
# Versie: 0.1
##############

# als alles goed is upgeload 
  
if ( $result =="1") {
# doe dan het volgende:

#Gebruik de volgende gegevens om in te loggen bij een database
$server="localhost"// locatie van de server
$database="Psychopathsdatabase"//naam van de database
$gebruikersnaam="piet"//gebruiker
$wachtwoord="mijnwachtwoord"//wachtwoord
$tabel="picsregistratie"//tabel

#zoek ipadres op van de klant
$ipadres=$_SERVER['REMOTE_ADDR'];

# Maak contact met databaseserver
mysql_connect($server,$gebruikersnaam,$wachtwoord)or die( "Kan geen contact maken met $server");

# Maak contact met database op de server server
@mysql_select_db($database) or die( "Kan geen contact maken met $database");

#voer waardes in de aangegeven tabel van de database
# tabel picsregistratie moet er als volgt uitzien: 
# |registratienummer|bestandsnaam|groote|url
# |path|uploaddir|ipadres
$afbeeldingregistereren "INSERT INTO $tabel VALUES ('','$file_name','$file_type','$file_size','$file_url','$file_path','$upload_dir','$ipadres')";
# voer quary uit  
mysql_query($afbeeldingregistereren);

#sluit de verbinding tussen de database af
mysql_close();
   }; 

Dit is de basis die je verder uit kan bouwen.
Ik zal later ff verder naar je script kijken.

Ik heb de mysql server tot nu toe uit staan, ik zal er eens naar kijken ik daar een database in kan maken, maar dat is helemaal nieuw voor mij dus... :o

freyk 01-05-2007 13:10

Ik zie dat WAMP ook een phpmyadmin-module heeft.
Hiermee kan je snel en makkelijk je mysql-server mee beheren.

M@rco 01-05-2007 13:15

Ik vind een MySQL database nou niet echt voor de hand liggen om een simpel IP adres te loggen. Je kunt volgens mij net zo makkelijk gewoon de naam van de geüploade afbeelding en het bijbebehorende IP adres wegschrijven naar een eenvoudig tekstbestand. :o

Bijv. zoiets:

PHP-code:

$ipadres $_SERVER['REMOTE_ADDR'];
$logfile 'log.txt';
$content "Bestand $file_name is geupload door $ipadres.\n";

// Laten we eerst controleren of het bestand bestaat en of we er in kunnen schrijven.
if (is_writable($logfile))
{
    
// In ons voorbeeld openen we $logfile in 'toevoeg' modus.
    // De bestands pointer is aan het einde van het bestand
    // en daar gaat $content naar toe als we het fwrite()'en.
    
if (!$handle fopen($logfile'a'))
    {
        print 
"Kan het bestand niet openen ($logfile)";
        exit;
    }

    
// Schrijf $somecontent naar ons bestand dat we geopend hebben.
    
if (!fwrite($handle$content))
    {
        print 
"Kan niet schrijven naar bestand ($logfile)";
        exit;
    }

    print 
"Succes, geschreven ($content) naar bestand ($logfile)";
    
fclose($handle);
}
else
{
    print 
"Het bestand $logfile is niet schrijfbaar";



freyk 01-05-2007 13:40

Citaat:

M@rco schreef op 01-05-2007 @ 14:15 :
Ik vind een MySQL database nou niet echt voor de hand liggen om een simpel IP adres te loggen. Je kunt volgens mij net zo makkelijk gewoon de naam van de geüploade afbeelding en het bijbebehorende IP adres wegschrijven naar een eenvoudig tekstbestand. :o
Klopt, dat is ook veel handiger :)
Maar werken met een mysql servertje is veiliger.
Want op jouw manier haal je met wget -R www.sitevanPsychopath.nl, zo zijn logje binnen.

Psychopath 01-05-2007 18:24

Citaat:

freyk schreef op 01-05-2007 @ 14:40 :
Klopt, dat is ook veel handiger :)
Maar werken met een mysql servertje is veiliger.
Want op jouw manier haal je met wget -R www.sitevanPsychopath.nl, zo zijn logje binnen.

ook als ik die in een andere directory zet met een .htacces bestand?

freyk 01-05-2007 18:28

niet getest, maar neem aan van wel.

M@rco 01-05-2007 18:41

Ik kan me niet voorstellen dat iemand dat zou doen (en al deden ze het, so what?)...

Psychopath 01-05-2007 18:43

Citaat:

freyk schreef op 01-05-2007 @ 19:28 :
niet getest, maar neem aan van wel.
je mag het testen als je wil.

Citaat:

M@rco schreef op 01-05-2007 @ 19:41 :
Ik kan me niet voorstellen dat iemand dat zou doen (en al deden ze het, so what?)...
Dan weten ze wie welk plaatje heeft geupload, maar om de plaatjes te bekijken moeten ze dan telkens de bestandsnaam intypen omdat de dir met de plaatjes een no index heeft staan in de .htaccess.

freyk 01-05-2007 18:47

Citaat:

Psychopath schreef op 01-05-2007 @ 19:43 :
je mag het testen als je wil.
ff getest bij iemand,..ik krijg een hele mooie melding:
401 Authorization Required

Dr HenDre 01-05-2007 19:16

ja tuurlijk krijg je 401 :p anders zou je wel heeeel makkelijk zo'n beveiliging omzeilen. Een .htaccess is een van de meest veilige manieren om toegang tot data te beveiligen.

Verder is het schrijven naar een bestand imo kut, dan leg je een "database" aan in een tekstbestand, dat is echt niet praktisch. Waarom zou je t niet gewoon in een mysql db stoppen. Als je straks 2000 regels in je ding hebt en je wil weten hoe vaak een bepaalde ip bestanden heeft geupload doe je dat zeker met ctrl-f :p
En het wordt helemaal leuk als je wil weten hoe vaak een bepaalde range upload :p

En freyk, waarom onderdruk jij errors met een @ :| errors zijn gemaakt om ze op te vangen en er iets nuttigs mee te doen :p

freyk 01-05-2007 20:21

Citaat:

Dr HenDre schreef op 01-05-2007 @ 20:16 :
Als je straks 2000 regels in je ding hebt en je wil weten hoe vaak een bepaalde ip bestanden heeft geupload doe je dat zeker met ctrl-f :p
En het wordt helemaal leuk als je wil weten hoe vaak een bepaalde range upload :p

Och, daar draai ik mijn hand niet voor om, dankzij GAWK. :)
Sterker nog, heb ooit eens een firewall log van 5 gb in 10 seconden kunnen filteren.

Citaat:

Dr HenDre schreef op 01-05-2007 @ 20:16 :
En freyk, waarom onderdruk jij errors met een @ :| errors zijn gemaakt om ze op te vangen en er iets nuttigs mee te doen :p
Och, tis ook snel geschreven he.
Heb nog geen tijd gehad om het verder uit te werken.

Psychopath 01-05-2007 20:34

Citaat:

Dr HenDre schreef op 01-05-2007 @ 20:16 :
ja tuurlijk krijg je 401 :p anders zou je wel heeeel makkelijk zo'n beveiliging omzeilen. Een .htaccess is een van de meest veilige manieren om toegang tot data te beveiligen.

Verder is het schrijven naar een bestand imo kut, dan leg je een "database" aan in een tekstbestand, dat is echt niet praktisch. Waarom zou je t niet gewoon in een mysql db stoppen. Als je straks 2000 regels in je ding hebt en je wil weten hoe vaak een bepaalde ip bestanden heeft geupload doe je dat zeker met ctrl-f :p
En het wordt helemaal leuk als je wil weten hoe vaak een bepaalde range upload :p

En freyk, waarom onderdruk jij errors met een @ :| errors zijn gemaakt om ze op te vangen en er iets nuttigs mee te doen :p

voorlopig hoef ik me nog niet echt zorgen te maken om 2000 regels als ik zie hoe snel hij nu loopt :p

freyk 02-05-2007 09:48

Als je M@rco's code gebruikt, raad ik nog ff aan om de "content" van de log aan te passen zodat het beter doorzoekbaar word. :)

PHP-code:

$datum date("Y-m-d");
$content "$datum $ipadres $file_name succesvol"


Psychopath 02-05-2007 13:50

Citaat:

freyk schreef op 02-05-2007 @ 10:48 :
Als je M@rco's code gebruikt, raad ik nog ff aan om de "content" van de log aan te passen zodat het beter doorzoekbaar word. :)

PHP-code:

$datum date("Y-m-d");
$content "$datum $ipadres $file_name succesvol"


Dat had ik zelf ookal gedaan, dat kan ik nou nog net weer wel :p


Alle tijden zijn GMT +1. Het is nu 00:35.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.