mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 18:55 Benutzername: Passwort: Auto-Login

Thema: Frage zu Kontaktformularen vom 18.06.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Frage zu Kontaktformularen
Seite: Zurück  1, 2, 3
Autor Nachricht
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Do 21.06.2007 22:36
Titel

Antworten mit Zitat Zum Seitenanfang

Code:
$mail_absender=$_POST['mailaddi'];

Es ist nicht notwendig, $_POST['mailaddi'] in $mail_absender zu speichern.
Du kannst im weiteren Script einfach auf $_POST['mailaddi'] zugreifen.

Zitat:
Außerdem stand vorher in der vorletzten Zeile from:$mail_absender. Daraufhin hat mir das Script die Fehlermeldung gegeben: unexpected ":" in line 7. from und Doppelpunkt also raus, keine Fehlermeldung.

Das erscheint mir recht merkwürdig...
Wenn es sich diese Zeile handelt und die genau so aussah:
Code:
mail(mail_empfaenger, $betreff, $text,"from:$mail_absender");

Dann hätte es da keinen Fehler geben dürfen.
Und der Doppelpunkt darf da in keinem Fall entfernt werden. Dabei handelt es sich um einen Mailheader und der Doppelpunkt ist zwingend notwendig. Ansonsten weiß der Mailclient damit nichts anzufangen.

Zitat:
Leider bleibt jetzt immernoch das "Hauptproblem": Die eMail kommt garnicht bei mir an.

Ich habe dir doch bereits mehrfach geschrieben, daß die Mailfunktion einen Rückgabewert hat und daß du dir diesen ausgeben lassen sollst anstatt ihn zu ignorieren.

Außerdem: Wo testest du? Auf deinem eigenen Rechner oder wirklich auf dem Server deines Hosters?
Auf deinem eigenen Rechner kann das nicht funktionieren. Du hast keinen MTA bzw. Mailserver installiert.


Zuletzt bearbeitet von rob am Do 21.06.2007 22:37, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
cank1090
Threadersteller

Dabei seit: 18.06.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Fr 22.06.2007 20:42
Titel

Antworten mit Zitat Zum Seitenanfang

rob hat geschrieben:
Wenn es sich diese Zeile handelt und die genau so aussah:
Code:
mail(mail_empfaenger, $betreff, $text,"from:$mail_absender");

Dann hätte es da keinen Fehler geben dürfen.
Und der Doppelpunkt darf da in keinem Fall entfernt werden. Dabei handelt es sich um einen Mailheader und der Doppelpunkt ist zwingend notwendig. Ansonsten weiß der Mailclient damit nichts anzufangen.


Komisch, mir hat er nämlich genau den Fehler ausgegeben, dass in der Zeile ein Doppelpunkt (":") falsch/ungültig ist. Als ich es entfernt habe, gab es eben keine Fehlermeldung mehr. Irgendwie bin ich jetzt irritiert Menno! .


rob hat geschrieben:
Ich habe dir doch bereits mehrfach geschrieben, daß die Mailfunktion einen Rückgabewert hat und daß du dir diesen ausgeben lassen sollst anstatt ihn zu ignorieren.


Ich würde ihn dir ja gerne mitteilen; ich weiß aber nicht wie ich das anstellen soll! (entschuldige bitte meine unkenntnis in sachen php....deswegen wende ich mich ja hier in diesem forum an leute die es besser verstehen)

rob hat geschrieben:
Außerdem: Wo testest du? Auf deinem eigenen Rechner oder wirklich auf dem Server deines Hosters?
Auf deinem eigenen Rechner kann das nicht funktionieren. Du hast keinen MTA bzw. Mailserver installiert.


Nene, ich teste nicht zuhause. Ich teste auf nem kostenlosen account von http://www.awardspace.com . Auf dem Server ist auch sendmail aktiviert, hab in der phpinfo nachgeguckt.


Mal ein Vorschlag. Könntest du nicht mal den Code posten, so wie du denkst, dass er korrekt ist? So sieht er ja gegenwärtig aus:

Code:
<?php
$mail_empfaenger="meine@email.de";
$mail_absender=$_POST['mailaddi'];
$betreff="Eine Testmail";
$text="Mein Name ist ".$_POST['Vorname']." ".$_POST['Nachname'].", von Beruf bin ich ".$_POST['Beruf'].".
Rufen Sie mich mal an unter der Nummer ".$_POST['Telefon'].". \n Mit freundlichen Grüssen";
mail($mail_empfaenger, $betreff, $text, $mail_absender);
?>


Dann kann ich auch sehen, was genau du meinst. Wäre sehr nett von dir!

Gruß,
cank1090
  View user's profile Private Nachricht senden
Anzeige
Anzeige
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Fr 22.06.2007 21:53
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Ich würde ihn dir ja gerne mitteilen; ich weiß aber nicht wie ich das anstellen soll!

