mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 28.03.2024 11:44 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: 1, 2, 3  Weiter
Autor Nachricht
cank1090
Threadersteller

Dabei seit: 18.06.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Mo 18.06.2007 20:53
Titel

Frage zu Kontaktformularen

Antworten mit Zitat Zum Seitenanfang

Hallo erstmal,
ich bin auf dem Gebiet von PHP knallharter Neuling und brauche Hilfe, bzw. erstmal eine kleine Erklärung zu Kontaktformularen mit PHP. Wenn ich die Zeit hätte, würde ich mich in die Materie einarbeiten (das werde ich denke ich so oder so noch tun), aber im Moment brauche ich etwas Praktisches.

Ich habe bereits viel nach Kontaktformularen und den entsprechenden Scripts gesucht, aber keines von denen hat funktioniert. Ich denke mal es liegt daran, weil ich nicht weiß wie ich damit umzugehen habe. Der Freehoster, auf dem ich zur Zeit ein Projekt teste, ist www.awardspace.com und unterstützt auch PHP.

Was ich brauche ist ein Kontaktformular mit folgenden Pflichfeldern:
Vor- und Nachname, Straße, PLZ, Ort, Telefonnummer und die eMail Adresse.
Außerdem noch zwei Dateifelder (nennt man das so?), über welches sich Fotos mitverschicken lassen sollen.

Nun meine Frage(n):
Wenn ich so ein entsprechendes Skript habe, wie baue ich das in die Homepage ein, bzw. wie funktioniert das? Ich meine per HTML die entsprechenden Formularfelder zu erstellen ist ja nicht das Problem, aber ich meine gelesen zu haben, dass diese Daten dann (am besten per POST) an ein PHP-Skript geschickt werden. Soll ich nun nur das Skript in die HTML-Seite einbinden, oder zwei Dateien, eine .html und eine .php anlegen?
Und wie genau funktioniert das mit dem Mail-Versand? Über welchen Server erfolgt denn der Versand?

Ich wäre euch für jede Hilfe wirklich dankbar. Es tut mir leid, dass ich nicht genug Zeit habe um all das selbst zu erlernen, ich brauche es etwas dringend. Bitte erklärt mir, wie das funktioniert und wie ich ein Skript in die Homepage einbaue! Danke!
  View user's profile Private Nachricht senden
LioGetz

Dabei seit: 24.03.2003
Ort: Aachen
Alter: 44
Geschlecht: Männlich
Verfasst Mo 18.06.2007 21:28
Titel

Antworten mit Zitat Zum Seitenanfang

Hi,

das kannst du eigentlich machen wie du lustig bist. Wichtig ist hier die Form-Action, die sagt dem Formular was beim versand passieren soll.
Wenn du eine HTML und eine PHP machst, dann gibst du in der Action die PHP-Datei an die die Werte verarbeitet, wenn du nur eine PHP machst kannst du z.B. per if abfragen ob das Formular schon versendet wurde oder nicht. Falls nicht -> dann zeige Formular, falls ja -> dann führe PHP aus und verarbeite den Kram wieder...

Du hast kein lauffähiges Skript gefunden? Das kann ich ja kaum glauben, weil das Netz ist voll davon. Gerade so einfache PHP-Skripte gibts an jeder Ecke (und die sollten auch laufen)...
Alleine die ersten 3 Google-Treffen sind schon vernünftig:

1
2
3

Wichtig, interessant und auch mit Beispielen ist natürlich auch die PHP Doku zu Mail
Reicht das als Hilfe *zwinker* ?

CU
Lio Grins
  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 Mo 18.06.2007 21:47
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo,

