Seite 1 von 1

php-Anfängerin hat Frage

Verfasst: 08.05.2007, 12:29
von lala
Hallo,

ich fange gerade an, mich in php einzuarbeiten. Möchte auf eine meiner Seiten ein Formular einbauen, bei dem verschiedenen Felder vom User ausgefüllt werden müssen. Klappt auch eigentlich alles, ABER:

<form action="mailto:abc@meine-domain.de" method="post" enctype="text/plain"> ....

Wenn die Leute auf "Absenden" klicken, wird das über deren email-Programm versendet. Da kommen dann die dollsten Browsermeldungen :cry:

Wie mache ich das, dass es gleich versendet wird wie es bei vielen anderen Formularen auf anderen Webseiten auch ist?

Liebe Grüße

lala

Verfasst:
von

Verfasst: 08.05.2007, 12:34
von Alpinist
Les Dir das alles (!) mal durch: https://de.selfhtml.org/html/formulare/definieren.htm
Und vergiss sie nicht zu Bookmarken ;-)

Kurzfassung: Schweinereien wie Formulare vom Browser per eMail macht man nicht ;-)

Grüße

Verfasst: 08.05.2007, 12:42
von Andreas I.
Du musst die mail()-Funktion von PHP nutzen: https://de3.php.net/mail

Verfasst: 08.05.2007, 12:45
von Datibesol
Probier mal Folgendes:

Code: Alles auswählen

<?php

if &#40;$_POST&#41;  &#123;
  mail &#40; 'deine@mailadresse.de', 'Neue Nachricht von Webseitenbesucher', $_POST&#91;'mitteilungstext'&#93; &#41;
&#125;
else  &#123;
  print '<form method="post">';
  print '<textarea name="mitteilungstext">';
  print '</textarea>';
  print '<input type="submit" value="Mitteilung verschicken">';
  print '</form>';
&#125;

?>
Das zeigt ein Formular an. Wenn jemand einen Text eintippt und das Formular abschickt, wird an deine@mailadresse.de eine Mail mit dem Betreff 'Neue Nachricht von Webseitenbesucher' verschickt. Der Inhalt der Mail ist das, was ins Formularfeld "mitteilungstext" eingetippt wurde.

Verfasst: 08.05.2007, 12:50
von Alpinist
Aber immer schön aufpassen, was Du wie in die mail() Funktion schreibst, da Dein Formular sonst schnell zum Spamversand genutzt werden wird.
https://de.wikipedia.org/wiki/E-Mail-Injektion

Grüße

Verfasst: 08.05.2007, 13:02
von Datibesol
Und was jeder PHP-Neuling einmal tun sollte:
Das Buch "PHP Sicherheit" ( https://www.amazon.de/PHP-Sicherheit-PH ... 3898643697 ) einmal komplett durchlesen.

Verfasst: 08.05.2007, 15:06
von lala
@all

Vielen Dank für Eure Tips. Jetzt klappt fast alles. Einziges Problem ist Folgendes:

Im Quelltext befindet sich <input type="hidden" name="return_link_url" value="https://www.meinedomain.de/danke"> als Zielseite nach dem Absenden. Diese url hat keine Dateiendung wie html oder php, da der gesamze Webauftritt mit Wordpress erstellt ist und Wordpress ohne diese Dateiendungen arbeitet.

Leider wird nun meine Danke-Seite nach dem Absenden nicht angezeigt. Wie kann man das Problem nun lösen?

Liebe Grüße

lala

Verfasst: 08.05.2007, 15:12
von chrizz
hi lala,
ich gehe davon aus, dass auf der dankeseite alles gleich ist, bis auf das statt dem formular ein "danke für ihre nachricht" angezeigt wird, oder?
Das kannst du auch beides zusammenfassen. Dafür sind php seiten ja so schön dynamisch.
Würde dann ungefähr so aussehen:
Wenn Formular noch nicht abgesendet, dann zeige das Formular an, sonst zeige die danke nachricht an.
also im Codeschnipsel von Datibesol kommst es entweder vor oder nach die mail() funktion.

falls du dann noch mehr zeit und lust hast, schau dir mal an, wie fehler (Name vergessen oder so) abgefangen werden können und wie bereits erwähnt, E-Mail Injection verhindert werden kann.

Viele Grüße

Verfasst: 08.05.2007, 15:17
von lala
So, jetzt habe ich auch das hinbekommen. Ihr weist mich alle auf das Problem e-mail-Injection hin. Habe jetzt den geposteten Link zu Wikipedia durchgelesen. Da steht:

"Die einzig wirksame Maßnahme ist das Unterbinden von Zeilenumbrüchen in Variablen, die später in den Header der E-Mail eingefügt werden sollen. Ob man dabei einen Mehrzeiligen String auf die erste Zeile kürzt oder bei der Feststellung von Zeilenumbrüchen die Verarbeitung des Programmes unterbricht, ist dem Programmierer dabei freigestellt."

Na das kapier ich nu wieder nicht :oops:

Verfasst: 08.05.2007, 15:22
von Alpinist

Verfasst: 09.05.2007, 08:00
von lala
@Alpinist

Vielen Dank für den Heise-Link. Habe den Artikel durchgelesen. Leider muss ich gestehen, dass mir das (noch?) zu hoch ist. Da komme ich noch nicht mit klar. Ich vestehe zwar, worum es geht und da man das irgendwie unterbinden kann, aber ich habe leider keine Ahnung, was ich da in meinem Fall einbinden muss. :(

Liebe Grüße

lala

Verfasst: 09.05.2007, 08:24
von godzilla
if ((eregi("<[^>]*>", $value)) || (eregi("<[^>]*script*\"?[^>]*>", $value)) || (eregi("<[^>]*iframe*\"?[^>]*>", $value)) || (eregi("<[^>]*object*\"?[^>]*>", $value)) || (eregi("<[^>]*applet*\"?[^>]*>", $value)) || (eregi("<[^>]*meta*\"?[^>]*>", $value)) || (eregi("<[^>]*style*\"?[^>]*>", $value)) || (eregi("<[^>]*form*\"?[^>]*>", $value)) || (eregi("<[^>]*img*\"?[^>]*>", $value)) || (eregi("\"", $value)))
{
echo "go away, you damn fucking Spammer!";
exit; // aussteigen
}

Verfasst: 09.05.2007, 08:31
von lala
Hallo godzilla,

jetzt gibts Du mir schon in zwei Themen Nachhilfe :lol: Super, vielen Dank! Und wo muss ich das jetzt einfügen? Kann man das "go away, you damn fucking Spammer!" drinlassen oder sieht das jemand?

lala

Verfasst: 09.05.2007, 08:40
von godzilla
Siehe anderer Thread. Wenn du sowieso die Skripte deines Hoster nutzt brauchst du dir darum eigentlich keine Sorgen zu machen.

Verfasst: 09.05.2007, 20:03
von Flox
Hallo lala,

hier gibt es auch noch ein paar Informationen zum sicheren Mailversand über PHP:
Sicheres Kontakformular in PHP