Moin,
Ich bin momentan noch ein relativer PHP Neuling, das heißt ich kann's zwar lesen + verstehen, jedoch nicht schreiben.
hmm, der Weg vom "lesen und verstehen" zum Schreiben ist eigentlich ein sehr kurzer.
Ich habe das passende PHP Skript dafür von einem bekannten bekommen und nach meinen Wünschen ein wenig drin herumgepfuscht.
Und dabei war deinem Bekannten wohl nicht bewusst, dass das Script gravierende Mängel aufweist. Im Wesentlichen, dass Benutzereingaben ($_POST['betreff'], $_POST['email']) ungeprüft verarbeitet werden. Ich kann deinem Script ohne weiteres "Best Viagra in town!\nCC: somebody@example.org" als Betreff übergeben, und bekomme meine SPAM-Mail damit verschickt, ohne dass ich identifizierbar bin. Stattdessen stehst du dann als der böse Bube da.
Nun habe ich das Kontaktformular hochgeladen und alles gemäß der Vorschriften ausgefüllt und auf den "absenden" button geklickt. Die Nachricht dass meine Anmeldung versendet wurde wurde auch angezeigt
Das beantwortet die Frage, die ich als erstes stellen wollte - ob auf diesem Webspace überhaupt PHP verfügbar ist, und ob das Script wirklich durch den PHP-Parser kommt. Okay.
jedoch erhalte ich die Mail mit den Informationen nicht. Ich habe schon mehrere verschiedene Emailadressen ausprobiert und bei keiner klappt es.
Felix hat schon zwei wichtige Punkte genannt: Du unterdrückst eventuell informative Fehlermeldungen mit dem vorangestellten '@', und warum die Mail nicht zugestellt wird, dürfte am ehesten anhand von Log-Einträgen des Servers herauszufinden sein. Dazu müsstest du dich aber vermutlich mit dem Admin in Verbindung setzen.
Zusätzlich zum Unterdrücken der Fehlermeldung ignorierst du auch noch den Rückgabewert von mail(), der false ist, wenn der Mailversand aus formalen Gründen (keine Berechtigung, kein Mailserver konfiguriert) nicht möglich ist.
if ($_POST) {
$vorname = $_POST['vorname'];
$nachname = $_POST['nachname'];
$betreff = $_POST['betreff'];
$nachricht = $_POST['nachricht'];
$email = $_POST['email'];
Das reine Umkopieren von Variablenwerten ist sinnlos. Aber es bekäme einen Sinn, wenn du dabei die Eingaben auf bestimmte Kriterien überprüfen würdest. $_POST['vorname'] und $_POST['nachname'] sind in deinem Fall unkritisch, weil sie nur im Mail-Text landen; $_POST['nachricht'] verwendest du nicht einmal. Dafür aber ein paar andere Variablen, die gar nicht definiert sind ($alter, $fbsince, $sponsors).
$_POST['betreff'] und $_POST['email'] landen aber in Mail-Headerzeilen. Da wäre das allermindeste: Sicherstellen, dass sie keine Zeilenumbrüche enthalten. Sonst ist nämlich das möglich, was ich oben schon angedeutet habe!
Abgesehen davon greifst du einfach auf die übergebenen Parameter zu, ohne zu fragen, ob sie *wirklich* übergeben wurden. Was ist, wenn kein Betreff oder keine Absenderadresse da ist?
$text = "Hallo,\n Sie haben eine neue Anmeldung von $vorname $nachname erhalten:\n\n
====\Vorname: $vorname<br>Nachname: $nachname<br>Emailadresse:$email<br>Alter:$alter<br>FB seit:$fbsince<br>Sponsoren:$sponsors\n====\n\nSie können $vorname $nachname unter dieser $email erreichen.";
Warum setzt du in einer Mailnachricht <br> ein? Du hast nirgends angegeben, dass du HTML-Mails verschicken willst, es gilt also der Default-Typ text/plain (und das ist auch gut so).
So long,
Martin
--
Wissen erwirbt man, indem man immer das Kleingedruckte sorgfältig liest.
Erfahrung bekommt man, indem man das nicht tut.