mbr: Nachtrag: diverse Syntaxfehler im PHP

Beitrag lesen

Hallo Caezar,
habe es gerade ausprobiert: wenn ich deinen PHP-Code per copy&paste genauso übernehme und auf meinem lokalen Server ausführe, bekomme ich diverse Syntaxfehler:

Ich habe mir wirklich überlegt, ob ich diesen "Roman" hier abschicken soll. Schließlich soll hier bei "SELFHTML" ja Hilfe zur Selbsthilfe gegeben werden und nicht irgendwelcher Code vorgekaut werden und zweitens bin ich selbst nur "Hobby PHP Schreiber" und kann auch gar nicht abschätzen, was da evtl. noch für Sicherheitslücken im Script sind. (Dass zumindest der Empfänger hart codiert ist, ist schonmal gut). Also jetzt zu den Fehlermeldungen:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 14

echo"Bitte gehen Sie <a href="javascript:history.back();">zurück</a> und füllen Sie alle Felder aus!";

Hier fehlen vor den Anführungszeichen beim href die Backslashes (siehe das Kapitel zu strings in PHP - speziell der Absatz "double quoted")

echo "Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!";

Parse error: syntax error, unexpected T_VARIABLE in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 35

Hier liegt der Fehler schon in Zeile 34. Es fehlt ein ";"

$Header .= "Content-Type: text/plain; charset=utf-8;"

wird zu

$Header .= "Content-Type: text/plain; charset=utf-8;";

Parse error: syntax error, unexpected $end in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 74

Das bereits vorher erwähnte "else - was?", also einfach eine geschweifte Klammer ergänzt

  
else  
{  

wird zu

  
else  
{  
}  

Notice: Undefined index: Send in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 10

Das Array $_REQUEST enthält keinen Eintrag mit dem Index 'Send' - was daran liegt, dass im HTML der Button "Abschicken" keinen Namen hat; dazu gleich in Punkt 5) - also folgende Änderung:

if($_REQUEST['Send'])

wird zu

if(isset($_REQUEST['Send']))

Jetzt geht das Skript in den else Zweig (siehe Punkt 3)), der aber noch leer ist ==> weisser Bildschirm, also evtl. noch eine Fehlermeldung einbauen. Wenn die Variable $_REQUEST['Send'] nicht vorhanden ist, heißt das: a) Das Formular ist fehlerhaft, oder b) der Nutzer hat das PHP-script direkt aufgerufen

Das HTML Formular ist nicht valide. Außerdem fehlt der Name für den "Abschicken" Button. (im HTML Teil ändern)

<input name="Send" class="button_send" type="submit" value="Abschicken" />

Die Namen im Formular passen nicht zu den Namen im PHP-Script ==> Ich bekomme immer die Fehlermeldung, dass nicht alle Felder ausgefüllt sind. Übrigens: die Fehlermeldung wird als (invalider) HTML Schnippsel ausgegeben (weil das Grundgerüst drumherum fehlt). Der Link mit dem "javascript:history.back();" funktioniert zwar bei mir, ist aber auch keine schöne Lösung

  1. nach Korrektur von 6) für alle Felder ausser dem fileupload kommen noch ein paar Warnings und Notices:

Notice: Undefined index: Anhang in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 54

Notice: Undefined index: Anhang in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 56

Notice: Undefined index: Anhang in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 61

Notice: Undefined index: Anhang in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 63

Warning: fopen() [function.fopen]: Filename cannot be empty in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 63

Notice: Undefined index: Anhang in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 63

Warning: fread() expects parameter 1 to be resource, boolean given in C:\xampp_1.7.7\htdocs\php_experiments\SELFHTML_t=215286&m=1474104.php on line 63

Das überlasse ich mal dir. (Irgendwas muss ja noch "SELF" sein hier)

Der Erfolg (oder Mißerfolg) des Absendens der mail sollte übrigens auch geprüft werden.

  
$erg=mail($Empfaenger, $Mailbetreff, "", $Header);  
if($erg===false)  
{  
        echo "Fehler beim Verschicken mail";  
}  
else  
{  
        echo "Vielen Dank für Ihre eMail!";  
}  

So, wenn alles gut gegangen ist, hat "info@proprint-werbung.de" jetzt von mir (mbr@planet-brueckner.de) eine mail bekommen. Ich hoffe, die Adresse gehört wirklich dir (oder deinen Kunden) und eine einzelne mail wird nicht als zu störend empfunden...

Nimms mir nicht übel, aber es wäre evtl. gut, sich mit den Grundlagen von HTML und PHP zu befassen.

Viele Grüße

mbr