[GastForen Programmierung/Entwicklung PHP und MySQL responseMailer

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

responseMailer

troll_13
Beiträge gesamt: 39

13. Feb 2012, 18:20
Beitrag # 1 von 4
Bewertung:
(1527 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo
Ich habe ein Problem mit einem Antwort-Mailer. Der Kunde gibt mit einem Formular eine Bestellung auf. Dieses Formular wird zwar ausgeliefert, aber weder in html, noch kommen die Variablen mit (ich möchte den Formularinhalt bekommen: Was für Schokolade und was für Früchte hat er bestellt). Was habe ich für einen Fehler in dem Code?
Danke im Voraus für einen Tipp!
Code
<?php 
//Empfänger aus Formular

$empfaenger = $_POST["mail"];
$betreff = 'Bestellbestätigung';


// Nachricht
$nachricht = '
<html>
<head>
<title>Bestellbestätigung</title>
</head>
<body>
<p>Du hast folgende Angaben gemacht:</p>
<table>
<tr>
<th>Name</th><th>Vorname</th><th>Jahrgang</th><th>Jahr</th>
</tr>
<tr>
<td>$_POST["schoggi"]</td><td>3.</td><td>$_POST["frucht"]</td><td>$_POST["computer"]</td>
</tr>
</table>
</body>
</html>
';

$_SERVER['REQUEST_METHOD'] === "POST";

// für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
// zusätzliche Header
$header .= 'From: Bestellbestätigung <[email protected]>' . "\r\n";


// verschicke die E-Mail
mail($empfaenger, $betreff, $nachricht, $header) or die("Die Mail konnte nicht versendet werden.");
header("Location: danke.html");
header("Content-type: text/html; charset=utf-8");
?>

X

responseMailer

Pozor
Beiträge gesamt: 892

13. Feb 2012, 22:04
Beitrag # 2 von 4
Beitrag ID: #489808
Bewertung:
(1503 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Troll,

als erstes, Du öffnest Spamer Tür und Tor mit deinem Script!

Die Empfänger Emailadresse als POST Parameter zu akzeptieren ist
grober Unfug und eine Absicherung muss eingebaut werden.

Ansonsten kann man an beliebige Emailadresse Emails versenden.
Zwar mit deinem HTML aber wiederum beliebigen Inhalt deiner Variablen.

z.B. Prüfe den HTTP_REFERER in $_SERVER wobei auch dies sehr einfach gefaked
werden kann.
Setze in der Session eine Variable, timestamp die ein Emailversand nur einmal zulässt.
-> beim Versand löschen und nur versenden wenn vorhanden.
etc.

Am besten wäre es wenn der User ein Konto hat und du an die im Konto registrierte Email das Email versenden würdest ohne die Email über POST Parameter zu übermitteln...

Diese Zeile macht gar nix:
$_SERVER['REQUEST_METHOD'] === "POST";



Zu deiner eigentlichen Frage:
$nachricht = '... $_POST["schoggi"] ...';
Der String wird genau so übernommen, da er nicht verarbeitet wird.

So wird der String verarbeitet:
$nachricht = "... ".$_POST["schoggi"]." ...";


Gruss Stefan


"KISS - KEEP IT SIMPLE, STUPID"
PHP Documentation Download


als Antwort auf: [#489790]

responseMailer

troll_13
Beiträge gesamt: 39

14. Feb 2012, 10:53
Beitrag # 3 von 4
Beitrag ID: #489845
Bewertung:
(1453 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Herzlichen Dank Stefan!
Nach ein bisschen üben, habe ich es geschafft. Aber wie erstelle ich das nun mit dem?

Zitat Setze in der Session eine Variable, timestamp die ein Emailversand nur einmal zulässt.
-> beim Versand löschen und nur versenden wenn vorhanden.
etc.

Was für ein Code wäre das? Habe ich nicht verständlich gefunden im Netz. Und ich sollte das ja in dem Fall schon einbauen.
Vielen Dank!


als Antwort auf: [#489808]

responseMailer

Pozor
Beiträge gesamt: 892

17. Feb 2012, 23:45
Beitrag # 4 von 4
Beitrag ID: #490263
Bewertung:
(1407 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Sessions in PHP starten mit session_start (nur mit cookies erlauben).

Danach kannst Du z.B. auf der Absender-Seite beim Aufruf folgendes setzen:
Code
$_SESSION['validation'] = time(); 


Auf dem Empfänger Script dann testen mit:
Code
if($_SESSION['validation'] > time() - 900) 
{ //15min zeit zum absenden, danach wird alles verworfen
//sende Email
unset($_SESSION['validation']); //token löschen
}
else
{
//sende email nicht -> fehlermeldung ausgeben
}

Das ist was sehr einfaches und unterbindet den Missbrauch nur bedingt.
Dürfte aber für den Anfang reichen (man muss die Absender Seite Aufrufen und
cookies aktiviert haben um Emails versenden).

Noch besser wäre da ein Captcha um echte User von Maschinen zu unterscheiden.


Gruss Stefan


"KISS - KEEP IT SIMPLE, STUPID"
PHP Documentation Download


als Antwort auf: [#489845]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
09.09.2021 - 17.12.2021

Digicomp Academy, Zürich
Donnerstag, 09. Sept. 2021, 13.00 Uhr - Freitag, 17. Dez. 2021, 19.00 Uhr

Lehrgang

Steigen Sie in die Welt des Publishings ein und erlangen Sie die Zertifizierung von Publishing NETWORK. Lernen Sie in diesem Lehrgang Druckmedien professionell zu erarbeiten, druckfertige PDFs zu erstellen und CI/CD-Vorgaben umzusetzen.

Preis: 6'300.– zzgl. 7.7% MWST
Dauer: 18 Tage(ca. 126 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberater AT digicomp DOT ch