na so einfach ist das nicht und wenn du überhaupt keine Ahnung von PHP hast ist das ganz schlecht.
Also du machst dir erst einmal in html ein Kontaktformular (aber das ganze in eine .php Seite). Die Pflichtattribute bei Formularen (je nachdem welches Objekt name oder id o.ä.) musst du dann nennen, wie deine PHP-Variablen später sein sollen.
Dann musst du per GET oder POST deine Daten versenden: dazu brauchst du Sessions.
Die Pflichtfeldsache lässt sich (sehr unsicher) per Javascript oder per PHP lösen. Per PHP machst du es, indem du in der Formularseite ganz am Anfang der Datei (die du auch bei value="submit" mit $PHP_SELF[] angibst) die POST/GET Variablen aufrufst und mit einer if() Schleife prüfst, ob alle angegeben sind.

Dann musst du natürlich deinen Bilder-Upload bauen, funktioniert im Prinzip wie beim Kontaktformular, du musst es
eigentlich erst nach dem "Reload" hochladen usw... Scripts dazu sind massenhaft hier über die Suche zu finden.
Eventuell musst du die Bilder auch noch verkleinern, Scripts siehe Suche.

Der Mailversand ist über die PHP Funktion mail(); verfügbar; dabei gibt es zwei Möglichkeiten: einmal kannst du das über den Server, wo das Script lagert lösen, das ist am einfachsten, kann aber langsamer sein. Die 2. Möglichkeit besteht darin, die Mail über einen SMTP Server laufen zu lassen (geht vllt mit deinem email smtp). Ich empfehle dir zu ersterem.

Wenn du dann die Daten geprüft und hochgeladen hast, leitest du per header(); zu der Seite, auf der steht, dass die Mail versand wurde. Das kann auch eine ganz normale html Seite sein. Besser ist es jedoch, wenn du nochmal eine PHP Seite erstellst und in dieser die Session und POST/GET Daten löscht (Sicherheit!).

Wichtig: am anfang einer php datei muss in zeile 1 stehen: <?php ?>
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
cank1090
Threadersteller

Dabei seit: 18.06.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Mo 18.06.2007 21:49
Titel

Antworten mit Zitat Zum Seitenanfang

Vielen Dank erstmal für die Antwort!

Also dein erster Link scheint schonmal sehr hilfreich zu sein.
Nun habe ich dort mal das erste Beispiel genommen und folgendes gemacht:
Im HTML-Formular das <form action=>-Tag angepasst und als Wert den Dateinamen des Scripts, welches ich danach erstellt habe, eingetragen. Ich hab es nämlich einfach mal "script.php" genannt und es so in den HTML Text geschrieben. Die Dateien liegen in dem selben Ordner. Dann natürlich die Datei als formular.html gespeichert.
Das PHP-Script habe ich so übernommen, bei $mail_empfaenger meine eMail-Adresse eingetragen und wie schon gesagt als script.php abgespeichert.
Diese beiden Dateien habe ich dann auf meiner Testseite bei awardspace.com hochgeladen, das Formular ausgefüllt und abgeschickt. Es kam aber keine Mail an.

Ich wundere mich jetzt ob ich etwas falsch gemacht habe (wovon ich stark ausgehe Grins ), oder ob der Server nicht mitspielt.

Freue mich über Antworten.
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Mo 18.06.2007 22:59
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Dann musst du per GET oder POST deine Daten versenden: dazu brauchst du Sessions.

Um Daten per GET oder POST zu versenden, braucht man keine Sessions.
Dazu braucht man nur ein HTML-Formular.
Sessions haben damit gar nichts zu tun.

Zitat:
ganz am Anfang der Datei (die du auch bei value="submit" mit $PHP_SELF[] angibst)

$PHP_SELF[] gibt es nicht. Die Variable hieß $PHP_SELF. (Die Klammern würden ein Array anzeigen.)
Die Variable heißt aber mittlerweile $_SERVER['PHP_SELF'].

Zitat:
und mit einer if() Schleife prüfst, ob alle angegeben sind.

Es gibt keine if-Schleifen.

Zitat:
funktioniert im Prinzip wie beim Kontaktformular, du musst es
eigentlich erst nach dem "Reload" hochladen usw