Du weiß nicht, wie du dir den Rückgabewert einer Funktion ausgeben lassen kannst?

In den meisten Fällen mußt du einfach nur ein echo davor setzen.

Der Rückgabewert von mail() ist von Typ Boolean (also TRUE oder FALSE).
Am besten testest du mal so:
Code:
$check = mail($mail_empfaenger, $betreff, $text, $mail_absender);
if ($check )
  echo "Mail an MTA übergeben.";
else
  echo "Mail konnte nicht an MTA übergeben werden.";


Zitat:
Könntest du nicht mal den Code posten, so wie du denkst, dass er korrekt ist?

Ich hab jetzt eigentlich keine große Lust, dir deinen Code zu schreiben.
Warum kannst du selbst ins PHP-Handbuch schauen und dir alles nötige raus suchen?
Anders lernst du es ja eh nicht...

Aber da ich gerade sowieso nichts besseres zu tun hab:
Code:
<?php
// Script wenigstens ein klein wenig gegen Header-Injection sichern
$absender = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $_POST['mailaddi'] );
$empfaenger = "meine@email.de";
$betreff = "Eine Testmail";
$nachricht = "Mein Name ist {$_POST['Vorname']} {$_POST['Nachname']}, von Beruf bin ich {$_POST['Beruf']}. Rufen Sie mich mal an unter der Nummer {$_POST['Telefon']}.\nMit freundlichen Grüssen\n";

$header = "MIME-Version: 1.0\r\n";
$header.= "Content-type: text/html; charset=iso-8859-15\r\n";
$header.= "Content-Transfer-Encoding: 8bit\r\n";
$header.= "From: $absender\r\n";
$header.= "Reply-To: $absender\r\n";
$header.= "X-Mailer: PHP/" . phpversion() ."\r\n";

$check = mail( $empfaenger, $betreff, $nachricht, $header );
if ( $check == true )
{
   echo "Die Mail wurde erfolgreich an den MTA übergeben.";
}
else
{
   echo "Fehler. Die Mail konnte nicht verschickt werden.";
}
?>


Dabei ist mir aufgefallen, daß du in $text noch immer was mit deinen Anführungszeichen falsch gemacht hast.
Wundert mich also nicht, daß es nicht funktioniert. Hätte aber eigentlich eine Fehlermeldung geben müssen...
Setzt da doch einfach geschweifte Klammern und deine Variablen. Dann brauchst du deine Strings nicht zu beenden und zu verknüpfen. So machst du nicht so leicht Fehler dort.

Dann habe ich jetzt wenigstens einen kleinen Schutz gegen einen Angriff per Header-Injection eingebaut.
Sinnvoller wäre es allerdings noch weitere Prüfungen einzubauen und in jedem Fall jegliche Zeilenumbrüche raus zu filtern.
Aber für's erste sollte das jetzt mal reichen. Besser als nichts und ggf. könntest du es noch später erweitern.
Die zusätzlichen Header, die mail() übergeben werden, werden erst von PHP geparst, bevor sie an den MTA übergeben werden.
Daher könnten die eigentlich (nach dem SMTP-RFC) korrekten Umbrüche (\r\n) eventuell zu doppelten Umbrüchen führen. Sollte das der Fall sein, mußt du \r\n im Script durch \n ersetzen.

Naja, und ich habe jetzt iso-8859-15 als verwendete Zeichenkodierung angegeben.
Du solltest also auch diese Kodierung einsetzen, wenn du das Dokument mit deinem Editor speicherst.
Außerdem sollte das Dokument vom Server mit dieser Kodierung ausgeliefert werden.
Wenn du mit einer anderen Kodierung arbeitest, dann ändere das in dem Script entsprechend ab.
Wenn du keine Ahnung davon hast und damit nichts anfangen kannst, dann schlag in SelfHTML und/oder der Wikipedia nach oder hoffe einfach, daß es die richtige Kodierung ist und deine Umlaute/Sonderzeichen korrekt ankommen...
  View user's profile Private Nachricht senden
cank1090
Threadersteller

Dabei seit: 18.06.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst So 24.06.2007 14:00
Titel

Antworten mit Zitat Zum Seitenanfang

Wow, vielen dank schonmal dafür! *Thumbs up!*

Ich glaube jetzt sind wir dem Fehler einen Schritt näher. Das Skript antwortet nämlich tatsächlich mit "Fehler. Die Mail konnte nicht verschickt werden.". Kann ich also davon ausgehen, dass es am Sever liegt? Wie kann man die Fehlerursache genauer spezifizieren?
  View user's profile Private Nachricht senden
 
Ähnliche Themen Rechtliche Frage bzw. einfach ne Frage :)
Frage nach der Frage
cms frage!
Frage
frage...
SEO Frage
Neues Thema eröffnen   Neue Antwort erstellen Seite: Zurück  1, 2, 3
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.