dedlfix: Fehler in "Seite empfehlen"

Beitrag lesen

Hi!

Leider weiß ich nicht wo mein Fehler ist. Irgendeiner einen Tip ?

Mein üblicher Tipp, das error_reporting auf E_ALL zu setzen (und display_errors auf on), kann auch dich weiterbringen. In deinem Fall zeigte er die Lesezugriffe auf Variablen, die nicht existieren.

$url = $_GET['ref'];

Warum erzeugst du eine weitere Kopie des Wertes in $_GET['ref']? Du verwendest $url im weiteren (gezeigten) Verlauf nicht. Die Kopie ist also sinnlos. Außerdem sehe ich lediglich eine einzige Stelle, an der du vermutlich den Wert in $_GET['ref'] hättest verwenden wollen. Selbst dann ist das Erstellen der Kopie mehr Aufwand, als $_GET['ref'] dieses eine Mal vollständig zu notieren.

$regex ="/^"."[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*"."@" ."([a-zA-Z0-9-]+.)+"."([a-zA-Z]{2,4})"."$/";

Einige Internet-Beteiligten sind gerade dabei, beliebige Top-Level-Domains, wie beispielsweise .berlin, einzuführen, und du beschränkst die Anwender hier auf 4 Zeichen. .museum und .travel sind außerdem schon vorhanden.

Und warum zerstückelst du den Regex in mehrere Teilstrings? War der Code ursprünglich mal über mehrere Zeilen verteilt?

echo "Geben Sie eine gültige Sender-Emailadresse ein!<br /><br />";

Selbst wenn sie syntaktisch richtig ist, was du allerdings mit so einem einfachen Regex-Ausdruck nicht prüfen kannst, ist immer noch nicht gesagt, dass auch ein Postfach zur Adresse existiert.

if ($error == true) {

"Wenn es wahr ist, dass $error wahr ist" lässt sich kürzer ausdrücken.

if (!mail($e_email,"Surftipp von ".$_POST['s_name'],$nachricht, "From: ".$s_email)) {

Mal angenommen, du schaffst es, statt $s_email etwas zu nehmen, das der Benutzer ausgefüllt hat, bist du dann ganz sicher, dass der Wert keine Zeilenumbüche enthält und somit mit nur einem Captcha-Knacken mehrfach Spam versendet werden kann?

"Internal Server Error, The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator."

Das deutet darauf hin, dass der Apache von PHP kein ordentliches Dokument übergeben bekommen hat. Genaueres findest du, wie schon gesagt, im Error-Log des Apachen. Wenn da nichts genaues steht, woran das PHP gestorben ist, kannst du versuchen, das error_log in PHP zu konfigurieren, was dir genauere Auskunft zur Ursache liefern sollte.

Lo!