Links verbieten

  • #1
F

Fooulaz

Aktives Mitglied
Themenersteller
Dabei seit
31.08.2006
Beiträge
43
Reaktionspunkte
0
Hallo zusammen!

meine Homepage liegt zurzeit zwar brach, da ich im Moment keinen Sinn in ihr sehe, jedoch existiert auf ihr mein Gästebuch das ich nicht löschen will.
das Gästebuch existiert nun schon seit ca. einem halben jahr und seit dieser zeit hat es noch keinen Robot auf meine seite verschlagen.
bis vor kurzem: Er hat mir ca. 90 Einträge verpasst und alle mit dem Versuch mir Links zu hinterlassen. Aufgrund von get_magic_quotes und htmlspecialchars werden diese zum Glück nicht richtig angezeigt.
Trotzdem verewigt er sich auf meiner Seite! :|

Jetzt habe ich mir gedacht, dass ich einfach ein paar zeilen code ins Gästebuchskript schreiben könnte, die es verbieten einen Link zu hinterlassen. Und zwar durch die Funktion $search=array().
Ich will, dass das Skript mir den Inhalt des verfassers nach bestimmten Wörtern oder Zeichen durchsucht und wenn diese gefunden werden das Absenden verweigert also die().

Da ich aber immer noch ein ziemlicher Anfänger bin weiß ich nicht wo und welchen Code ich einfügen soll und bitte deshalb um Hilfe! :'(


Wahrscheinlich hier irgendwo einfügen:

