PHP "mail"-Script/Befehl soll im Verborgenen ausgeführt werden, aber wie?

iNDUCTION

Ensign
Registriert
Feb. 2008
Beiträge
139
Guten Morgen,

nachdem ein PHP Script (Email Funktion für Formulare) gestartet ist, wird ebenfalls eine neue Seite aufgemacht, dies sollte so nicht sein, ich möchte dass PHP den Script im Verborgenen ausführt ohne dass das Formular durch eine komplett leere Seite ersetzt wird.

Gibt es da einen Trick, bzw. Befehl für?

indu
 
Wenn alles im "Hintergrund" passieren soll, ohne das ein Seitenreload oder eine weitere Seite aufgerufen wird, dann ist AJAX Dein Freund.
 
Du könntest nach Abschicken der Daten, die gleiche Seite wieder anzeigen lassen mit den gesendeten Daten.

Ich muss dazu sagen, dass ich nicht genau weiss, wie es aussehen soll. Stell ich mir so vor: Du hast ein Formular das abgeschickt wird und danach nur noch eine weisse Seite anzeigt?!

Dann kannst du einfach abfragen, ob das Formular abgeschickt wurde und die gleiche Seite nochmal abrufen!
 
Danke euch, die Lösung dafür ist: (zumindest funktioniert es damit bestens)
PHP:
header("Location: index.php");

PHP ist einfach Mega, gefällt mir sehr gut. ich werde die Sprache erlernen, die Scripte und Möglichkeiten sind sehr vielfältig und nützlich.

Von Ajax habe ich auch schon gutes gehört.

indu
 
iNDUCTION schrieb:
Danke euch, die Lösung dafür ist: (zumindest funktioniert es damit bestens)
PHP:
header("Location: index.php");

PHP ist einfach Mega, gefällt mir sehr gut. ich werde die Sprache erlernen, die Scripte und Möglichkeiten sind sehr vielfältig und nützlich.

Von Ajax habe ich auch schon gutes gehört.

indu

Hm, also wolltest Du doch im Prinzip auf eine neue Seite - nur halt nicht auf eine "leere" Seite...

Vielleicht eine Anregung?
Was hälst Du den davon wenn das Formular mittels action="<?php echo $_SERVER['PHP_SELF'] ; ?>"aufgerufen wird und im Erfolgsfalle eine Fehlermeldung ausgegeben wird?

Oder passiert das nach erfolgreichem Versand bevor du eine Weiterleitung machst?

Super das Dir PHP Spass macht - wobei ein Formular ist nun wirklich keine Kunst und einfach. Komplexer wird es mit Klassen und Webservices a la Soap ;)
 
Es macht Spaß, ich habe es im Laufe der Nacht für mich "entdeckt", habe mich bei Amazon schon umgeschaut was es da für coole PHP Bücher gibt.

Ja, Formulare sind sicher einfach (noch nicht für mich), allerdings muss ich sagen dass ich an PHP erst seit gestern Abend dran bin.

Meine Versuche sind daher eher recht als echt:freak: ??? oder wie schimpft sich das nochmal, bin schon zu müde. ...


Ja, zum einen möchte ich, dass bei einem leeren Feld eine Meldung erscheint, zum anderen soll bei Eingabe und Absenden, eine Bestätigung erscheinen.

Allerdings habe ich hier ein Problem.

Wenn das Feld leer ist und der Button betätigt, dann wird zwar "Feld ist noch leer" angezeigt, jedoch auf einem neuen Screen mit einem langen warning-Fehler, obwohl doch header gesetzt wurde.

Wenn dagegen das freie Feld beschrieben und der Button betätigt wird, kommt zwar keine Fehlermeldung und auch kein neuer Screen, allerdings die Bestätigung auch nicht.


Ich habe in Erfahrung gebracht, dass die Texte ins html sollen, da wiederrum weiß ich nicht mit welchen Befehlen ich PHP zu welchen Zeitpunkt anspreche und wie ich es einbinde.


PHP:
   <?php

$empfaenger = 'email@email.com';
$betreff = 'Formular';
$mailtext = "Hier kommt eine eMail von $email";




if(empty($_REQUEST['email'])) {
    echo "Feld ist noch leer";
}




if($_GET['email'] == "erfolgreich") {
  echo "Senden des Formulars war erfolgreich";
}  




mail($empfaenger, $betreff, $mailtext, $_POST['email']);

header("Location: index.php?email=erfolgreich");

?>


indu
 
Schön das dir PHP gefällt, fals es dich interessiert hier meiner Meinung nach eine super Seite für die ersten schritte http://www.peterkropff.de/

ich hoffe ich hab es richtig verstanden, dass du auf einer seite einen Text eingeben kannst und der dann per eMail versendet wird.

Du solltest beachten dass du mit GET(Übertragung in der Adressliste), POST(Sichere übertragung nicht sichtbar) und REQUEST(Abfragungs möglichkeit von GET und POST) arbeitest, aus sicherheitsrelevant Aspekten rate ich dir das du nur POST verwendest.

Des weiteren ist dein Ablauf nicht ganz Korrekt, du überprüfst zwar ob das "email" Feld ausgefüllt ist aber falls es leer ist wird die eMail Trotz allem versendet. Darum solltest du das ganze in if () anweisungen verschachteln.

