PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formular-skript


barbara0701
23.02.2010, 19:57
Ich habe aus einem Tutorial im Internet ein php-skript das einfach nicht funktionieren will.

<?php

$admin= 'deinname@deine-domain.de';
$admin1= 'empfänger1@andereadresse.de';



$subject1= 'Kontaktformularanfrage von'.$Vorname.' '.$Name;

$message1= 'Name: '.$Anrede.' ';
if ($Titel == "Dr."){
$message1.= $Titel.' ';
}
if ($Titel == "Prof."){
$message1.= $Titel.' ';
}
if ($Titel == "Prof. Dr."){
$message1.= $Titel.' ';
}
$message1.= $Vorname.' '.$Name;
if ($Titel == "Dipl.-Ing."){
$message1.= ', '.$Titel;
}
if ($Titel == "Dipl.-Ing.(FH)"){
$message1.= ', '.$Titel;
}
$message1.= "\n";
$message1.= 'Firma: '.$Firma."\n\n";
$message1.= 'Adresse: '."\n".$Strasse.' '.$Hausnr."\n".$PLZ.' '.$Ort."\n".$Land."\n\n";
$message1.= 'Telefon: '.$Telefon."\n";
$message1.= 'Telefax: '.$Telefax."\n";
$message1.= 'Mail: '.$Mail."\n";
$message1.= 'URL: '.$URL."\n\n";
$message1.= 'Nachricht:'."\n".$Nachricht."\n\n";
$message1.= 'Antwort: '.$Antwort."\n";



$message1.= 'Server: '.'www.deine-domain.de';




$subject2= 'Ihre Anfrage an wen auch immer';

$message2= 'Sehr geehrte';
if ($Anrede == "Herr"){
$message2.= 'r';
}
$message2.= ' '. $Anrede.' ';
if ($Titel == "Dr."){
$message2.= $Titel.' ';
}
if ($Titel == "Prof."){
$message2.= $Titel.' ';
}
if ($Titel == "Prof. Dr."){
$message2.= $Titel.' ';
}
$message2.= $Name.','."\n\n";
$message2.= 'Sie haben beiliegende Anfrage an '.$admin.' geschickt:'."\n\n";

foreach($HTTP_POST_VARS as $name=> $value) {

$message.= "$name:$value\n";

}

$message2.=$message."\n\n".'Wir werden Ihre Anfrage so schnell wie möglich beantworten.'."\n\n\n".'Mit freundlichen Grüßen'."\n\n".' Ihr firmenname-team';


mail($admin, $subject1, $message1, "From: $Mail");
mail($admin1, $subject1, $message1, "From: $Mail");
mail($Mail, $subject2, $message2, "From: $admin");

header('Location: http://www.deine-domain.de/html/danke.html');

?>

Unterstrichen habe ich die Passagen, die ich später mit meinen Daten angepasst habe. Leider erscheinen die Unterstriche nicht im Code-fenster, aber es steht (u )davor und (/u) danach :shy:

Ist der Skript überhaupt tauglich? Ich habe den Eindruck, dass diese Zeile hier falsch ist:

foreach($HTTP_POST_VARS as $name=> $value) {


Php sowie die Pfade zwischen Formular und php-Datei und Danke-Seite sind sonst kein Problem, da ein einfacher Formular-skript ohne Email an den Verfasser einwandfrei funktioniert.

Bevor ich noch weitere Stunden herumteste möchte ich überhaupt wissen, ob der Skript selbst womöglich fehlerhaft ist....

Eilt nicht!

Klaus
23.02.2010, 21:19
Hallo,

das Skript ist so meist auf neuen Servern und aus Gründen der
Sicherheit eigentlich nicht mehr zu gebrauchen.

Ob es (rein technisch) funktioniert ist abhängig von 2 Einstellungen am Server.

1.) register_globals
Wenn das ausgeschaltet ist kann man auf vom Formular übergebene Variablen
nicht mehr einfach mit $Vorname oder $Nachname zugreifen sondern man
muss dafür dann $_POST['Vorname'] und $_POST['Nachname'] verwenden.

http://de3.php.net/manual/de/security.globals.php

