Email senden mit PHP, dannach IP Sperre?

05/21/2013 14:42 Skyui#1
Hall Zusammen,

ich habe hier meinen mail script. Wie kann man es so machen das wenn man eine Mail gesendet hat, dannach gleich eine IP Sperre hat für 24 stunden oder so..

PHP Code:
$time "time(h:i:s)";
    
$title "Skyui Metin2 Kontakt";
    
$name $_POST['name'];
    
$email $_POST['email'];
    
$beschreibung $_POST['beschreibung'];
    
$header "Von: "$name " <" $email ">\r\n";
    
    
mail("[Only registered and activated users can see links. Click Here To Register...]"$title$name$email$beschreibung);

    echo 
"Deine Mail wurde erfolgreich an Skyui gesendet.<br> Wir werden uns schnellst möglich darum kümmern." 

Hoffe um Hilfe
Danke
05/21/2013 14:47 KoKsPfLaNzE#2
hallo, speicher dir doch die ip vom user in der datenbank und guck dann ob er in der letzten zeit schon mal was gemacht hat.

btw solltest die mail über einen externen smtp server versenden. ([Only registered and activated users can see links. Click Here To Register...])
05/21/2013 15:15 #SoNiice#3
In eine Datenbank die aktuelle Zeit eintragen und beim Senden abfragen ob die Mail bereits in der Datenbank steht,
05/21/2013 16:50 Skyui#4
Eig. möchte ich das ohne Datenbank machen.. Gibst da einen möglichkeit?
Man könnte doch in einer .txt datei die IP abspeichern?
05/21/2013 16:59 Cr4nkSt4r#5
Klar kannst du die IPs in einer Textdatei speichern, aber wer zur Hölle nutzt so eine langsame Technik wenn es komfortabler und schneller geht?
Wenn du es dennoch machen willst:
PHP Code:
/* IP ermitteln */
if(!isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  
$ip $_SERVER['REMOTE_ADDR'];
}
else {
  
$ip $_SERVER['HTTP_X_FORWARDED_FOR'];
}

/* Datum ermitteln */
$date date("d.m.Y h:i:s")

/* Das ganze in eine Textdatei schreiben */
$text $ip"|" .$date."\n";
$datei fopen("ips.txt","w");
fwrite($datei$text );
fclose($datei); 

Jetzt musst du dann bevor die E-Mail versand wird nur noch die Textdatei auslesen, alle darin enthaltenen IPs mit der des Besuchers abgleichen, dann schauen ob die entsprechende Zeit vergangen ist seit dem letzten Verschicken einer E-Mail und wenn genug Zeit vergangen ist die E-Mail abschicken.
Wenn du dann eine E-Mail erfolgreich abschickst nutzt du den Code oben und schreibst die IP in dein Textdokument.

~ regards
05/21/2013 21:27 xWaffeleisen#6
Quote:
Originally Posted by Cr4nkSt4r View Post
Klar kannst du die IPs in einer Textdatei speichern, aber wer zur Hölle nutzt so eine langsame Technik wenn es komfortabler und schneller geht?
Wenn du es dennoch machen willst:
PHP Code:
/* IP ermitteln */
if(!isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  
$ip $_SERVER['REMOTE_ADDR'];
}
else {
  
$ip $_SERVER['HTTP_X_FORWARDED_FOR'];
}

/* Datum ermitteln */
$date date("d.m.Y h:i:s")

/* Das ganze in eine Textdatei schreiben */
$text $ip"|" .$date."\n";
$datei fopen("ips.txt","w");
fwrite($datei$text );
fclose($datei); 

Jetzt musst du dann bevor die E-Mail versand wird nur noch die Textdatei auslesen, alle darin enthaltenen IPs mit der des Besuchers abgleichen, dann schauen ob die entsprechende Zeit vergangen ist seit dem letzten Verschicken einer E-Mail und wenn genug Zeit vergangen ist die E-Mail abschicken.
Wenn du dann eine E-Mail erfolgreich abschickst nutzt du den Code oben und schreibst die IP in dein Textdokument.

~ regards
Wenn man dem X-FORWARDED-FOR Header traut, dann bringt die ganze Geschichte mit IP sperren recht wenig. Sollte man eigentlich nie machen.
05/21/2013 21:40 Skyui#7
Warum?..
05/21/2013 21:57 xWaffeleisen#8
Quote:
Originally Posted by Skyui View Post
Warum?..
Weil der Header von jedem ganz einfach gefälscht werden kann (Wird im HTTP Packet mitgesendet, normalerweise wird dieser nur von Proxies gesetzt, kann aber theoretisch jeder tun).
Dann setzt jemand einfach den Header auf 1.1.1.1, sendet etwas ab, dann nochmal mit 1.1.1.2 usw. und schon bringt das ganze nicht mehr viel.
05/22/2013 09:06 Cr4nkSt4r#9
Man kann auch beide IPs ablegen und mit denen hinterher vergleichen, es ist Latte wie Hose und deshalb muss ich dir leider auch widersprechen.
Denn IP-Sperren bringen immer wenig für die, die es eh umgehen wollen :)
Außerdem ist nicht nur ein Header leicht fälschbar, auch eine IP, nimmt sich also rein gar nichts.
Klar kann man jetzt wieder Cookies setzen etc. pp. aber die sind genau so schnell umgangen.
Hier geht es ja nur darum den otto normal Benutzer daran zu hindern und keine Leute die Grundkenntnisse haben und so wie so dem User schaden wollen bzw. die Mechanik aushebeln wollen, von daher ;)

Man sollte die Dinge immer im ganzen betrachten und nicht einfach meckern und nichts liefern.
Wenn man eine IP-Sperre einbaut sollte man auch mit HTTP_X_FORWARDED_FOR arbeiten, sonst macht man es einfach nicht richtig.
Alles andere soll doch egal sein, denn wie gesagt, wer will der schafft es so oder so ;)

Desweiteren kann der User auch einfach HTTP_X_FORWARDED_FOR mit REMOTE_ADDR vergleichen, somit kann er auch vieles abwenden, aber naja, gibt viele Wege die nach Rom führen und jmd. der nach solch simplen Dingen fragt sollten man nicht gleich 200 Zeilen Quellcode hin werfen und sagen, nutz es.
Man sollte auch die Gelegenheit geben dass sich User etwas selber belesen und ihnen den Grundstein als Vorlage liefern.

Aber naja, andere meckern ja lieber als mal etwas sinnvolles zu posten, die Leute gefallen mir. Wie im richtigen Leben, große Fresse aber nichts dahinter :)
05/22/2013 16:32 Cooltek#10
Quote:
Originally Posted by Cr4nkSt4r View Post
Denn IP-Sperren bringen immer wenig für die, die es eh umgehen wollen :)
Außerdem ist nicht nur ein Header leicht fälschbar, auch eine IP, nimmt sich also rein gar nichts.
Hey,
Buuullshit! Die IP musst du wirklich ändern (d.H.: indem du die Verbindung zB tunnelst, wie bei OpenVPN oder dem Socks-Protokoll) und den Header kannst du "fälschen". Was denkst du geht dem User zuerst aus, die Anzahl an Maschinen über die er tunneln kann (respektive: seine Proxies) oder gültige IP-Adressen,die er einfach in den Header schreibt?
05/22/2013 20:21 xWaffeleisen#11
Quote:
Originally Posted by Cr4nkSt4r View Post
Desweiteren kann der User auch einfach HTTP_X_FORWARDED_FOR mit REMOTE_ADDR vergleichen, somit kann er auch vieles abwenden, aber naja, gibt viele Wege die nach Rom führen und jmd. der nach solch simplen Dingen fragt sollten man nicht gleich 200 Zeilen Quellcode hin werfen und sagen, nutz es.
Was willst du da machen?

Quote:
Originally Posted by Cr4nkSt4r View Post
Man sollte auch die Gelegenheit geben dass sich User etwas selber belesen und ihnen den Grundstein als Vorlage liefern.
Ja.

Quote:
Originally Posted by Cr4nkSt4r View Post
Aber naja, andere meckern ja lieber als mal etwas sinnvolles zu posten, die Leute gefallen mir.
Ich glaube eher du bist hier am Meckern.

Quote:
Originally Posted by Cr4nkSt4r View Post
Wie im richtigen Leben, große Fresse aber nichts dahinter :)
Richtig!