Code:
if ($_POST[Eintragen]) {

	include ../php_includes/konfigurationfooulaz.php;

	$err=false;

	if (empty($_POST['Autor'])&&empty($_POST['Titel'])&&empty($_POST['Inhalt'])&&empty($_POST['EMail']))
	{ $err=true; echo Bitte Formular ausfüllen! <br />; die ();
		 }

	if(trim($_POST['Autor'] ==  ))
	{ $err=true; die( Bitte einen Namen eingeben!<br />\n);
		 }

	if (trim($_POST['Titel'] == ))
	{ $err=true; die( Bitte Betreff ausfüllen!<br />\n); }

	if(trim($_POST['Inhalt'] ==  ))
	{ $err=true; die( Bitte einen Text eingeben!<br />\n);
		 }



	if(get_magic_quotes_gpc()) {
	 array_stripslashes($_POST);
	 array_stripslashes($_GET);
	 array_stripslashes($_COOKIE);
	}


	$ip = getenv( REMOTE_ADDR );
	$host=gethostbyaddr($ip);


	 if (!$err) { $intabelle= INSERT INTO gb (Autor, EMail, Homepage, Titel, Inhalt, Datum, Uhrzeit, IP, Host)
			       VALUES
				   ('.addslashes(htmlspecialchars($_POST['Autor'])).',
					'.addslashes(htmlspecialchars($_POST['EMail'])).',
					'.addslashes(htmlspecialchars($_POST['Homepage'])).',
					'.addslashes(htmlspecialchars($_POST['Titel'])).',
					'.addslashes(htmlspecialchars($_POST['Inhalt'])).',
					NOW(), NOW(),'$ip',->$host');

	$x=mysql_query($intabelle) OR die (DSNIDT, da: .mysql_error());
		echo Eintrag gesendet!<br />\n;
		echo <a href=\guestbook.php\>---Zum Inhalt---</a>\n;  } }








	echo </td>\n;
	echo </tr>\n;
	echo </table>\n;
	echo <hr border=\1\>\n;



	echo </body>\n;

	echo </html>\n;


Falls das ein zu kleiner Ausschnitt des Skripts ist kann ich auch das Ganze senden. Falss zu wenig info schreibt mir was ich noch an Infos geben soll.

Grüße Fooulaz
 
  • #2
Schade! :(

So was vielleicht (hab schon seit nem halben jahr nichts mehr mit Html, Php gemacht also sry)

Code:
$search=array(<a, /a, url=);
if $search = true (exit (Keine Links im Beitrag erlaubt))

Nur son Gedanke. Die Richtung dürfte jetzt klarer sein.

Muss dem Skript auch noch verklickern was es durchsuchen soll aber wie?

Bitte sagt mir was ihr an info braucht!

Bitte helft mir, der Robot hat schon wieder zugeschlagen!

Gruß Fooulaz
 
  • #3
hallo wie wärs wenn du einfach die htmlspecialchars funktion verwendest?
bsp:
Code:
$text=htmlspecialchars($text);
echo$text;
 
  • #4
Ich hab das mal für ein Gästebuch eines Freundes so gelöst:
Code:
<?php
if((ereg([url]http://[/url], $text)) || (ereg(www, $text))...(z.B. echoNicht erlaubt...
?>
 
  • #5
So, mach das jetzt anders.

Und zwar will ich das mit so Bildchen lösen auf denen man zahlen und buchstaben sieht und dies dann eingibt. Glaub das heißt Scratching oder so (lol). denke ihr wisst was ich meine.


Mein Code bisher:


authentifizierung1.php:

Code:
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
	 [url]http://www.w3.org/TR/html4/loose.dtd>[/url]
	<html>

	<head>
	<meta http-equiv=Content-Style-Type content=text/css>
	<meta name=author content=Marco Foland>
	<meta name=description content=>
	<meta name=keywords content=Folus>
	<title>Fooulaz</title>
	<link rel=stylesheet type=text/css href=../fooulaz_screen.css>

	</head>


<body>

<p align=center>Bitte trage die Zeichen in das Feld ein um sicher zu sein, dass du ein Mensch bist! (Und kein Böser Spam-Roboter!!)</p>

<?php
echo <p align=\center\>\n;
 $bild=array(Bild1.bmp,Bild2.bmp,Bild3.bmp,Bild4.bmp,Bild5.bmp,Bild6.bmp,Bild7.bmp,Bild8.bmp,Bild9.bmp,Bild10.bmp);
 mt_srand ((double)microtime()*1000000);
 $zufallszahl = mt_rand(0,(count($bild) - 1));

 echo <p><img src=\./.$bild[$zufallszahl].\></img><p><form action=\./authentifizierung2.php\ methode=\post\><input type=\text\ name=\Eingabe\ size=\25\ maxlength=\10\></p>\n;
 echo <p><input type=\submit\ name=\OK\ value=\Ok\></form></p></p>\n;


?>


</body>
</html>

authentifizierung2.php:

Code:
<?php

 include ../../php_includes/konfigurationfooulaz.php;

 if(get_magic_quotes_gpc()) {
	  array_stripslashes($_POST);}

	  $überprüfen=$_POST;

$query = SELECT authzahl FROM authentifizierung WHERE authzahl =->.mysql_real_escape_string($überprüfen).';
$result = mysql_query($query) OR die (Bitte Feld richtig ausfüllen!!);

if ($query == true) { header (Location:../FooulazGUESTBOOK.php); } //auf FooulazGUESTBOOK kann man dann den Eintrag
                                                //eingeben!

?>

bekomme aber folgende Fehlermeldung:
Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in /is/htdocs/*******/www/Fooulaz/authentifizierungsbilder/authentifizierung2.php on line 10

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/******/www/Fooulaz/authentifizierungsbilder/authentifizierung2.php:10) in /is/htdocs/******/www/Fooulaz/authentifizierungsbilder/authentifizierung2.php on line 13


Kann mir jemand helfen??

Gruß Fooulaz
 
  • #6
=> $überprüfen=$_POST

$_POST ist ein Array, du brauchst aber für die Überprüfung nur einen Teil des Array's.

Sollte eigentlich $_POST[Eingabe] sein, nen anderes Input sehe ich nicht ;)
 
  • #7
Ach :|

Sehe doch vor lauter Bäumen den Wald nicht! lol
Aberjetzt kommt die Fehlermedung

Notice: Undefined index: Eingabe in /is/htdocs/wp1057256_7M2QJUAHWW/www/Fooulaz/authentifizierungsbilder/authentifizierung2.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/wp1057256_7M2QJUAHWW/www/Fooulaz/authentifizierungsbilder/authentifizierung2.php:8 ) in /is/htdocs/wp1057256_7M2QJUAHWW/www/Fooulaz/authentifizierungsbilder/authentifizierung2.php on line 13

authentifizierung2.php Neu:

Code:
<?php

 include ../../php_includes/konfigurationfooulaz.php;

 if(get_magic_quotes_gpc()) {
	 array_stripslashes($_POST);}

	 $überprüfen=$_POST[Eingabe];

$query = SELECT authzahl FROM authentifizierung WHERE authzahl =->.mysql_real_escape_string($überprüfen).';
$result = mysql_query($query) OR die (Bitte Feld richtig ausfüllen!!);

if ($query == true) { header (Location:../FooulazGUESTBOOK.php); }

?>

Was nu? :-\
 
  • #8
auch so funktioniert es nicht:

Code:
<?php

 include ../../php_includes/konfigurationfooulaz.php;

 if(get_magic_quotes_gpc()) {
	 array_stripslashes($_POST);}

	 // $überprüfen=$_POST[Eingabe];

$query = SELECT authzahl FROM authentifizierung WHERE authzahl =->.mysql_real_escape_string($_POST['Eingabe']).';
$result = mysql_query($query) OR die (Bitte Feld richtig ausfüllen!!);

if ($query == true) { header (Location:../FooulazGUESTBOOK.php); }

?>

wieder undefined index Eingabe

Aber ich hab Eingabe doch vorher in authentifizierung1.php definiert! oder nicht?
Verstehs nicht was los ist :-?

muss ich bei:
array_stripslashes($_POST);
auch Eingabe einfügen?? also so:
array_stripslashes($_POST['Eingabe']);
 
  • #9
Hab das jetzt mit GET gemacht und nicht mit POST. Komischerweise kommt dann keine Fehlermeldung mit UNDEFINED INDEX EINGABE.

Jetzt ist es aber so, dass man auf jeden Fall zum Eintragformular weitergeleitet wird, egal was man eingibt!!

D.h. irgendetwas scheint in meinen SQL-Anweisungen nicht zu funktionieren:

Code:
<?php

 include ../../php_includes/konfigurationfooulaz.php;

 if(get_magic_quotes_gpc()) {
	 array_stripslashes($_GET);}

	 $überprüfen=$_GET[Eingabe];

$query = SELECT authzahl FROM authentifizierung WHERE authzahl =->.mysql_real_escape_string($überprüfen).';
$result = mysql_query($query) OR die (Bitte Feld richtig ausfüllen!!);

if ($result != true) { header (Location:../FooulazGUESTBOOK.php); }

?>

Nur was? Hab den selben Code auch für den Memberbereich genutzt und musste gerade feststellen, dass er dort auch nicht funktioniert!

Also Fragen:

1. Was ist an den SQL Befehlen falsch?
2. Warum bekomme ich keine Fehlermeldung mit get, aber mit post schon?
 
  • #10
  • #11
ok habs geändert auf $pruefen. --> Keine Änderung!

Es müsste doch aber eigentlich auch eine Fehlermeldung kommen, wenn er irgendwas nicht lesen kann?

Aber Danke!
 
  • #12
In PHP sind Umlaute im variablennamen erlaubt!

vergiss das aber gleich wieder, da du trotzdem keine Umlaute verwenden solltest!

was ich damit nur sagen wollte ist, dass es nicht an dem variablennahmen $überprüfen liegt.
 
  • #13
Game12 schrieb:
In PHP sind Umlaute im variablennamen erlaubt!

Und wer sowas macht sollte Gärtner oder Gynäkologe werden ::)


...... obwohl ..... Gynäkologe mml
 
  • #14
Gut dann werd ich Gärtner!

Aber geholfen hat das net. Kann gar net glauben, dass keiner hier mein Problem lösen kann!?!

Naja Habs jetzt halbwegs selbst zum laufen gebracht.
man kommt jetzt nur zum Eintragformular wenn man die Zeichen richtig eingibt.
Gibt man aber was falsches ein, dann kommen immer noch Fehlermeldungen.

Lustig ist auch:

Der Spam-Roboter hat schon wieder eine Nachricht (aber nur eine) hinterlassen!!!
Wie kann der die Zeichen auf dem Bild erkennen? (Vielleicht ist das ja kein Roboter??)
D.h. Bin so weit wie vorher!
Muss wohl doch noch bestimmte Wörter verbieten.

Naja, aber ich kriegs schon hin.
 
  • #15
Ich hab es wie ich oben schon geschrieben habe gelöst indem ich Links in dem GB-Text unterbinde, zusätzlich habe ich noch eine Fuinktion die dem Admin ermöglicht die IP-Adresse des eintragenden quasi auf Knopfdruck für die Zukunft zu sperren, seitdem der dem die HP gehört so ca. 20 IP-Adressen gesperrt hat ist kein SPAM mehr in seinem Gästebuch.
 
  • #16
Danke Noah!
Aber dieses problem die Wörter zu verbieten hab ich im Moment gar nicht. Es geht darum, dass irgendwas in meiner Sql anweisung falsch sein muss, da ich fehlermeldungen erhalte wenn man falsche zeichen eingibt! kann jeder auf meiner hompage unter gästebuch nachschauen.

Mfg

fooulaz

EDIT: Sry
Bekomme keine fehlermeldung, aber den falschen tsext angezeigt. Es müsste laut Code diese Meldung angezeigt werden: Falsch!!

Code:
<?php

 include ../../php_includes/konfigurationfooulaz.php;

 if(get_magic_quotes_gpc()) {
	  array_stripslashes($_GET[Eingabe]);}

	  $pruefen=$_GET[Eingabe];

$query = SELECT authzahl FROM authentifizierung WHERE authzahl =->.mysql_real_escape_string($pruefen).';
$result = mysql_query($query) OR die(Falsch !!!.mysql_error());
$x = mysql_fetch_array($result);

if ($x['authzahl'] == $pruefen) { header (Location:../FooulazGUESTBOOK.php); }
else { echo Falsche Eingabe!! Gehe zurück um die Eingabe zu pr&uumlfen!; }

echo </br>;
echo $result;
echo $pruefen </br>;echo $query </br>;echo $x </br>;


?>
 
  • #17
Habe das jetzt so gelöst:

Code:
<?php
 include ../../php_includes/konfigurationfooulaz.php;

 if(get_magic_quotes_gpc()) {
	 array_stripslashes($_GET[Eingabe]);}

	 $pruefen=$_GET[Eingabe];

$query = SELECT COUNT(authzahl) FROM authentifizierung WHERE authzahl =->.mysql_real_escape_string($pruefen).';
$result = mysql_query($query) OR die(Falsche Eingabe. Bitte gehe zurück um die Eingabe zu korrigieren..mysql_error());
list($x)=mysql_fetch_row($result);

if ($x>0) { header (Location:../FooulazGUESTBOOK.php); } else { echo Falsche Eingabe. Bitte gehe zurück um die Eingabe zu korrigieren.; }
?>

Jetzt klappts perfekt! :1
 
Thema:

Links verbieten

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben