BITTE Hilfe bei Gästebuch

  • Themenstarter Themenstarter Raptor72
  • Beginndatum Beginndatum
Sorry wenn ich momentan nichts machen kann aber damit kenne ich mich überhaupt nicht aus und daher schon jetzt mal vorab danke für euer Hilfe.

Jetzt kommt das !!

Warning: preg_match_all() [function.preg-match-all]: No ending delimiter '^' found in C:\xampp\htdocs\Homepage\gbeintrag.php on line 25
 
PHP:
$testarray = array();
if (preg_match_all("^([a-zA-Z0-9\.\_\-]+)@([a-zA-Z0-9\.\-]+\.[A-Za-z][A-Za-z]+$)^", $email, $testarray) or !$email) { 
if (!$email) { $email=true; }
}

das müsste funktionieren
 
:-( , funtkioniert nach wie vor nicht, so eine schei.... man, kann doch nicht sein warum funktioniert dat net :-/

Kommt aber zumindest schonmal keine Fehlermeldung mehr, nur das ich eben den weißen Bildschirm habe ohne Hinweis das es Spam ist oder eingetragen wurde.
 
Ok mache ich nochmal dann ;-)

Ist jetzt noch mit dem Fehlersuchscript, was ja jetzt keine Fehler mehr anzeigt :-)

Code:
<?php

error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);

mysql_connect("localhost", "****","****") or die  ("Keine Verbindung moeglich");
  mysql_select_db("*****") or die  ("Die Datenbank existiert nicht");
  
$name = $_POST['name'];
$email = $_POST['email'];
$eintrag = $_POST['inhalt'];
$link = $_POST['Feld'];

strip_tags($name);
strip_tags($email);
strip_tags($eintrag,"<br /><p>");
strip_tags($link);

$inhalt = nl2br($eintrag); 

if (!$name) { echo "Sie haben vergessen Ihren Namen anzugeben.<br />";}
if (!$eintrag) { echo "Sie haben vergessen Ihren Text einzugeben.<br />";}

$testarray = array();
if (preg_match_all("^([a-zA-Z0-9\.\_\-]+)@([a-zA-Z0-9\.\-]+\.[A-Za-z][A-Za-z]+$)^", $email, $testarray) or !$email) { 
if (!$email) { $email=true; }
}  

else {
echo "Bei der Eingabe der Emailadresse ist Ihnen wahrscheinlich ein Tippfehler unterlaufen.<br />";
$email = false;
}
if (!$name or !$eintrag or !$email) { 
echo "Bitte korrigieren Sie die fehlenden Angaben.<br />";
echo "<p><a href=\"javascript:history.back();\">zurück</a></p>";
}

$anzahl_url = substr_count($eintrag, 'http://');
$anzahl_url2 = substr_count($eintrag, 'www.');
if ($anzahl_url < 2) {$urlcheck = true;} else { $urlcheck = false;}
if ($anzahl_url2 < 2) {$urlcheck2 = true;} else { $urlcheck2 = false;}

if ($link != "Diesen Text bitte nicht ändern!") {
$linkcheck = false;
} else { $linkcheck = true; }


if ($name && $email && $eintrag && $linkcheck && $urlcheck && $urlcheck2) {

$datum = date("Y-m-d H:i:s");

$eintrag_gb = mysql_query("INSERT INTO guestbook (datum, name, email, inhalt) VALUES ('$datum','$name','$email', '$inhalt')") or die(mysql_error());

if ($eintrag_gb) {
echo "<script>alert('Eintrag wurde erfolgreich im Gästebuch eingetragen.')</script><br />";
echo "<script>{location.href='guestbook.php'}</script>";
    }
}
elseif(!$urlcheck && !$urlcheck2) {
echo "<script>alert('Ihr Eintrag wurde als Spam identifiziert und nicht ins Gästebuch eingetragen.')</script><br />";
echo "<script>{location.href='guestbook.php'}</script>";
}

?>
 