Bitte was? Wozu Reload?
Was hat das mit einem Dateiupload zu tun?

Zitat:
Der Mailversand ist über die PHP Funktion mail(); verfügbar; dabei gibt es zwei Möglichkeiten: einmal kannst du das über den Server, wo das Script lagert lösen, das ist am einfachsten, kann aber langsamer sein.

Warum sollte das langsamer sein?
Auf jeder Linux/Unix-Kiste ist standardmäßig ein MTA installiert. Wenn dieser MTA direkt genutzt wird, dann ist das im Normalfall immer schneller als erst eine Verbindung über's Internet mit einem anderen SMTP-Server herzustellen.

Zitat:
Wenn du dann die Daten geprüft und hochgeladen hast, leitest du per header(); zu der Seite, auf der steht, dass die Mail versand wurde.

Das funktioniert aber nur dann, sofern noch keine Ausgabe zum Client gesendet wurde.

Zitat:
Besser ist es jedoch, wenn du nochmal eine PHP Seite erstellst und in dieser die Session und POST/GET Daten löscht (Sicherheit!).

Häh? Was sollte das denn bringen?
Die Session-Daten werden auf dem Server gespeichert. Ich wüßte ohnehin nicht, warum man die POST- bzw. GET-Daten in Session-Variablen ablegen sollte. Welchen Zweck sollte das hier erfüllen?
Naja, jedenfalls werden die Daten gelöscht, wenn man die Session zerstört.
Und selbst wenn nicht, läuft die Session nach einiger Zeit von alleine ab...

Code:
Wichtig: am anfang einer php datei muss in zeile 1 stehen: <?php ?>

Sag mal, kannst du überhaupt PHP?
Wieso muß denn sowas in Zeile 1 einer PHP-Datei stehen? Dem ist nicht so.



Zitat:
Diese beiden Dateien habe ich dann auf meiner Testseite bei awardspace.com hochgeladen, das Formular ausgefüllt und abgeschickt. Es kam aber keine Mail an.

Wie sieht dein Code aus?
Wenn du uns deinen Code nicht zeigst, kann dir auch keiner sagen, ob da ein Fehler drin ist.
Poste mal deinen Code.

Naja und davon abgesehen, würde ich doch stark dazu raten, erstmal wirklich PHP zu lernen, bevor man damit Sites erstellt.
Wenn man sich daran versucht, aber eigentlich gar icht weiß, was man tut und worauf man achten soll, dann gefährdet man die Sicherheit seines Account und eventuell des ganzen Servers.
Ich wette z.B. das ich dein Mailformular ganz leicht in eine Spamschleuder verwandeln könnte.
Dein Hoster wird sich dann freuen, wenn jemand mal ein paar Millionen Spam-Mails über dein Formular verschickt hat...
Du hast nicht zufällig daran gedacht, alle Daten, die von außen an dein Script übergeben werden, zu prüfen, zu sichern und ggf. zu bereinigen?
Bei den Maildaten hast du nicht zufällig dran gedacht, Zeilenumbrüche zu filtern?
Diese trennen nämlich Mailheader voneinander ab. Und wenn du die nicht filterst, kann ich deinem Script ungewünschte Headerzeilen unterschieben...
Damit kann ich dann beliebige Empfänger einsetzen, u.a..
  View user's profile Private Nachricht senden
cank1090
Threadersteller

Dabei seit: 18.06.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Di 19.06.2007 12:47
Titel

Antworten mit Zitat Zum Seitenanfang