2.) register_long_arrays
Wenn das ausgeschaltet ist funktioniert das veraltete $HTTP_POST_VARS
nicht mehr und muss durch $_POST ersetzt werden.

http://de3.php.net/manual/de/ini.core.php#ini.register-long-arrays


Prüfen kann man die Einstellungen des Server mit phpinfo();
Beispiel #1 bei: http://de.php.net/phpinfo


Hier hatten wir das auch schon mal:
http://www.nof-forum.de/probleme_mit_auch_allg_fragen_zu_php_java_javascri pt_datenbanken/url_fuer_kontaktformular-t20455.0.html;msg173688#msg173688

Schon wegen der Sicherheit meine Empfehlung:
http://www.phpbuddy.eu/emails-mit-php-versenden.html

MfG
Klaus

barbara0701
23.02.2010, 21:25
Danke Dir Klaus, das ist sehr interessant. Werde das skript morgen entsprechend anpassen!

$HTTP_POST_VARS = Das hatte mich auch gestört, war mir aber nicht sicher, wie das alles zusammenhängt und ob ich es ohne weiteres mit $_POST ersetzen kann.

Klaus
23.02.2010, 21:33
... man kann je nach Provider die Einstellungen auch selber ändern.
Aus Sicherheitsgründen würde ich das aber nicht machen.

Auch wenn man das Skript auf $_POST umstellt bleibt immer noch das
Problem mit der "Email Injection".

Das hatten wir im NOF-Forum auch schon mal und das war der Punkt
wo ich dann leider nicht mehr weiter helfen konnte.

http://www.nof-forum.de/probleme_mit_auch_allg_fragen_zu_php_java_javascri pt_datenbanken/url_fuer_kontaktformular-t20455.0.html;msg173723#msg173723

Vielleicht schreibt phpBuddy dazu noch was, der kennt sich da super aus.

phpBuddy
23.02.2010, 22:17
Vielleicht schreibt phpBuddy dazu noch was, der kennt sich da super aus.

Hallo,

naja, Du hast ja mein Tutorial zu dem Thema bereits verlinkt, mehr gibt es nicht zu sagen, das nicht schon in diesem Artikel steht. Das Script, so wie es im ersten Beitrag steht, ist eine üble Spamschleuder, die ich persönlich nur über meine Leiche auf einen Server laden würde.

barbara0701
23.02.2010, 22:44
Danke Euch für Eure Hilfe...

barbara0701
24.02.2010, 09:19
Jetzt habe ich einiges gelesen.

OT/
Offenbar gibt es bei strato immer wieder Probleme, die zu Funktionsstörungen führen. Ich bin auch bei strato. Unzufrieden mit dem Provider bin ich nicht, aber schon allein die Tatsache, dass einfache Pakete mod_rewrite nicht unterstützen macht mich nachdenklich. Ist aber ein anderes Thema. :rolleyes:
OT/Ende

Sicherheitsprobleme:
Wie hoch ist die Gefahr, dass man trotz aller Vorsicht eine Spam-Flut auslöst? Wie oft muss man die Skripte überprüfen, um Sicherheitslücken zu vermeiden?

phpBuddy
25.02.2010, 00:53
Sicherheitsprobleme:
Wie hoch ist die Gefahr, dass man trotz aller Vorsicht eine Spam-Flut auslöst? Wie oft muss man die Skripte überprüfen, um Sicherheitslücken zu vermeiden?

Das "wie oft" ist nicht die Frage. Wichtig ist, dass die Benutzereingaben beim erstellen des Scripts ordentlich validiert werden um das Einschleusen von Schadcode/Injections zu verhindern oder zumindest erheblich zu erschweren. Es sind auch einige technische Dinge zu beachten, die zum Versenden von Mails einfach nötig sind (Stichwort: Mail Header), damit die Mails nicht in jedem Filter hängen bleiben und als Spam aussortiert werden. Besonders Seiten die Bestellungen u.ä. über's Web empfangen/versenden um damit Geld zu verdienen können sich wohl nicht erlauben, wegen schlecht programmierter Scripts Aufträge, und somit Geld, zu verlieren.