BITTE Hilfe bei Gästebuch

  • Themenstarter Themenstarter Raptor72
  • Beginndatum Beginndatum
R

Raptor72

Habe mal wieder eine Frage und zwar bin ich dabei für eine Homepage ein Gästebuch mit Spamschutz zu programmieren und auch wenn einige jetzt bestimmt sagen ist doch leicht, ich bin aber immernoch (leider) Anfänger weil leider nicht die Zeit um mich intensiv hinzusetzen und zu lernen.
Daher weiß ich mal wieder nicht weiter bzw. weiß jetzt nicht wo der Fehler liegt.
Eigentlich soll nur dann das ALERT bei Spam losgehen wenn es wirklich so ist, aber er zeigt ihm mir sozusagen immer an plus die normale Information das in den Felden evtl. was fehlt.
Der Eintrag klappt problemlos ausser das das ALERT gern auf der angezeigten Seite entstehen soll und nicht auf einer leeren weißen Seite.
Ansonsten funktioniert das aber problemlos, nur wenn ich in irgendeiner Zeile keinen Eintrag mache zeigt er mir immer auch diesen SPAM ALERT an, obwohl ich noch nichtmal ein doppeltes www oder http:// stehen habe,

Woran liegt das ****

Ich hoffe ihr versteht wie ich das meine


PHP:
<?php
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 />";}

if (ereg("^([a-zA-Z0-9\.\_\-]+)@([a-zA-Z0-9\.\-]+\.[A-Za-z][A-Za-z]+$)", $email) 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) {

$eintrag_gb = mysql_query("INSERT INTO guestbook (name, email, inhalt) VALUES ('$name','$email', '$inhalt')");
echo 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(!$linkcheck && !$anzahl_url && !$anzahl_url2) {
echo "<script>alert('Ihr Eintrag wurde als Spam identifiziert und nicht ins Gästebuch eingetragen.')</script><br />";
echo "<script>{location.href='guestbook.php'}</script>";
}

?>
 
Zuletzt bearbeitet von einem Moderator:
1.) Achte auf Groß-/Kleinschreibung!
2.) Packe deinen Code in BB-Codes: [code=php]Dein Code![/code]

Dann können wir dir helfen.
 
-Bitte poste deinen Code in [code=php] [/code] Tags.
-Bei assoziativen Arrays setzt man den Index in Anführungszeichen. $_POST['feld'] statt $_POST[feld]
 
Was steht denn in deinem $_POST['Feld']?
Wenn dort was anderes wie "Diesen Text bitte nicht ändern" steht wird dieser Block ausgeführt:

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

und der Spam-Alert wird ausgegeben wenn "linkcheck" false ist.
Hier wäre noch das Formular wichtig.
 
Fangen wir erstmal langsam an:

Was willst du mit diesem Code erreichen:

PHP:
$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;}

Bist du dir im klaren, das

PHP:
elseif(!$linkcheck && !$anzahl_url && !$anzahl_url2) {

in $anzahl_url und $anzahl_url2 die Werte false oder 0 drin stehen müssen, das diese Bedinunge zutreffend ist?

Wann soll diese Spamwarnung denn nun genau erscheinen (unter welchen Bedingungen)?
 
Das ist ein Ausschnitt von dem Formular bzw. von der Seite wo das Formular drin ist.
Da ist es meiner Meinung nach richtig programmiert :-)

Das formatieren des Codes ging vorhin nicht weil ich es erst als Gastzugang geschrieben hatte, war also noch nicht angemeldet hier ;-)

Code:
 <td width="522" rowspan="6" valign="top" background="backgrounds/backbig.JPG" bgcolor="#FFFFFF">

     <p align="center" class="Stil1"><font size="4"><b>Hier k&ouml;nnen Sie ihre Meinung schreiben !</b></font></p>

        <form action="gbeintrag.php" Method="post">
        <p align="center" class="Stil5">Ihr Name :</p>
        <p align="center"><input name="name" size="40" /></p>
        <p align="center" class="Stil5">E-Mail :</p>
        <p align="center"><input name="email" size="40" /></p>
        <p align="center" class="Stil5">Inhalt :</p>
        <p align="center"><textarea name="inhalt" cols="60" rows="12" wrap="physical" style="background-image:url(backgrounds/gbback.jpg)"></textarea></p>
        <p align="center"><input name="Feld" class="nuescht" type="text" value="Diesen Text bitte nicht ändern!" /></p>
        <p align="center"><input type="submit" value="Absenden" />
        <input type="reset" value="Doch nicht!" /></p>
       </form>
       <p align="center"><a href="gbausgabe.php" class="Stil1"><font size="5">Eintr&auml;ge anzeigen !</font></a></p>
    </td>
   </tr>
 
Die Spamwarnung soll dann erscheinen wenn mehr als einmal in dem Text das WWW oder HTTP:// steht.

Daher habe ich ja die Abfrage wenn es weniger als 2 sind das dann der Wert True geschrieben wird, ansonsten false.
 
Hier wird dein Hund begraben sein:

PHP:
elseif(!$linkcheck && !$anzahl_url && !$anzahl_url2) {
echo "<script>alert('Ihr Eintrag wurde als Spam identifiziert und nicht ins Gästebuch eingetragen.')</script><br />";
echo "<script>{location.href='guestbook.php'}</script>";
}

muss heissen:
PHP:
elseif(!$linkcheck && !$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>";
}
 
Zurück