• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

PHP + Zwischenfrage v. Absenden eines Formulars +Mailversand

iggy

Newbie
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?
 

nbkr

Guru
iggy schrieb:
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:
<?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:
<input type="submit" name="pruefen" value="was Du willst">

Auf der "Prüfseite" sind dann zwei Submitknöpfe:

Code:
<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.
 
Oben