Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

PHP + Zwischenfrage v. Absenden eines Formulars +Mailversand

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
iggy
Newbie
Newbie
Beiträge: 11
Registriert: 3. Dez 2004, 16:45

PHP + Zwischenfrage v. Absenden eines Formulars +Mailversand

Beitrag von iggy »

Hallo.
Ich bin mir nicht sicher, ob es schon Threads zu diesem Thema gibt, aber ich bitte euch ein Auge zuzudrücken, da ich bis Freitag mein Maturaprojekt präsentieren muss und etwas unter Zeitdruck stehe.
Ich habe schon wie ein Irrer im Internet gesucht und meine Zeit mit PHP-Büchern verbracht, was mir leider wenig half.

Bevor ich jetzt einen Roman über meine letzten 7 Tage schreibe komme ich endlich zur Sache:
Ich habe in einer Homepage ein Kontaktformular gebaut, das den Eintrag in eine MySQL-Datenbank schreibt.
Bei klick auf einen Button "Kontaktformular" öffnet sich eine neue Unterseite (HTML) und man kann eine Nachricht versenden.
Die Einträge werden erst mittels Javascript überprüft und an ein PHP-Script übergeben. Anschließend wird der Benutzer anhand eines kurzen Ausgabetextes informiert welche Einträge stattgefunden haben und ob alles geklappt hat.
Funktioniert soweit ohne Probleme.

Was noch fehlt:
1. Wie mache ich eine Kontrollfrage bei der der User den eingegebenen Text überprüfen kann und anschließend auf "senden" oder "bearbeiten" klicken kann. Wenn möglich in einer leeren Seite, also ohne Formular.
Bei senden wird die Nachricht gesendet und bei bearbeiten kommt er wieder auf sein Formular, welches die alten Einträge behalten hat.
Ich vermute man benötigt dazu 3 Dateien.
1x HTML und 2x PHP-Scripts?

2. Was muss ich beachten, wenn ich den User und den Seiteninhaber zusätzlich per Mail informieren möchte, dass eine Nachricht angekommen ist?
Funktioniert dieser Mailversand mit "mail($empfaenger,$betreff,$nachricht)"?
Muss ich einen Mailserver laufen haben?
Noch was wichtiges?

Und noch eine kleinere Frage:
Auf meinem lokalen Webserver läuft PHP4.3.x
Ich habe, unter anderen, ein Buch welches PHP5 behandelt. Die meisten Scripte funktionieren trotzdem.
Ich wollte nur wissen ob es an PHP4 liegt, dass ich Formularinhalte aus dem lokalen Script am Anfang mittels $variable= $_POST(tabellenname) den Variablen übergeben muss.
Im Buch wird dazu folgendes Scriptbeispiel gegeben:

<html>
<body>
<form action = "uc13.php" method = "post">

<?php
if (isset($gesendet))
{
echo "<font color='#ff0000'> Sie haben folgenden";
echo " Namen eingegeben: $vn $nn</font><br><hr>";
}
?>

Bitte geben Sie einen Namen ein<br>
und senden Sie das Formular ab:<p>
<input name = "nn"> Nachname<p>
<input name = "vn"> Vorname<p>
<input type = "submit" name = "gesendet">
<input type = "reset">
</form>
</body>
</html>

Dieses Script funktioniert allerdings erst, wenn ich, wie oben erwähnt, die Variable am Anfang des Scripts zuweise.
Würde das Script mit PHP5 auf diese Weise funktionieren?
Benutzeravatar
nbkr
Guru
Guru
Beiträge: 2857
Registriert: 10. Jul 2004, 15:47

Re: PHP + Zwischenfrage v. Absenden eines Formulars +Mailver

Beitrag von nbkr »

iggy hat geschrieben:

