mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 08:51 Benutzername: Passwort: Auto-Login

Thema: Formmailer tunen - php vom 04.04.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Formmailer tunen - php
Seite: 1, 2  Weiter
Autor Nachricht
Fuzy
Threadersteller

Dabei seit: 14.01.2003
Ort: PW
Alter: -
Geschlecht: Männlich
Verfasst Fr 04.04.2008 12:34
Titel

Formmailer tunen - php

Antworten mit Zitat Zum Seitenanfang

Hi ich nochmal:

ich möchte gern meinen Formmailer etwas aufmotzen, kenn mich in php nicht so aus!

hier der code:

Code:
<?php

### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'ttt@wttt.de';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom       = '"thema" <ttt@gtt.net>';

# Welchen Betreff sollen die Mails erhalten?
$strSubject    = 'Anfrage ttt';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.xxx.de/partner/danke.html';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter  = ":\t";

### Ende Konfiguration ###

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}

?>


das wird ausgegeben:
Name,Vorname: name
e-Mail:: ittt@tottt.de
Anfrage: Ja, ich möchte mich im Rahmen einer Bildungspartnerschaft engagieren. Bitte senden Sie mir die nötigen Unterlagen.
Rückruf: Ich habe noch Fragen und bitte Sie um Rückruf.
Kommentar: Blabla


1. möchte ich gern leerzeilen zwischen den zeilen.
2. Eine Anrede (sehr geehrte damen und herren)

gruß Fuz[/code]
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Fr 04.04.2008 13:41
Titel

Antworten mit Zitat Zum Seitenanfang

Code:

if($_POST)
{
 $strMailtext = "Sehr geehrte Damen und Herren\n\n";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n\n";
  }
 }


falls du die anrede woanders hin haben willst, mussr du wohl $strName abfragen...


Zuletzt bearbeitet von pixelpapst303 am Fr 04.04.2008 13:42, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Smooth-Graphics

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 04.04.2008 13:42
Titel

Antworten mit Zitat Zum Seitenanfang

Zeilenumbruch mit einem weiteren "\n" einfach.
Und für die Anrede, naja da nimmste halt die POST Variable und hängst der vornedran noch die Anrede hin und gut is... *zwinker*
Oder nimmst die Daten der POST-Content VAriable und schreibst das + Anrede in ne neue die du dann in die mail() Funktion nimmst...

//edit: ähm ja. *zwinker*


Zuletzt bearbeitet von Smooth-Graphics am Fr 04.04.2008 13:43, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Fr 04.04.2008 22:09
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
ich möchte gern meinen Formmailer etwas aufmotzen

Das solltest du auch unbedingt tun, allerdings nicht so, wie du denkst.
Das Script ist anfällig für einen Angriff per Email-Header-Injection.
Dein Hoster wird sich bedanken, wenn über dein Script die ersten Tausend Spammails verschickt wurden.

Alle Daten, die von außen an dein Script übergeben werden müssen zwangsläufig als böse angesehen werden.
Diese Daten müssen alle geprüft und ggf. bereinigt werden.
Filtere in jedem Fall Zeilenumbrüche (dadurch werden Mailheader voneinander getrennt).

Ich hab dazu schon mehr als einmal was geschrieben... --> Suchfunktion
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 04.04.2008 23:08
Titel

Antworten mit Zitat Zum Seitenanfang

Wo siehst du hier denn die Möglichkeit für eine Header-Injection? Nur der Mailbody entsteht aus User Eingaben.
Oder übersehe ich irgendwas oder sehe irgendwas falsch?


Zuletzt bearbeitet von m am Fr 04.04.2008 23:09, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Sa 05.04.2008 23:13
Titel

Antworten mit Zitat Zum Seitenanfang

Ja, m, du hast Recht. Die Mails gehen ja von einem festgelegten Absender an den gleichen Empfänger...
Ich hab nur gesehen, daß $_POST zerlegt wird und dachte, diese Werte würden dann später an mail() übergeben werden.
Naja, werden sie ja auch... aber da stehen weder Absender noch Empfänger drin...
Da hab ich nicht genau hingesehen.

Aber trotzdem ist das Script noch ein wenig unschön. Da würde ich noch ein paar Kleinigkeiten ändern.
Sollte ein Fehler auftreten, bricht die() das Script ab und die HTML-Seite wird nicht mehr zuende geschrieben. Es gibt dann keine schließenden Tags wie </body> oder </html> mehr. Damit hat man invaliden Code. Die Fehlerbehandlung mit die() sollte so nur zu Testzwecken eingesetzt werden, nicht aber im wirklichen Betrieb.

Außerdem sollten noch zusätzliche Header übergeben werden. Wenn so eine Mail ankommt, dann muß der Mailclient raten, welche Zeichenkodierung verwendet wurde. Die sollte man unbedingt mit angeben.
Also z.B.:
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/plain; charset=iso-8859-1' . "\r\n";
(Mailheader müssen laut SMTP-RFC außerdem mit \r\n getrennt werden.)
Ich würde wahrscheinlich auch noch ein wordwrap() auf den Mailtext anwenden, aber das ist eigentlich nicht so wichtig.


Zuletzt bearbeitet von rob am Sa 05.04.2008 23:14, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Fuzy
Threadersteller

Dabei seit: 14.01.2003
Ort: PW
Alter: -
Geschlecht: Männlich
Verfasst Mi 09.04.2008 10:35
Titel

Antworten mit Zitat Zum Seitenanfang

rob hat geschrieben:
Ja, m, du hast Recht. Die Mails gehen ja von einem festgelegten Absender an den gleichen Empfänger...
Ich hab nur gesehen, daß $_POST zerlegt wird und dachte, diese Werte würden dann später an mail() übergeben werden.
Naja, werden sie ja auch... aber da stehen weder Absender noch Empfänger drin...
Da hab ich nicht genau hingesehen.

Aber trotzdem ist das Script noch ein wenig unschön. Da würde ich noch ein paar Kleinigkeiten ändern.
Sollte ein Fehler auftreten, bricht die() das Script ab und die HTML-Seite wird nicht mehr zuende geschrieben. Es gibt dann keine schließenden Tags wie </body> oder </html> mehr. Damit hat man invaliden Code. Die Fehlerbehandlung mit die() sollte so nur zu Testzwecken eingesetzt werden, nicht aber im wirklichen Betrieb.

Außerdem sollten noch zusätzliche Header übergeben werden. Wenn so eine Mail ankommt, dann muß der Mailclient raten, welche Zeichenkodierung verwendet wurde. Die sollte man unbedingt mit angeben.
Also z.B.:
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/plain; charset=iso-8859-1' . "\r\n";
(Mailheader müssen laut SMTP-RFC außerdem mit \r\n getrennt werden.)
Ich würde wahrscheinlich auch noch ein wordwrap() auf den Mailtext anwenden, aber das ist eigentlich nicht so wichtig.


danke, leider hört sich das alles toll an wenn man es denn versteht. Muß die Seite mit dem Formular heute noch ins netzt setzen, aber schreibt einem schon ein fertiges script?! Keiner! ich versuch mich mal durchzufrickeln, ansonsten google ich mir ein fertiges.
  View user's profile Private Nachricht senden
Fuzy
Threadersteller

Dabei seit: 14.01.2003
Ort: PW
Alter: -
Geschlecht: Männlich
Verfasst Mi 09.04.2008 10:39
Titel

Antworten mit Zitat Zum Seitenanfang

Code:
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/plain; charset=iso-8859-1' . "\r\n";


wo pack ich das denn hin in meinem schnipsel?
  View user's profile Private Nachricht senden
 
Ähnliche Themen php-Formmailer tunen
Gif Animation tunen
Photoshop tunen
[Suche] Bildbearbeitungssoftware zum "Autos tunen"
php formmailer
Formmailer
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
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.