XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   Problem: Formular-Daten und PHP (http://xhtmlforum.de/showthread.php?t=68910)

MiJu 15.02.2013 14:37

Problem: Formular-Daten und PHP
 
Hallo allerseits :)

Ich stehe gerade vor einem PHP-/Formular-Problem, bei dem mir nun einfach die Ideen ausgegangen sind, wie ich es noch versuchen könnte.

Ich soll für unsere Homepage ein Anmeldeformular erstellen. Alles auch schön und gut, Formular ist da, Daten werden auf die Bestätigungsseite übertragen – und dann beginnt mein Problem.

Die eingegebenen Daten sollen am allerbesten in eine cvs- oder Textdatei geschrieben werden. Das hat nicht geklappt. Ich schaffe es nichtmal, die Datei überhaupt zu öffnen.
Alternativ dachte ich, ich könnte die Daten dann einfach per Mail verschicken; hat auch nicht geklappt. Da kommt keine Mail an.

Da ich das Ganze mit JavaScript leider nicht machen kann, musste ich dafür auf PHP zurückgreifen, wovon ich leider null Ahnung habe und mich einfach nur mit meinen Programmierkenntnissen soweit durchgewühlt habe, dass alle Daten mit einem „echo“ korrekt ausgegeben werden. Die Daten sind also da, nur ich bekomme sie nicht dahin, wo sie hinsollen.
Wegen den fehlenden Kenntnissen fürchte ich, dass da vielleicht einfach ein grundlegender Denkfehler drin ist, den ich nicht finde, weil JavaScript etwas anders gestrickt ist.

Ich hoffe, irgendjemand kann mir hier weiterhelfen :)

Hier noch der wichtige Teil vom PHP-Code:
PHP-Code:

$csv fopen('http://www.irgendwo.de/anmledung.txt''a');
$output fwrite($csv$zeile);
fclose($csv);

mail('ich@mir.de''Anmeldung'$zeile'From: ' $_REQUEST['TeilnehmerMail']);

echo 
$zeile


chorn 15.02.2013 15:22

das hier

PHP-Code:

$csv fopen('http://www.irgendwo.de/anmledung.txt''a'); 

ist schonmal Quatsch, ein Remotefile kannst du so nicht zum schreiben öffnen, und die Datei befindet sich doch sicher auf deinem Server, am besten im gleichen Verzeichnis, da reicht also

PHP-Code:

$csv fopen('anmledung.txt''a'); 

ggf. hast du dich da noch verschrieben.

Und sowas

PHP-Code:

'From: ' $_REQUEST['TeilnehmerMail'

solltest du unbedingt vermeiden, damit öffnest du Spammern Tür und Tor, die dann in deinem Namen von deinem Server Mist verschicken. Mehr zum Thema: Mail-Injection. Benutze eine Klasse wie PHPMailer dafür, die ist kostenlos, dafür gibt es hunderte Beispiele.

fox 15.02.2013 17:49

Nimm statt fopen auch lieber file_put_contents - und ansonsten, wie schon gesagt: Über eine URL kann man ohne weiteres nicht schreiben - nur ins Dateisystem.

Wenn du dich mit mail() nicht auskennst, dann lass da lieber erst mal die Finger davon, sonst kann dein Server ganz schnell zur Spam-Schleuder werden. Oder du nutzt alternativ, wie bereits vorgeschlagen, eine fertige Klasse dafür.

David 17.02.2013 19:24

Wichtig ist, dass in den Header keine Zeilenumbrüche einfließen dürfen, weil diese die einzelnen Header-Felder voneinander trennen. D.h. wenn jemand wöllte könnte er in $_REQUEST['TeilnehmerMail'] weitere Header-Felder definieren in dem er Zeilenumbrüche mitschickt.

Dem kannst Du vorbeugen, indem Du die Zeilenumbrüche CRLF entfernst:
PHP-Code:

$from str_replace( array( "\r""\n" ), '',  $_REQUEST'TeilnehmerMail' ] );
$header 'From: ' $from


MiJu 18.02.2013 11:39

Yay, es klappt endlich!

Ich weiß zwar nicht, warum ein „fopen“ nicht ging, aber mit „file_put_contents“ und einem angeglichenen Pfad funktioniert es endlich – auch wenn ich fest überzeugt war, sämtliche Pfadvarianten vorher ausprobiert zu haben :? Naja, wohl doch nicht.

Die Mail-Funktion kann ich dann wohl auch getrost streichen :) Die war nur als alternative gedacht, falls es gar nicht klappt, Daten in die Datei zu schreiben.

Also, vielen Dank auch euch allen! :D

ich-bin-heimwerker 22.02.2013 10:16

Wenn Du trotzdem mal in die Verlegenheit kommen solltest, E-Mails per PHP verschicken zu wollen, würde ich trotzdem eine fertige Bibliothek wie z. B. Swiftmailer nutzen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:35 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2020, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2020