PHP:
if (preg_match_all("^([a-zA-Z0-9\.\_\-]+)@([a-zA-Z0-9\.\-]+\.[A-Za-z][A-Za-z]+$)^", $email ...
das müsste funktionieren

Das kann eigentlich nicht funktionieren. Versuch es so:

PHP:
if (preg_match_all("!^([a-z0-9\.\_\-]+)@([a-z0-9\.\-]+\.[a-z][a-z]+$)!i", $email, $testarray) or !$email) 
{ 
...
}

Dieser Hinweis bezieht sich nur auf das Format des RegEx. Ansonsten ist mir dein Skript etwas zu kompliziert.

Außerdem frage ich mich, ob es wirklich Sinn macht, einem Spammer den Hinweis zu geben, dass sein Beitrag als Spam erkannt wurde. Das führt doch nur dazu, dass er seinen Spam anpasst. Oder kommen auf deine Seite nur "dumme" Spammer?
 
Ich hab jetzt mal den ganzen Code formatiert und bei mir getestet.
Bei mir funktioniert es ohne Probleme, wenn ich den DB-Query weglasse (konnte nicht testen weil i.M. keine DB zur verfügung steht.), eine Meldung wird ausgegeben und kein Fehler mehr angezeigt!

hier der Code wie ich es getestet habe:
PHP:
<?php
 
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
 
  /*mysql_connect("localhost", "****","****") or die  ("Keine Verbindung moeglich");
  mysql_select_db("*****") or die  ("Die Datenbank existiert nicht");*/
  
    $_POST['name'] = 'test';
	$_POST['email'] = 'email@provider.tld';
	$_POST['inhalt'] = 'bla blubb';
	$_POST['Feld'] = 'Diesen Text bitte nicht ändern!';
  
	$name = $_POST['name'];
	$email = $_POST['email'];
	$eintrag = $_POST['inhalt'];
	$link = $_POST['Feld'];
	 
	strip_tags($name);
	strip_tags($email);
	strip_tags($eintrag,"<br /><p>");
	strip_tags($link);
	 
	$inhalt = nl2br($eintrag); 
 
	if (!$name)
	{
		 echo "Sie haben vergessen Ihren Namen anzugeben.<br />";
	}
	if (!$eintrag)
	{ 
		 echo "Sie haben vergessen Ihren Text einzugeben.<br />";
	}
 
	$testarray = array();
	if (preg_match_all("^([a-zA-Z0-9\.\_\-]+)@([a-zA-Z0-9\.\-]+\.[A-Za-z][A-Za-z]+$)^", $email, $testarray) or !$email)
	{ 
		if (!$email)
		{
			$email=true;
		}
	}  else {
		echo "Bei der Eingabe der Emailadresse ist Ihnen wahrscheinlich ein Tippfehler unterlaufen.<br />";
		$email = false;
	}
	
	if (!$name or !$eintrag or !$email)
	{ 
		echo "Bitte korrigieren Sie die fehlenden Angaben.<br />";
		echo "<p><a href=\"javascript:history.back();\">zurück</a></p>";
	}
 
	$anzahl_url = substr_count($eintrag, 'http://');
	$anzahl_url2 = substr_count($eintrag, 'www.');
	if ($anzahl_url < 2)
	{
		$urlcheck = true;
	}else {
		$urlcheck = false;
	}
	if ($anzahl_url2 < 2)
	{
		$urlcheck2 = true;
	} else {
		$urlcheck2 = false;
	}
 
	if ($link != "Diesen Text bitte nicht ändern!")
	{
		$linkcheck = false;
	} else {
		$linkcheck = true;
	}
 
 
	if ($name && $email && $eintrag && $linkcheck && $urlcheck && $urlcheck2)
	{
 
		#$datum = date("Y-m-d H:i:s");
 
		#$eintrag_gb = mysql_query("INSERT INTO guestbook (datum, name, email, inhalt) VALUES ('$datum','$name','$email', '$inhalt')") or die(mysql_error());
 		$eintrag_gb = true;
		if ($eintrag_gb)
		{
			echo "<script>alert('Eintrag wurde erfolgreich im Gästebuch eingetragen.')</script><br />";
			#echo "<script>{location.href='guestbook.php'}</script>";
		}
	} elseif(!$urlcheck && !$urlcheck2) {
		echo "<script>alert('Ihr Eintrag wurde als Spam identifiziert und nicht ins Gästebuch eingetragen.')</script><br />";
		echo "<script>{location.href='guestbook.php'}</script>";
	}
 
?>
 
Nee gut, da hast du auch wieder recht, aber die Anzeige das es richtig ins GB eingetragen wurde funktioniert ja auch nicht.
Wäre schön wenn es nur dumme Spammer geben würde :-D aber das ist ja leider nicht so, nehme den Hinweis auch raus, das sind eben so Sachen die man selber garnicht so erkennt wenn man das selber am programmieren ist ;-)

Also danke für den Hinweis.
 
... nehme den Hinweis auch raus, das sind eben so Sachen die man selber garnicht so erkennt wenn man das selber am programmieren ist ;-)

Mein Tipp an dich: Wenn du ein Problem mit Spammern hast und deinem Skript ein Beitrag verdächtig ist, dann lass ihn für die Session-ID des Spammers sichtbar aber für alle anderen unsichtbar und schick dir eine Mail mit dem Text und einem Freischaltelink.
 
Mein Tipp an dich: Wenn du ein Problem mit Spammern hast und deinem Skript ein Beitrag verdächtig ist, dann lass ihn für die Session-ID des Spammers sichtbar aber für alle anderen unsichtbar und schick dir eine Mail mit dem Text und einem Freischaltelink.


Wie mache ich das denn, ich weiß blöde Frage aber habe dazu keine Ahnung ;-)
 
Zurück