Was noch fehlt:
1. Wie mache ich eine Kontrollfrage bei der der User den eingegebenen Text überprüfen kann und anschließend auf "senden" oder "bearbeiten" klicken kann. Wenn möglich in einer leeren Seite, also ohne Formular.
Bei senden wird die Nachricht gesendet und bei bearbeiten kommt er wieder auf sein Formular, welches die alten Einträge behalten hat.
Ich vermute man benötigt dazu 3 Dateien.
1x HTML und 2x PHP-Scripts?
Du kannst das theoretisch auch mit nur einer PHP Seite machen, allerdings ist es dann für einen Anfänger schwerer zu durchblicken.

Ich würde folgendermaßen vorgehen.

Code: Alles auswählen

<?php

 if (isset($_POST['senden'])) {
  //Versandcode des Formulars

 } elseif (isset($_POST['bearbeiten'])) {
   //Formular erneut anzeigen und mit Werten füllen.
 } elseif (isset($_POST['pruefen'])) {
   //Seite mit den eingebenen Infos anzeigen
 } else {
   //Leeres Formular anzeigen
 }
?>
Das Formular baust Du jetzt so auf, dass es bei der ersten eingabe ienen Inputknopf hat der ungefähr so aussieht:

Code: Alles auswählen

<input type="submit" name="pruefen" value="was Du willst">
Auf der "Prüfseite" sind dann zwei Submitknöpfe:

Code: Alles auswählen

<input type="submit" name="bearbeiten" value="was Du willst">
<input type="submit" name="senden" value="was Dfdsafwillst">
Somit kannst Du immer unterscheiden welcher Knopf gedrückt wurde. Achja, auf der Prüfseite musst Du die Werte nicht nur anzeigen, sondern auch in einem verstecketen Formular speichern, damit es bei nächsten Knopfdrücken übertragen wird.

Abgesehen davon würde ich dir dringenst (!) davon abraten Formulare mit Javascript prüfen zu lassen. Die Prüfung muss serverseitig erfolgen, da alles was clientseitig erledigt wird manipulierbar ist.
2. Was muss ich beachten, wenn ich den User und den Seiteninhaber zusätzlich per Mail informieren möchte, dass eine Nachricht angekommen ist?
Funktioniert dieser Mailversand mit "mail($empfaenger,$betreff,$nachricht)"?
Muss ich einen Mailserver laufen haben?
Noch was wichtiges?
Nö, wenn der Mailserver läuft sollte PHP auch Mails verschicken können.
Und noch eine kleinere Frage:
Auf meinem lokalen Webserver läuft PHP4.3.x
Ich habe, unter anderen, ein Buch welches PHP5 behandelt. Die meisten Scripte funktionieren trotzdem.
Ich wollte nur wissen ob es an PHP4 liegt, dass ich Formularinhalte aus dem lokalen Script am Anfang mittels $variable= $_POST(tabellenname) den Variablen übergeben muss.
Im Buch wird dazu folgendes Scriptbeispiel gegeben:

<html>
<body>
<form action = "uc13.php" method = "post">

<?php
if (isset($gesendet))
{
echo "<font color='#ff0000'> Sie haben folgenden";
echo " Namen eingegeben: $vn $nn</font><br><hr>";
}
?>

Bitte geben Sie einen Namen ein<br>
und senden Sie das Formular ab:<p>
<input name = "nn"> Nachname<p>
<input name = "vn"> Vorname<p>
<input type = "submit" name = "gesendet">
<input type = "reset">
</form>
</body>
</html>

Dieses Script funktioniert allerdings erst, wenn ich, wie oben erwähnt, die Variable am Anfang des Scripts zuweise.
Würde das Script mit PHP5 auf diese Weise funktionieren?
Nein,würde es nicht. Ab PHP 4.1.x wurde die Funktion das der Name eines Formularfeldes direkt als Variable verwendet werden kann abgeschaltet, da es ein gewaltiges Sicherheitsproblem mit sich bringt (also wenn man nicht aufpasst). Man kann diese Funktion wieder einschalten, aber man sollte nicht. Besser ist es vorhandene Scripte gleich mi $_POST['wasauchimmer'] zu betreiben oder eben wie Du oben geschildert hast das ganze umzuschreiben.
Kann gar nicht sein, ich bin gefürchtet Wald aus, Wald ein.
Antworten