Wie mittels PHP Script IPs speichern ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abstand
adresse
beispiel
code
dank
datei
datum
file
glauben
http
log
nehmen
sagen
spalte
speichern
tabelle
tag
unbedingt erforderliche daten
url
zeile
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
<? $ip ="$REMOTE_ADDR"; ?>
Jo, so geht das. :)
Beitrag zuletzt geändert: 29.10.2011 17:09:13 von geilerheiler -
tradingcenter schrieb:
Danke fuer deine Antwort!
Allerdings speichert das die IP nur in einer Variablen, ich will sie aber auch speichern können!
Also in einer .log Datei wenn moeglich.
MFG.
Ich kann dir sagen wie du sie in einer DB speicherst.
$server_verbindung = mysql_connect("hostname", "benutezrname", "passwort"); $datenbank_auswahl = mysql_select_db("datenbank_name"); $eintragen = mysql_query("INSERT INTO tabelle VALUES ('$ip')");
Wenn du was nicht verstehst, dann schrieb mich per PN an, ich helf dir gerne. -
So wie es geilerheiler geschrieben hatt wäre es möglich und warscheinlich auch besser als eine .log datei da du so auch ohne probleme einträge löschen kannst etc.
-
ich würde ja $_SERVER['REMOTE_ADDR'] nehmen
zum Speichern in Log File ... würde dann auch Datum (Timestamp) dazu Speichern
(ohne MySQL)
$ts = time(); $ip = $_SERVER['REMOTE_ADDR']; $filename = 'data'/mylogfile.txt'; $handle = fopen($filename,"a"); $eintrag = $ts.";".$ip."\n"; fwrite($handle,$somecontent); fclose($handle);
und zum auslesen dann
$filename = 'data'/mylogfile.txt'; $daten = file($filename); foreach($daten as $zeile) { $item = explode(';',$zeile); echo "<br />Zeit: ".date('y-m-d H-i-s',$item[0]); echo "<br />IP: ".$item[1]; }
so wird die Log-Datei (bzw. die MySQL Tabelle) aber in kurzer Zeit sehr groß,
weil jeder Aufruf gespeichert wird
EDIT: ... und bei Zugriff von 2 oder mehr Usern zur gleichen Zeit versagt Datei-Speichern !!!!
deshalb besser MySQL nehmen, die Beispiele sollen ja nur das Prinzip erklären
egal ob in Datei oder in MySQL,
Du solltest mehrfache Aufrufe einer IP (in bestimmten Zeitraum) nicht Speichern
oder bei mehrfachen Aufrufen einen Zähler hinzufügen, also als weitere Spalte
bei File kann man z.B. für jeden Tag eine eigene Log-Datei machen
und Dateien, die älter als z.B. 14 Tage sind, dann wieder löschen
EDIT: aber von Datei rate ich bei sowas eher ab, wegen gleichzeitiger Zugriffe = Datenverlust
bei mysql kann man auch Einträge die älter sind als z.B. 14 Tage wieder löschen
sonst werden das in kurzer Zeit unmengen von Daten
$abstand = (3600*24*14); // Abstand 14 Tage $deltime = ($ts -$abstand); $loeschen = mysql_query("DELETE FROM tabelle WHERE logtime < $deltime ");
vorausgesetzt Du hast die Spalte logtime in der Tabelle angelegt und mit dem Timespamp gefüttert
PS:
das hier sind alles nur Beispiele und allgemeine Tips, keine Lösungen !!!
Meine Empfehlung ist auch eher MySQL,
denn besonders wenn mehrere User gleichzeitig die Seite aufrufen
dann versagt das Datei-Speichern .... MySQL ist da deutlich "stabiler"
PS2:
und wie ist das eigentlich rechtlich mit IP-Adressen Speichern ?
Stichwort: Vorratsdatenspeicherung ... evtl verschlüsselt Speichern? Maximale Speicher-Zeit? etc?
Beitrag zuletzt geändert: 29.10.2011 17:54:58 von anlagegeld -
anlagegeld schrieb:
ich würde ja $_SERVER['REMOTE_ADDR'] nehmen
zum Speichern in Log File ... würde dann auch Datum (Timestamp) dazu Speichern
(ohne MySQL)
$ts = time(); $ip = $_SERVER['REMOTE_ADDR']; $filename = 'data'/mylogfile.txt'; $handle = fopen($filename,"a"); $eintrag = $ts.";".$ip."\n"; fwrite($handle,$somecontent); fclose($handle);
und zum auslesen dann
$filename = 'data'/mylogfile.txt'; $daten = file($filename); foreach($daten as $zeile) { $item = explode(';',$zeile); echo "<br />Zeit: ".date('y-m-d H-i-s',$item[0]); echo "<br />IP: ".$item[1]; }
so wird die Log-Datei (bzw. die MySQL Tabelle) aber in kurzer Zeit sehr groß,
weil jeder Aufruf gespeichert wird
EDIT: ... und bei Zugriff von 2 oder mehr Usern zur gleichen Zeit versagt Datei-Speichern !!!!
deshalb besser MySQL nehmen, die Beispiele sollen ja nur das Prinzip erklären
egal ob in Datei oder in MySQL,
Du solltest mehrfache Aufrufe einer IP (in bestimmten Zeitraum) nicht Speichern
oder bei mehrfachen Aufrufen einen Zähler hinzufügen, also als weitere Spalte
bei File kann man z.B. für jeden Tag eine eigene Log-Datei machen
und Dateien, die älter als z.B. 14 Tage sind, dann wieder löschen
EDIT: aber von Datei rate ich bei sowas eher ab, wegen gleichzeitiger Zugriffe = Datenverlust
bei mysql kann man auch Einträge die älter sind als z.B. 14 Tage wieder löschen
sonst werden das in kurzer Zeit unmengen von Daten
$abstand = (3600*24*14); // Abstand 14 Tage $deltime = ($ts -$abstand); $loeschen = mysql_query("DELETE FROM tabelle WHERE logtime < $deltime ");
vorausgesetzt Du hast die Spalte logtime in der Tabelle angelegt und mit dem Timespamp gefüttert
PS:
das hier sind alles nur Beispiele und allgemeine Tips, keine Lösungen !!!
Meine Empfehlung ist auch eher MySQL,
denn besonders wenn mehrere User gleichzeitig die Seite aufrufen
dann versagt das Datei-Speichern .... MySQL ist da deutlich "stabiler"
PS2:
und wie ist das eigentlich rechtlich mit IP-Adressen Speichern ?
Stichwort: Vorratsdatenspeicherung ... evtl verschlüsselt Speichern? Maximale Speicher-Zeit? etc?
Vielen Dank für deine wundervolle Antwort!
Eine letzte Frage: Wieso versagt das Datei-speichern via fwrite wenn 2 user aufeinmal drauf gehen ?
MFG -
erstmal sorry, es muss so heissen
$filename = 'data/mylogfile.txt';
aber vergiss es IP Counter auf Datei-Basis
Warum das versagt kann ich auch nicht erklären, aber es versagt !!!
vielleicht wei bei fopen() zur gleichen Sekunde irgend ein Fehler auftritt ...
habe selber schon die Erfahrung gemacht, dass aufeinmal die log Datei leer war
also totaler Datenverlust .... mach es besser gleich mit mySQL ... !!!
es gibt dazu auch zahlreiche Tutorials
Google: http://www.google.de/search?q=php+mysql+ip+counter oder ähnliche Suche
-
Du darfst nach deutschem Recht generell (d.H. es existieren Ausnahmen) übrigens keine vollständigen IP-Adressen speichern.
Mit einer Datenschutzerklärung (welche du nach TMG anzufertigen hast), kannst du dich nicht über die Rechtsprechung stellen.
- fleischhoernchen
Beitrag zuletzt geändert: 29.10.2011 20:03:23 von fleischhoernchen -
und wenn man die IPs verschlüsselt speichert,
so das man sie selbst garnicht mehr entschlüsseln kann ?
Beispiel:
$secret_key = 'uE4RgB29oPsTfCi51Hy'; $user_ip = md5($secret_key.$_SERVER['REMOTE_ADDR']);
dann sollte es doch rechtlich OK sein
dumme Frage:
wie kann man dann eine bestimmte IP-Adresse aussperren,
wenn diese z.B. die Webseite zu spammt oder ähnlich unerwünschtes macht ?!
-
ip-black listen gibt es praktisch in jedem forum oder jeder firewall. da werden die ips dann auch gespeichert. sowohl automatisch als auch manuell. der wesentliche punkt ist, dass die ip A) höchstens 24 h einen nutzen hat, außer es handelt sich um eine feste ip und B) das du nicht unbedingt erforderliche daten glaube 6 monate höchstens speichern darfst.
wenn die ip's in keinen zusammenhang mit persönlichen daten stehen, wieso sollte man das nicht dürfen.
in dem du deine ip liste mit der aktuellen ip vergleichst und dann den stream unterbrichst/ignorierst oder einfach nur eine kurze meldung ausgibst.
if(ip1==ip2) { echo('access denied'); } else { echo('kontent'); }
blacklisten kannste aber auch über htaccess realisieren.
Beitrag zuletzt geändert: 29.10.2011 21:09:16 von aero23 -
Es versagt, weil der Skript gleichzeitig in die selbe Zeile der Datei etwas schreiben will, und dass funktioniert nicht.
-
aero23 schrieb:
ip-black listen gibt es praktisch in jedem forum oder jeder firewall. da werden die ips dann auch gespeichert. sowohl automatisch als auch manuell. der wesentliche punkt ist, dass die ip A) höchstens 24 h einen nutzen hat, außer es handelt sich um eine feste ip und B) das du nicht unbedingt erforderliche daten glaube 6 monate höchstens speichern darfst.
IP-Blacklisten sind eine Ausnahme mit entsprechenden Einschränkungen.
Nicht unbedingt erforderliche Daten darfst du gar nicht speichern. Die sechsmonatige Speicherfrist gilt nur für Abrechnungszwecke. Für Sicherheits- und Spamrelevantespeicherung gilt wenn eine siebentägige Frist und die dortige Klarspeicherung ist nur im Falle von Identifikation der "Täter" erlaubt.
Eine Möglichkeit für Blacklists hat anlagegeld genannt. Jedoch muss / sollte der Salt ($secret_key) regelmäßig verändert werden und vorhanden sein, da die Prüfsummen der möglichen IP-Adressen relativ schnell angelegt sind.
aero23 schrieb:
wenn die ip's in keinen zusammenhang mit persönlichen daten stehen, wieso sollte man das nicht dürfen.
Auch dynamische IP-Adressen sind durch den Provider für eine Weile zuordenbar. Ansonsten dürfte es Abnahnanwälten nicht möglich sein entsprechende Schreiben bzgl. Urheberrechtsverstößen zu verfassen. Gerichtsurteile haben bestätigt, dass IPs personenbezogene Daten sind.
- fleischhoernchen
Beitrag zuletzt geändert: 30.10.2011 12:47:14 von fleischhoernchen -
Personenbezogen oder auch nicht: In einem Unternehmen gibt es normalerweise ein internes Netzwerk das mit dem Internet verbunden ist. Alle die über dieses interne Netz deine Seite ansurfen haben aus Sicht deiner Seite die gleiche IP-Adresse!
-
@fleischhoernchen: Bei solchen juristischen Aussagen ist es sehr empfehlenswert eine Referenz anzugeben. Zumindest glaube ich, dass deine Darstellung so nicht ganz richtig sein kann.
-
Hallo,
bestimmte IPs kann man auch über die .htaccess ausschließen:
Deny from 192.168.0.1
Till -
zu dieser 'riesen'diskussion noch ein kleiner beitrag:
ungeachtet der rechtlichen lage (das ist seine sache) eine kleine erleichterung bei der behandlung von ip adressen durch mysql sind die 2 funktionen inet_aton() und inet_ntoa().
der sinn von inet_aton ist, dass eine Address To Number (aton) umwandlung stattfindet, wobei Number natürlich integer ist. wozu das gut sei? notürlich von richtigen sortieren von ip-s (wenn erwünscht). (sinngemäß wandelt inet_ntoa [Number To Address] integer nach ip.) -
Zum Thema rechtliche Grundlage des Verbotes:
http://www.daten-speicherung.de/index.php/bundesjustizministerium-surfprotokollierung-durch-webseitenbetreiber-illegal/
Dort steht das erläutert und auf dieser Seite ist auch das offizielle Schreiben des Bundesjustizministeriums -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage