php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 05-05-2004, 18:51
Ruderfreund
 Newbie
Links : Onlinestatus : Ruderfreund ist offline
Registriert seit: Feb 2003
Ort: Bonn
Beiträge: 7
Ruderfreund ist zur Zeit noch ein unbeschriebenes Blatt
Ruderfreund eine Nachricht über AIM schicken
Standard PHP Gästebuch mit Spamschutz!

Hallo,
ich habe grade ein Gästebuch mit PHP und MySQL geschrieben!
Nur fiehl mir ein, dass ich gar keinen Spam und flooding schutz habe!

Allerdings habe ich überhaupt kein Peil, wie ich das machen soll!
Hier das Script, dass die Daten zum Schluss einfügt!

PHP-Code:
<?
$datum 
date("j.m.Y");
$zeit date("G:i");
$ip GetEnv("REMOTE_ADDR");
include 
"connect_to.php";

if (empty(
$mail)){
$mail "no mail";
}

if (empty(
$name) || empty($text)){
include 
"guestbook_add_error.php";
}else{

$Query "INSERT INTO guestbook (name,text,mail,datum,zeit,ip) VALUES ('$name','$text','$mail','$datum','$zeit','$ip')";
if (!(
$ergebnis mysql_query($Query,$verbindung))){
echo 
"<font face=Verdana size=2>Der Eintrag konnte nicht hinzugef&#xFC;gt werden. $name" ;
exit();
}
else
{
include 
"guestbook_added.php";
}

}

?>
Kann man nicht die Variabeln irreführen, so dass dieses Script, wenn es immer wieder neu geladen wird (=spammen) keine Daten mehr enthalten?
Oder wie soll das funktionieren???

Brauche da dringend Hilfe!
ciao
Sebastian
Mit Zitat antworten
  #2 (permalink)  
Alt 05-05-2004, 18:55
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Du darfst gerne mal die Suche benutzen oder unsere Tutorials durchlesen
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 05-05-2004, 20:42
Ruderfreund
 Newbie
Links : Onlinestatus : Ruderfreund ist offline
Registriert seit: Feb 2003
Ort: Bonn
Beiträge: 7
Ruderfreund ist zur Zeit noch ein unbeschriebenes Blatt
Ruderfreund eine Nachricht über AIM schicken
Standard

Sorry! Ich hab mich durch ein paar Tutorials gewühlt, aber irgendiwe klappt das überhaupt nicht!
Ich weiß nur, dass man eine 2te Datenbank anlegen soll: ipsperre mit ip und time! Hier ein Beispiel, dass ich gefunden habe:

