BITTE Hilfe bei Gästebuch

  • Themenstarter Themenstarter Raptor72
  • Beginndatum Beginndatum
So, habe meinen Code eben auch mal formatiert und alles ordentlich gemacht, für mich sieht alles logisch aus aber wenn ich richtige Daten eingebe bekomme ich keine Meldung das der Eintrag funktioniert hat, sowie habe ich den Hinweis auf Spam rausgenommen, einfach nur der Hinweis das der Beitrag nicht eingetragen wurde, aber den bekomme ich auch nicht wenn ich 2 www oder http eingebe, die anderen Funktionen, also falsche eMail, kein Text oder Name funktionieren aber soweit.

Bin hier echt am "verzweifeln" weil ich absolut keinen Schimmer mehr habe woran es liegt :-(
 
Soooo ;-) ,

habe jetzt lange nochmal probiert und so weiter und so wie es ausschaut läuft es jetzt richtig, nur wenn ich doppelt www oder httü eingebe dauert es etwas bis eine Meldung komme aber es kommen bis jetzt immer die richtigen Meldungen :D

Nur wenn ich nur www's oder http's eingebe, dann kommt erst Name vergessen was ja auch richtig ist, dann aber danach gleich Kein Eintrag erfolgt, das ist der einzige Fehler der noch da ist ;-)

Vieleicht habt ihr ja noch Vorschläge für Verbesserungen ;-)

Ich danke euch auf jeden Fall schonmal für die tolle Hilfe bis jetzt und werde euch bestimmt in Zukunft häufiger nerven denn dieses Forum finde ich bis jetzt ist das Beste ;-)

Sven

Code:
<?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 "<p align='center'>Sie haben vergessen Ihren Namen anzugeben.</p><br />";
	  
	}
    if (!$eintrag) 
	{ 
	  echo "<p align='center'>Sie haben vergessen Ihren Text einzugeben.</p><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 "<p align='center'>Bei der Eingabe der Emailadresse ist Ihnen wahrscheinlich ein Tippfehler unterlaufen.</p><br />";
        $email = false;
    }
    if (!$name or !$eintrag or !$email) 
	{ 
      echo "<script>alert('Bitte korrigieren Sie die fehlenden Angaben.')</script><br />";
	  echo "<script>{history.back()}</script>";
    }

    $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 aendern!") 
	{
      $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 == true) 
	{
      echo "<script>alert('Eintrag wurde erfolgreich im Gästebuch eingetragen.')</script><br />";
      echo "<script>{location.href='guestbook.php'}</script>";
    }
  } elseif($linkcheck == false or $urlcheck == false or $urlcheck2 == false) {
      echo "<script>alert('Kein Eintrag erfolgt !!')</script><br />";
      echo "<script>{location.href='guestbook.php'}</script>";
  }

?>


:):):):):):):):):)
 
Also ohne dich frustrieren zu wollen. Mir fällt noch einiges auf.

Alle Variablen, die du mit strip_tags() behandelst, müssen noch mit mysql_real_escape_string() behandelt werden, bevor du sie in die Datenbank schreibst. Zur Sicherheit.

Warum prüfst du auf Gültigkeit der E-Mail, wenn man doch eine Fantasie-Adresse eingeben kann, wenn sie den Regeln entspricht. Heute gibt doch niemand mehr freiwillig irgendwo seine E-Mail an damit sie irgendwo im Netz erscheint, wo sie dann zugespammt wird.


PHP:
if (!$email) 
{ 
        $email=true; 
}
Was ist das lustiges?

Übrigens würde ich diese ganzen Schreibweisen gegen
PHP:
if (empty($email)) ...

austauschen.


und $eintrag_gb ist eigentlich nur ein Handle.
PHP:
if (mysql_affected_rows($eintrag_gb) > )
Wäre in meinen Augen die korrekte Version.

Und zwei Javascripts hintereinander kannst du auch in ein <script>...</script>-Tag packen. Nicht vergessen, sie mit ; zu trennen.

Das soll erst mal reichen. :-)
 
Keine Angst du frustrierst mich nicht, bin ja sozusagen noch Anfänger und bin immer offen für Tips und Anregungen.

Naja, die eMails sollen im Grunde dafür da sein das man die Leute mal anschreiben kann oder Neuigkeiten schicken kann wenn welche da sind, dazu die eMails.

mysql_real_escape_string() , das werde ich mir mal durchlesen und dann auch machen wenn es der Sicherheit dient, danke für den Tip :-)

Klar, sowas wie z.B. die eMail abfrage ob was drin ist oder nicht kann man sehr viel einfacher machen wenn man weiß wie es geht, wußte aber nicht das es mit empty geht ;-)

Aber wie sagt man so schön, ich liebe Spaghetti's also liebe ich auch Spaghetti Code, ausserdem findet sich ein Hacker nicht so schnell zu recht, ist auch eine Art Schutz dann *lach* :D:D:D:D
 
Zurück