Ich hab hier ein kleines Beispiel erstellt das den Ablauf zeigen soll.

PHP:
<?php
$empfaenger = 'mail@mail.mail';
$betreff = 'Test Formular';
$mailtext = 'email text';

if (isset ($_POST['submit']) )  // Hier wird geprüft ob das Formular abgesendet wurde
{
    if (isset ($_POST['text']) )    // Hier wird geprüft ob etwas Geschrieben wurde
    {
        // Hier Text auf in eine Variable abfüllen und auf schadens Code überprüfen, danach versenden
    }
    else
    {
        // Hier Fehlermeldung, dass kein Text eingegeben wurde
    }
}
else
{
    // Hier wird das HTML Formular ausgegeben
}
?>

hoffe das hilft dir weiter
 
surtic schrieb:
Schön das dir PHP gefällt, fals es dich interessiert hier meiner Meinung nach eine super Seite für die ersten schritte http://www.peterkropff.de/

ich hoffe ich hab es richtig verstanden, dass du auf einer seite einen Text eingeben kannst und der dann per eMail versendet wird.

Du solltest beachten dass du mit GET(Übertragung in der Adressliste), POST(Sichere übertragung nicht sichtbar) und REQUEST(Abfragungs möglichkeit von GET und POST) arbeitest, aus sicherheitsrelevant Aspekten rate ich dir das du nur POST verwendest.

Des weiteren ist dein Ablauf nicht ganz Korrekt, du überprüfst zwar ob das "email" Feld ausgefüllt ist aber falls es leer ist wird die eMail Trotz allem versendet. Darum solltest du das ganze in if () anweisungen verschachteln.

Ich hab hier ein kleines Beispiel erstellt das den Ablauf zeigen soll.

PHP:
<?php
$empfaenger = 'mail@mail.mail';
$betreff = 'Test Formular';
$mailtext = 'email text';

if (isset ($_POST['submit']) )  // Hier wird geprüft ob das Formular abgesendet wurde
{
    if (isset ($_POST['text']) )    // Hier wird geprüft ob etwas Geschrieben wurde
    {
        // Hier Text auf in eine Variable abfüllen und auf schadens Code überprüfen, danach versenden
    }
    else
    {
        // Hier Fehlermeldung, dass kein Text eingegeben wurde
    }
}
else
{
    // Hier wird das HTML Formular ausgegeben
}
?>

hoffe das hilft dir weiter

Ja danke, hat sehr geholfen, wobei ich noch am ausprobieren bin, allerdings auch dadurch paar Schritte weiter.

Auch die Peter Kropff Seite ist auf den ersten Blick sehr interessant. Nach und nach werde ich tiefer ins Thema einsteigen.

Als nächstes werde ich zusätzlich Paar Bücher kaufen (müssen) um mehr zu erfahren.

indu
Ergänzung ()

Alfredo schrieb:
Diese Seite zeigt dir auch ein paar Basics:

http://tut.php-quake.net/de/

Gästebuch, Datenbank Anbindung etc.

Danke dir, auch diese Seite ist für mich super informativ. Es geht auch hier PHP5, sie ist sehr gut strukturiert und beschrieben.

indu


Nachtrag: Merkwürdig, die Antwort sollte doch separat sein und nicht als Zusatz in einem anderen Beitrag.
 
Zuletzt bearbeitet:
Doppelposts sind generell unerwünscht und werden somit verhindert.

2 kleine Tipps noch zu dem Thema:
1. Ein Formular abschicken, welches keine korrekten Daten enthält, ist schlecht - erzeugt Traffic wo keiner notwendig wäre. Also würde ich dir empfehlen, vor dem Absenden des Formulars die Vollständigkeit sowie Korrektheit der eingegebenen Daten zu prüfen. Dies geschieht am einfachsten per Javascript zum Einen mit dem OnBlur-Ereignis direkt im jeweiligen Formularfeld und zum anderen über das OnSubmit-Ereignis des Formulars. Bsp:
HTML:
<form action="deineSeite.php" name="frm_email" OnSubmit="return chk_myform()">[...]</form>
Per Javascript erstellst du die Prozedur chk_myform und gibst True oder False zurück und je nachdem wird das Formular abgeschickt oder auch nicht.
HTML:
<input type="text" name="email" OnBlur="chk_field('email')" \>
Wieder wird per Javascript die Korrektheit geprüft. Diesmal direkt beim Verlassen des Feldes, somit wird der Benutzer sofort auf eventuelle Fehler hingewiesen. Und sieht die Fehler nicht erst dann, wenn er das Formular abgeschickt hat. Natürlich gibts hier ungefähr 123,1 verschiedene Möglichkeiten und das oben ist nur ein Beispiel. In jedem Fall solltest du mal nach den passenden regulären Ausdrücken suchen.

Da es jedoch Menschen gibt, die Javascript abschalten oder blocken, kommst du um die zweite Prüfung nicht herum.

2. Prüf nicht wie vorgeschlagen einfach nur auf isset(...), sondern auf Korrektheit. Ist vielleicht komplizierter, aber wesentlich realitätsnäher.
 
Zuletzt bearbeitet:
Zurück
Oben