PHP-Code:
<? 
function getip() { 
    
//wenn der User über nen Proxy in's Internet geht... 
    //muss die IP so "geholt" werden... 
    
if(getenv("HTTP_X_FORWARDED_FOR")) 
        
$ip getenv("HTTP_X_FORWARDED_FOR"); 
    else 
        
//ansonsten so... 
        
$ip getenv("REMOTE_ADDR");  
    return 
$ip;  


mysql_connect("host","name","passwort") or die(mysql_error()); // Verbindet zum Datenbankserver 
mysql_select_db("datenbank"); // Wählt die Datenbank 

$sperre=time()-180
$jetzt=time(); 
$ip getip();  

mysql_query("DELETE FROM ipsperre WHERE time<$sperre") or die(mysql_error()); // Löscht Einträge, die veraltet sind 

$pruef=mysql_query("SELECT ip FROM ipsperre WHERE ip='$ip'") or die(mysql_error()); 
if(@
mysql_fetch_array($pruef)) { // Wenn die IP nicht gefunden wurde: Eintrag 
    
mysql_query("INSERT INTO ipsperre (ip, time) VALUES ('$ip', '$jetzt')") or die(mysql_error()); 
     
    
// Weitere Einträge, z.B. ins Gästebuch 

} else { 
// ansonsten Verweigerung 
    
echo "Deine IP wurde in der Datenbank gefunden, du hast nicht drei Minuten gewartet!"

?>
Nur leider klappt das nicht! Er braucht total lange um die Seite aufzurufen!
Ist da irgendwo ein Fehler? Kenne mich nicht sonderlich gut mit MySql aus!
Mit Zitat antworten
  #4 (permalink)  
Alt 05-05-2004, 22:05
DanielD
 Junior Member
Links : Onlinestatus : DanielD ist offline
Registriert seit: Oct 2003
Beiträge: 234
DanielD ist zur Zeit noch ein unbeschriebenes Blatt
DanielD eine Nachricht über ICQ schicken
Standard

das zauberwort heisst hier wohl eher sessions .... ip sperre hat einen nachteil:
Stell dir folgende Situation vor: Du bist Mitarbeiter einer Firma die über eine Standleitung eine für alle Mitarbeiter gleiche Verbindung zum Internet hat. Nun schreibt einer der Mitarbeiter eine Nachricht in dein Gästebuch. 10min. später möchte aber sein Gegenüber auch eine Nachricht im GB hinterlassen weil sein Gegenüber ihm gesagt hat dass die Seite sooo toll ist. Da aber beide die gleiche IP (jedenfalls vom Internet aus gesehen) haben, kann er nicht reinschreiben weil die IP gesperrt ist ....

Also nimm lieber Sessions .... ist wesentlich einfacher und besser .....

mfG
Mit Zitat antworten
  #5 (permalink)  
Alt 06-05-2004, 14:42
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

@Ruderfreund: Dann hast du anscheinend nicht richtig gelesen. Eine zweite Tabelle ist definitiv nicht erforderlich. Wozu auch. Mach halt einfach ne Spalte IP.

Wie du aber sicher bei deiner Suche im Forum gelesen hast, solltest du DanielDs Argument nicht ganz vernachlässigen.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #6 (permalink)  
Alt 06-05-2004, 19:26
Ruderfreund
 Newbie
Links : Onlinestatus : Ruderfreund ist offline
Registriert seit: Feb 2003
Ort: Bonn
Beiträge: 7
Ruderfreund ist zur Zeit noch ein unbeschriebenes Blatt
Ruderfreund eine Nachricht über AIM schicken
Standard

Ich habs nun hingekriegt! Hier das Ergebnis:
Es ist mir so etwas lieber als Sessions, da ich mich mit Sessions eh nicht auskenne! Es wird überprüfet ob die ip in den letzten 180 sec bereits einen Eintrag ins gb gemacht hat! Wenn ja, dann gibts nen error!
PHP-Code:

<?
if (empty($name) || empty($text)){
include 
"guestbook_add_error.php";
}else{

function 
getip() { 
    
//wenn der User über nen Proxy in's Internet geht... 
    //muss die IP so "geholt" werden... 
    
if(getenv("HTTP_X_FORWARDED_FOR")) 
        
$ip getenv("HTTP_X_FORWARDED_FOR"); 
    else 
        
//ansonsten so... 
        
$ip getenv("REMOTE_ADDR");  
    return 
$ip;  


if (empty(
$mail)){
$mail "no mail";}
$datum date("j.m.Y");
$zeit date("G:i");
$ip GetEnv("REMOTE_ADDR");
include 
"connect_to.php";


$sperre=time()-18
$jetzt=time(); 
 
$Query "SELECT * FROM abi_guestbook WHERE (time>$sperre) AND (ip='$ip')";

if (!(
$ergebnis mysql_query ($Query$verbindung))) {
    echo(
"Die Abfrage ist fehlgeschlagen!<P>");
    echo(
"Ihre Abfrage $Query war nicht erfolgreich!<P>");
    exit();
}

$rows mysql_num_rows($ergebnis);
if (
$rows == "0"){


////////
$Query2 "INSERT INTO guestbook (name,text,mail,datum,zeit,ip,time) VALUES ('$name','$text','$mail','$datum','$zeit','$ip','$jetzt')";
if (!(
$ergebnis mysql_query($Query2,$verbindung))){
echo 
"<font face=Verdana size=2>Der Eintrag konnte nicht hinzugef&#xFC;gt werden. $name" ;
exit();
}
else
{
include 
"guestbook_added.php";
}
///////////////////////////////


}else{



include 
"guestbook_wait_error.php";


}
}
?>
Aber vielen Dank trotzdem!
Mit Zitat antworten
  #7 (permalink)  
Alt 25-01-2006, 16:05
rwin
 Newbie
Links : Onlinestatus : rwin ist offline
Registriert seit: Jul 2004
Beiträge: 11
rwin ist zur Zeit noch ein unbeschriebenes Blatt
Standard mal n nachhaken

hallo zusammen,

habe grade diesen thread herausgewühlt, würde da gern noch etwas diskutieren.

ip time out mit allen genannten nachteilen scheint mir nich so die lösung zu sein. habe die erfahrung gemacht, dass bots immer wieder kamen, aber durchaus stunden dazwischen lagen und sich dann eintrugen.

idee ist: die gb seite ist nicht über eine link (verweis a la a href) zu erreichen, sondern über ein formular button, der ein input als hidden überträgt. auf der gb seite kontrolle, ob diese variable gesettet ist. somit kann die seite nicht direkt aufgerufen werden, bringt das einen vorteil?

wie sind eure erfahrungen mit spam bots bzw was unternehmt ihr dagegen?

gruß,

rwin
Mit Zitat antworten
  #8 (permalink)  
Alt 26-01-2006, 09:05
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Vorteil ist natürlich, dass Standard-Bots nicht drauf kommen. Wenn es jemand ernsthaft drauf anlegt, kann er aber deine lösung ohne weiteres umgehen und weiter spamen.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #9 (permalink)  
Alt 27-01-2006, 09:46
rwin
 Newbie
Links : Onlinestatus : rwin ist offline
Registriert seit: Jul 2004
Beiträge: 11
rwin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Indem er die hidden variable ausliest und selbst per formular an das gästebuch schickt!?
Mit Zitat antworten
  #10 (permalink)  
Alt 27-01-2006, 10:13
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

ich machs letztlich immer so, dass ein Eintrag letztlich erst freigeschaltet werden muss - schon allein deswegen, damit nicht irgendwelche rechtsradikalen Parolen oder Links zu Porno-sites stundenlang auf der Page rumschwirren ehe man sie entdeckt und löschen kann.

Klar, wer ein wirklich stark frequentiertes Gästebuch hat, beim dem kann die freischalterei dadurch schon beinah in Arbeit ausarten - aber wenns nicht 100 Einträge am Tag sind, ist es durchaus eine Überlegen wert so vorzugehen.

Außerdem scheints ein bisschen zu helfen, wenn man für sowas nicht unbedingt die üblichen Namen für die Scriptdateien verwendet wie z.B. 'gaestebuch.php', 'gb.php', 'guestbook.php' usw. sondern einen beliebigen anderen Namen.

rwins Vorschlag ist auch nicht der verkehrteste - Zufallswerte (im Form von ner Session-ID eigentlich ganz gut) abspeichern, die dann eine bestimmte Zeit gültig sind und ins Form als Hidden-Input mitgeliefert werden.
Mit Zitat antworten
  #11 (permalink)  
Alt 27-01-2006, 10:29
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Manuelles Freischalten oder Löschen jedes Eintrags wirst du nicht mehr wollen oder gar leisten können, wenn dir ein Bot dir mal innerhalb von Minuten tausende Einträge hinterlassen hat. Oder wenn du mal 14 Tage auf Safari gehst, dann liegt das GB brach: Keiner kann eintragen, weil keiner moderiert.
Es solte also schon was weitgehend automatisches sein ...

Ein Gästebuch ist - wenn es um Spam geht - das gleiche wie die Kommentarfunktion eines Blogs.
Für die gibt es inzwischen sehr ausgereifte Spamschutztechniken (Captcha, Badwortfilter, URL-Filter, URL/Text-Ratio, Spam/Ham-Learning), die du ja mal ansehen kannst.
Mit Zitat antworten
  #12 (permalink)  
Alt 27-01-2006, 10:38
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

von ner richtigen Spambot-Attacke ist (zum Glück?!) noch keines unserer Gästebücher erwischt worden - es kommt vielleicht auch immer etwas drauf an in welcher Art von Homepage es verwendet werden soll - ich mach sehr viele für die Hotels in unserer Region - da kommts gerne mal vor, dass von nem Konkurrenten ein bösartiger Eintrag gemacht wird - sowas kann dann einfach kein Spam-Schutz der Welt von sich aus erkennen und die Besitzer der Hotels gucken ned stündlich nach, ob was drin ist, was gelöscht werden müsste - denen ist sowas mit nem Freischaltlink halt einfach lieber.
Mit Zitat antworten
  #13 (permalink)  
Alt 27-01-2006, 10:45
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Jup, verstehe. Das sind natürlich andere Umstände ... ein Hotel ist keine bloggende Privatperson, ein Hotel ist nie 14 Tage auf Safari.
Ein Hotel hat Neider und Konkurrenten, die ihm gezielt ans Bein pinkeln wollen; ein Blogspambot will nur Googlejuice erzeugen.
Mit Zitat antworten
  #14 (permalink)  
Alt 27-01-2006, 10:45
rwin
 Newbie
Links : Onlinestatus : rwin ist offline
Registriert seit: Jul 2004
Beiträge: 11
rwin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

finds gut, dass doch noch ein wenig diskussion aufgekommen ist!

@onemorenerd, ich werd mir die sachen mal anschauen, danke!

vielleicht gibts noch einige, die auf anderen wegen diese sachen bekämpfen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

ContentLion - Open Source CMS ansehen ContentLion - Open Source CMS

ContentLion ist ein in PHP geschriebenes CMS, bei dem man Seiten, Einstellungen usw. in Ordnern lagern kann

22.08.2019 stevieswebsite2 | Kategorie: PHP/ CMS
Adsman Pro - Werbe-Manager V.1.1.0

Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebigem Format, Textanzeigen und Page-Peels mit umfangreichen Text und Flash-Effekte.

30.07.2019 rhs | Kategorie: PHP/ Bannerverwaltung
HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

30.07.2019 Berni | Kategorie: MYSQL/ Management
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:26 Uhr.