rob hat geschrieben:
Naja und davon abgesehen, würde ich doch stark dazu raten, erstmal wirklich PHP zu lernen, bevor man damit Sites erstellt.
Wenn man sich daran versucht, aber eigentlich gar icht weiß, was man tut und worauf man achten soll, dann gefährdet man die Sicherheit seines Account und eventuell des ganzen Servers.
Ich wette z.B. das ich dein Mailformular ganz leicht in eine Spamschleuder verwandeln könnte.
Dein Hoster wird sich dann freuen, wenn jemand mal ein paar Millionen Spam-Mails über dein Formular verschickt hat...
Du hast nicht zufällig daran gedacht, alle Daten, die von außen an dein Script übergeben werden, zu prüfen, zu sichern und ggf. zu bereinigen?
Bei den Maildaten hast du nicht zufällig dran gedacht, Zeilenumbrüche zu filtern?
Diese trennen nämlich Mailheader voneinander ab. Und wenn du die nicht filterst, kann ich deinem Script ungewünschte Headerzeilen unterschieben...
Damit kann ich dann beliebige Empfänger einsetzen, u.a..


Hi Rob, danke erstmal für deine Antwort.

Also der Code von formular.php (hatte vorher formular.html, hab jetzt ne .php-Seite draus gemacht in der Hoffnung dass es etwas bringt):

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Formular</title>
</head>

<body>
<form action=script.php>
<table>
<tr><td>Nachname</td><td><input type=text name=Nachname></td></tr>
<tr><td>Vorname</td><td><input type=text name=Vorname></td></tr>
<tr><td>Beruf</td><td><input type=text name=Beruf></td></tr>
<tr><td>Telefon</td><td><input type=text name=Telefon></td></tr>
<tr><td>email</td><td><input type=text name=mailaddi></td></tr>
<tr><td colspan=2 align=middle><input type=submit value="abschicken"></td></tr>
</table>
</form>
</body>
</html>


Und der Code von meinen script.php:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Mail senden</title>
</head>

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


Also die beiden Codes sind von der Seite, die LioGetz verlinkt hat. Beide Dateien liegen in dem selben Ordner und ich habe bei formular.php nur den Namen des Skripts eingetragen, und bei script.php meine eMail-Adresse. Sonst hab ich nichts verändert. Mein Test-Hoster unterstüzt auch PHP (in der Version 4) und sendmail müsste auch aktiviert sein, sofern ich die von mir erstellte info.php Seite richtig gelesen habe.

Sicherheitsmaßnamen möchte ich natürlich auch in dem Formular berücksichtigen, allerdings brauche ich erstmal ein Grundverständnis dafür, wie so ein php-Formular überhaupt funktioniert. Ich hoffe, du kannst mir dabei helfen! Wie gesagt, wenn ich die Zeit hätte würde ich mich in die Materie auch selbst einarbeiten. PHP ist wirklich spannend, allerdings habe ich die Zeit momentan leider nicht, brauche aber so ein Formular.

Freue mich auf Antworten.


Zuletzt bearbeitet von cank1090 am Di 19.06.2007 12:48, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Di 19.06.2007 13:21
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
hatte vorher formular.html, hab jetzt ne .php-Seite draus gemacht in der Hoffnung dass es etwas bringt):

Nein. Was sollte das bringen, wenn du eine html-Datei in php umbenennst?
Wenn die Dateien die Endung .php haben, dann werden sie von PHP auf dem Server geparst. Ist in der Datei kein PHP-Code anthalten, dann passiert auch nichts...

Code:
<form action=script.php>

Warum schaust du nicht in SelfHTML oder irgendwo anders, wie man Formulare definiert und wofür die Attribute gut sind?
Mit dem action-Attribut gibst du an, an wohin die Daten geschickt werden sollen.
Die dem method-Attribut gibst du an, wie diese Daten verschickt werden sollen.

Und Attributwerte sollten in Quotes gefasst werden:
Code:
<form action="script.php" method="post">


Ansonsten sieht der Code jetzt soweit eigentlich fast OK aus.
Da müßten allerdings noch Prüfungen der Daten rein...

Den HTML-Code kannst du aus deiner script.php im Prinzip rauslassen.
Wenn dort nur die Mail verschickt werden und keinerlei HTML-Ausgabe erfolgen soll, brauchst du den nicht.

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

