• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

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

Andy McJinn

Neues Mitglied
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?

andy
 
Ich danke dir, genau das ist es, es fuktioniert.:D

Weist du vielleicht ob das PHP Script ins cgi-bin Verzeichnis soll? bzw. alle Scripte?

Und, gibt es bzw. kennst du einen freien Kontrollscript, der SPAM-Missbrauch (Formulare) verhindert?

andy
 
Ich lege solche Scripte immer in einen geschützen ordner, auf den benutzer nicht zugreifen können (htaccess ist das Stichwort). Ein Kontrollscript für "Spam-Missbrauch" kenne ich leider nicht. Wobei wenn du Formulare sagst, und diese vom User ausgefüllt werden, hilft gut und gerne ein Captcha. (reCAPTCHA: Stop Spam, Read Books)
Wenn du meinst, dass Formulare nicht 2 mal abgeschickt werden, so gibt es verschiedene Wege das zu lösen. Ich löse es meistens über eine Session Variable.
Ob es die günstigste Methode ist, kann ich dir leider nicht sagen.
Vielleicht will sich da jemand Anders zu äußern :)
 
PHP finde ich richtig spannend, ich werde mich mit Büchern eindecken und es erlernen.

Danke dir, in die aufgezeigten Methoden werde ich mich einlesen.


Ich habe viel gesucht, jedoch nicht gerade das gefunden was ich suche.

Ich möchte, dass nachdem der "Absenden"-Button betätigt wird, darunter ein Text erscheint, dass beispielsweise die Angaben übermittelt wurden.

Für eine richtungsweisende Unterstützung hierbei, wäre ich sehr dankbar.

andy
 
Du musst dich dann mal mit Auswerten von Formularen auseinander setzen.
Dabei gibt es die GET und POST Methode ein Formular zu verschicken.

Genereller unterschied:
GET übermittelt seine Werte für die Folgeseite über die Adressleiste. Sieht man des öfteren mal so:
index.php?vorname=Gilles
Bei POST werden die Daten nicht in der Adresszeile übermitteln. Dies ist sehr nützlich für sensible Daten (Passwörter) als auch für lange Texte (Denn die Adresszeile hat auch ein Limit an Zeichen)
Schau dir dafür mal folgendes an:
PHP: Superglobals - Manual

Beide methoden haben ihren Einsatz. So nutzt man die get Methode für Links.
als Beispiel für dich:
index.php?senden=erfolgreich

dann würdest du etwas abfragen wie
PHP:
if($_GET['senden'] == "erfolgreich") {
  echo "Senden des Formulars war erfolgreich";
}
 
Ich habe deinen Code übernommen und eine Abfrage falls das Feld leer sein sollte, hinzugefügt aber irgendwie ist da noch was verkehrt.

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 der "erfolgreich" Text auch nicht.

andy


PHP:
<?php

$empfaenger = '[email protected]';
$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");

?>
 
Du musst folgendes machen
PHP:
header("Location: index.php?email=erfolgreich");

Der Header kann nicht mehr ausgeführt werden sobald irgend etwas auf der Seite ausgegebn wird.
Außerdem würde der user ja eh nichts sehen wenn der Server weiter leiten würde :D
Somit muss die Abfrage auf die index.php :)
 
Kann die Lösung nur so aussehen, dass es für jeden Fall (Feld leer, Bestätigung), eine gesonderte xhtml Seite gibt? Denn mir sind keine xhtml Befehle bekannt, die innerhalb eines Codes, abhängig von PHP, Mal Angaben anzeigen, Mal nicht.

Sehe ich das so richtig?

andy
 
Also grundsätzlich werden solche Sachen mit PHP gemacht. du fragst ab: ist das eingetreten: Wenn ja: Setze einen text (Meist wird das nicht direkt über echo gemacht sondenr nur eine Variable gesetzt)
Beispiel:
PHP:
<?php

if($_GET['username'] == "") {
  $fehler = "<p>Username entspricht nicht den Anforderungen</p>";
} else {
  $fehler = "";
}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
    </head>
    <body>
      <form action="index.php">
         <?php echo $fehler; ?>
         <input type="text" name="username">
      </form>
    </body>
</html>
<
Wenn nein: Die Variable bleibt leer oder kriegt den wert "" <-- leerer String
So wirds halt in der Regel gemacht :D
 
Vielen Dank Gilles, deine Tipps haben mir viel geholfen. Als nächstes werde ich einige Bücher kaufen um das Gerüst besser zu verstehen und kennen zu lernen.

andy
 
Zurück
Oben