Das Problem ist jetzt, daß es deine Variablen nicht befüllt werden, schätze ich mal.
Das würde nur funktionieren, wenn dein Hoster register_globals in der php.ini auf on gestellt hat...

Weil das aber sicherlich nicht der Fall ist, mußt du das superglobale, assoziative Array $_POST einsetzen:
Code:
<?php
$mail_empfaenger="mein@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,"from:$mail_absender");
?>


Zitat:
Sicherheitsmaßnamen möchte ich natürlich auch in dem Formular berücksichtigen

Solltest du auch. Ansonsten wird aus deinem Formular ganz schnell eine Spamschleuder.

Zitat:
allerdings brauche ich erstmal ein Grundverständnis dafür, wie so ein php-Formular überhaupt funktioniert.

Dazu gibt es ja einiges...
Schau ins PHP-Handbuch.
Schau in die FAQ der Newsgroups de.comp.lang.php.*.
Sieh der das PHP-Tutorial vom Quakenet an.
In diesen drei Dokumenten solltest du eigentlich alles finden, was du benötigst um PHP zu lernen.
Dort findest du auch einige ganze Reihe an Beispielen.

Und grundsätzlich denke ich, daß du einen falschen Weg gehst.
Du lernst natürlich dadurch, daß du Scripte schreibst.
Aber bevor man richtig PHP programmieren kann, sollte man keine Scripte schreiben, die wirklich im Internet laufen.
Du solltest dir lieber einen Webserver mit PHP auf dem eigenen Rechner installieren und diesen dann als Testumgebung nutzen.
Wenn du Scripte schreibst und diese dann bei deinem Hoster hochlädst, dann gefährdest du damit eventuell sogar die Sicherheit des Servers, wenn du nicht programmierung kannst und nicht weißt, worauf du, bezüglich der Sicherheit, achten mußt.
Und wie gesagt: Wenn du so ein Mailformular online stellst und damit jemand dann erstmal ein paar Tausend Spammails verschickt hat, wird dein Hoster sicherlich nicht erfreut sein...

Das soll jetzt keineswegs böse gemeint sein, aber ich würde wirklich dazu raten, daß du dir auf deinem eigenen Rechner einen Server installierst und dort entwickelst und übst, bis du zumindest das nötige Grundverständnis hast.


Zuletzt bearbeitet von rob am Di 19.06.2007 13:24, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
cank1090
Threadersteller

Dabei seit: 18.06.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Di 19.06.2007 17:48
Titel

Antworten mit Zitat Zum Seitenanfang

Hi rob, danke erstmal für die Antwort.
Also ich hab jetzt alle Änderungen so angepasst wie du es vorgeschlagen hast:

formular.html (jetzt doch kein .php mehr):

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Formular</title>
</head>

<body>
<form action="script.php" method="post">
<table>
<tr><td>Nachname</td><td><input type=text name=Nachname></td></tr>
<tr><td>Vorname</td><td><input type=text name=Vorname></td></tr>
<tr><td>Beruf</td><td><input type=text name=Beruf></td></tr>
<tr><td>Telefon</td><td><input type=text name=Telefon></td></tr>
<tr><td>email</td><td><input type=text name=mailaddi></td></tr>
<tr><td colspan=2 align=middle><input type=submit value="abschicken"></td></tr>
</table>
</form>
</body>
</html>


und script.php:

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


Das einzige was ich nicht geändert habe war das mit den Variablen, da register_globals in der php.ini von awardspace.com aktiviert ist (hab nachgeschaut).

Funktioniert hat es leider trotzdem nicht! Woran könnte es denn noch liegen?
  View user's profile Private Nachricht senden
 
Ähnliche Themen Rechtliche Frage bzw. einfach ne Frage :)
Frage nach der Frage
CSS Frage
Div-Frage
cms frage!
Frage
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2, 3  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.