Adam: Formular tut nicht das was es tun sollte, oder bin ich blind

...oder fehlt mir die grundsätzliche Ahnung?

 <form name="formular" action="mail.php" method="post" autocomplete="on">  
  
  
			<p> <label for="username" class="iconic user" > Name <span class="required">*</span></label> <input type="text" name="username" id="username"  required="required" placeholder="Ihr Name"  /> </p>  
  
  
  
			<p> <label for="email" class="iconic mail-alt"> E-mail Adresse <span class="required">*</span></label> <input type="email" name="email" id="email" placeholder="Notwendig" required="required"  /> </p>  
			  
<p class="keeplogin">  
									  
								</p>  
			<p> <label for="text" class="iconic comment"> Anschrift  <span class="required">*</span></label> <textarea placeholder="Bitte geben Sie hier Ihre Anschrift ein. "  required="required" ></textarea> </p>  
			<p class="indication"> Alle Felder mit einem <span class="required">*</span> müssen ausgefüllt werden</p>  
		<input type="checkbox" name="loginkeeping" id="loginkeeping" value="loginkeeping" />  
									<label for="loginkeeping">Teilnahmebedingung gelesen</label>  
			<input type="submit" value="   Versenden   " />		  
  
		</form>	

Das ist mein html Formular, soweit ja logisch
Ich Frage nach Name, Mail und Adresse ab und lege diese in Variablen.

Dann kommt mein php Formular:

  
  <?php  
    $Empfaenger = "mailadresse@xxxxxxxxxxxxxxxx.de";  
	$danke = "http://www.meine website.de";  
    if($_REQUEST['submit']){  
      if(empty($_REQUEST['username']) || empty($_REQUEST['email'])  
       || empty($_REQUEST['text']))  
      {  
        echo"Bitte gehen Sie <a href=\"javascript:history.back();\">  
        zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus";  
      }  
      else{  
        $Mailnachricht="Formular\n\n";  
        while(list($Formularfeld, $Wert)=each($_REQUEST))  
        {  
          if($Formularfeld!="submit")  
          {  
            $Mailnachricht .= $Formularfeld.": ".$Wert."\n";  
          }  
        }  
        $Mailnachricht .= "\nDatum/Zeit: ";  
        $Mailnachricht .= date("d.m.Y H:i:s");  
        $Mailbetreff = "Kontakt: ";  
        $Mailbetreff .= $_REQUEST['Betreff'];  
	  
        mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: "  
        .$_REQUEST['email']);  
        echo "angekommen:        \n".$Mailnachricht;      }  
    }  
    else  
    {  
      echo".";  
    }  
    ?>  
  
<meta http-equiv="refresh" content="0; url=<?echo $danke;?>">  

Aber passieren tut da nichts, habe mich dabei an die Anleitung von 1&1 gehalten.
Es wird die php Datei aufgerufen, diese soll ja zuerst die Mail versenden und dann soll Sie zur Startseite zurücklinken. Das zweite tut Sie aber die Mail wird nicht versendet :(

  1. hi,

    Aber passieren tut da nichts, habe mich dabei an die Anleitung von 1&1 gehalten.
    Es wird die php Datei aufgerufen, diese soll ja zuerst die Mail versenden und dann soll Sie zur Startseite zurücklinken. Das zweite tut Sie aber die Mail wird nicht versendet :(

    Dein Code sieht ein bischen komisch aus, müßig die Fehlersuche, viele Vermutungen ;)
    Mail ist ein Thema für sich. Von der Serverkonfiguration abhängig und viel Verständnis erfordernd fürs Protokoll SMTP. Am besten macht sich ein Template für die Maildatei, die Werte werden da eingetragen und die Datei wird über ein PIPE an den am Server konfigurierten MTA übergeben. Einen kleinen Artikel hierzu hab ich grad am Wickel ;)

    Hotti

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. hi,

      Aber passieren tut da nichts, habe mich dabei an die Anleitung von 1&1 gehalten.
      Es wird die php Datei aufgerufen, diese soll ja zuerst die Mail versenden und dann soll Sie zur Startseite zurücklinken. Das zweite tut Sie aber die Mail wird nicht versendet :(

      Dein Code sieht ein bischen komisch aus, müßig die Fehlersuche, viele Vermutungen ;)

      Es stammt ursprünglich von http://tympanus.net/codrops/2012/03/27/login-and-registration-form-with-html5-and-css3/
      was ich sehr schön finde, da man natürlich mit html5 deutlich mehr Möglichkeiten hat. Wie gesagt ich bin eher Anfänger als Profi, aber man kann nur lernen, wenn man Dinge übernimmt und abändert und damit variiert.

    2. Hallo,

      ... Am besten macht sich ein Template für die Maildatei, die Werte werden da eingetragen und die Datei wird über ein PIPE an den am Server konfigurierten MTA übergeben. Einen kleinen Artikel hierzu hab ich grad am Wickel ;)

      Templates sind in 99% aller Fälle eine gute, richtige und sinnvolle Lösung! Sie sind die Eierlegendenwollmilchsäue jeglicher Programmieraufgabe (auch für Probleme mit 1&1 Baukastenmails). Schnell ein Tempalte gebaut - wie ist eigentlich egal-, Schwupps erledigt und ohne viel Aufwand für den Programmierer.
      Ich muss mal schauen... War da nicht neulich sogar ein Post mit einem Template, das gegen Fußpilz hilft? ;-)

      Viele Grüße
      Siri

      1. hi,

        Ich muss mal schauen... War da nicht neulich sogar ein Post mit einem Template, das gegen Fußpilz hilft? ;-)

        Fußpilz ist out. Hier ist der Nagelpilz:

        Oifache Süntachs;

          
        <?php  
          
          
        $hunt = array(  
        	'from' => 'otto@example.org',  
        	'to'   => 'hans@example.org',  
        	'mesg' => "Hallö, mich gähts gu un dich auch hä? Grüße Dir!!",  
        );  
          
        try{  
        	$template = include 'Mailer.php';  
        	$mailer = new Mailer($template, $hunt);  
        	$mailer->senden();  
        	echo "Mail is raus!";  
        }  
        catch(Exception $e){  
        	echo $e;  
        }  
          
          
        ?>  
        
        

        Noch oifacheres Klass;

          
        <?php  
          
        class Mailer{  
        	private $MTA = '/usr/sbin/sendmail -t';  
          
        	function __construct($template, $hunt){  
        		$requires = array('from','to','mesg');  
        		foreach($requires as $required_field){  
        			if(! isset($hunt[$required_field])){  
        				throw new Exception("Required: '$required_field' is missing!");  
        			}  
        		}  
        		$hunt['mesg'] = base64_encode($hunt['mesg']);  
        		$values = array_combine($requires, $hunt);  
        		$this->MAILFILE = vsprintf($template, $values);  
        	}  
          
        	public function senden(){  
        		if(! $pipe = popen($this->MTA, 'w')){  
        			throw new Exception("MTA '$this->MTA' is not available");  
        		}  
        		fputs($pipe, $this->MAILFILE);  
        		fclose($pipe);  
        	}  
          
        }  
          
        /* ~~~~~~~~~ Mail Template ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */  
        return <<<'DATA'  
        Content-Transfer-Encoding: base64  
        Content-Type: text/plain; charset=UTF-8  
        From: %s  
        To: %s  
        Subject: Feedback  
          
        %s  
          
        DATA;  
          
        
        

        Horst Pfifferling

        1. Jau! Und wie hülfe dies dem jungen Manne bei seinem Problem mit dem Formmailer von 1&1?

          1. Jau! Und wie hülfe dies dem jungen Manne bei seinem Problem mit dem Formmailer von 1&1?

            Er möchte 1 und 1 zusammenrechnen und sehen, dass 1&1 NICHT immer das gewünschte Ergebnis ist.

            Hotti

            --
            1 + 1 => 10;
            1. Jau! Und wie hülfe dies dem jungen Manne bei seinem Problem mit dem Formmailer von 1&1?

              Er möchte 1 und 1 zusammenrechnen und sehen, dass 1&1 NICHT immer das gewünschte Ergebnis ist.

              Hm der gute Adam nutzt für größere Kalkulationen einen Taschenrechner. Im Grunde genommen werde ich wohl das Problem bei jedem Provider haben, da es ein PHP Problem ist. Irgendwie müßte ich jetzt einen passenden Smiley hinsetzen, das man es versteht. Hm mir fehlen jetzt die passenden Worte, daher versuche ich zu umschreiben was ich meine.
              Mir ist klar, das mein Problem Providerunabhängig ist, es ist ein Error-40 (Der Fehler sitzt 40cm vor dem Bildschirm).

              1. Jau! Und wie hülfe dies dem jungen Manne bei seinem Problem mit dem Formmailer von 1&1?

                Er möchte 1 und 1 zusammenrechnen und sehen, dass 1&1 NICHT immer das gewünschte Ergebnis ist.

                Hm der gute Adam nutzt für größere Kalkulationen einen Taschenrechner. Im Grunde genommen werde ich wohl das Problem bei jedem Provider haben, da es ein PHP Problem ist. Irgendwie müßte ich jetzt einen passenden Smiley hinsetzen, das man es versteht. Hm mir fehlen jetzt die passenden Worte, daher versuche ich zu umschreiben was ich meine.

                Ok, versuchen wir es. Hier meine erste Erfahrung: Ein Mailer-Script ist immer vom Provider abhängig.

                Mir ist klar, das mein Problem Providerunabhängig ist, es ist ein Error-40 (Der Fehler sitzt 40cm vor dem Bildschirm).

                Das hast du aber sehr schön formuliert. Btw., mein heutiger Artikel ist auch fertig, siehe Link.
                Und da fließt meine zweite Erfahrung ein: Wenn Du aus Fehlern lernen kannst, dann darfst Du auch welche machen ;)

                Hotti

  2. ...oder fehlt mir die grundsätzliche Ahnung?

    zumindest das Verständnis für die wichtigen Details.

    <form name="formular" action="mail.php" method="post" autocomplete="on">

    ...
    </form>

    
    >   
    > Das ist mein html Formular, soweit ja logisch  
    > Ich Frage nach Name, Mail und Adresse ab und lege diese in Variablen.  
      
    äh, nein, mit Variablen passiert da noch nichts. Du fragst die Angaben in einem Formular ab und verschickst sie an den Server.  
      
    
    > ~~~php
    
      <?php  
    
    >     $Empfaenger = "mailadresse@xxxxxxxxxxxxxxxx.de";  
    > 	$danke = "http://www.meine website.de";  
    >     if($_REQUEST['submit']){
    
    

    Fällt dir bis hier etwas auf? - Genau, dein Formular hat gar kein Feld mit dem Namen(!) "submit". Sicher, es hat einen Submit-Button. Der hat aber kein name-Attribut und tritt deshalb nicht in den Formulardaten auf.
    Übrigens: Selbst wenn er einen Namen hätte, könnte er ebensogut fehlen, wenn das Formular nicht durch Klicken auf den Submit-Button abgeschickt wird, sondern normal durch Drücken der Enter-Taste.

    Ergo: Dieser Teil der Abfrage ist Unfug, weil die Bedingung, die du da stellst, nie erfüllt ist. Lass diese Bedingung weg, ersetze sie allenfalls durch

    if ($_SERVER['REQUEST_METHOD']=="POST")

    Dann kann dir schon mal kein Spaßvogel das Script mit GET aufrufen und dadurch eine Nachricht verschicken.

    Davon abgesehen frage ich mich sowieso, warum du $_REQUEST abfragst und nicht konkret $_POST. Dein Mail-Script würde die Daten also genauso dankbar annehmen und verarbeiten, wenn man sie per GET übermittelt. Ist das so gewollt? Glaube ich nicht.

    echo"Bitte gehen Sie <a href="javascript:history.back();">
            zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus";

    Och nööö - Umlaute verst&uuml;mmeln? Wer macht denn sowas ...
    Auch die Schleife über alle Einträge in $_REQUEST zum Zusammenbauen des Nachrichtentexts ist ungünstig. Ich kann also _beliebig_ benamste Felder übergeben, wie ich gerade lustig bin.
    Tipp: Das Konzept des Affenformulars könnte dich interessieren.

    $Mailbetreff .= $_REQUEST['Betreff'];

    Hast du ein Glück, dass PHP das Subject selbst noch rudimentär prüft, ansonsten würde diese Stelle dein Script zu einer tollen Spamschleuder machen. Was ist, wenn ich Betreff=Terminanfrage%0D%0ACC:%20somebodyelse@example.org übergebe?

    mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: "
            .$_REQUEST['email']);
            echo "angekommen:        \n".$Mailnachricht;      }

    Die Aussage "angekommen" ist völlig falsch. Erstens fragst du den Erfolg von mail() nicht ab. Und selbst wenn du es tun würdest, könntest du an dieser Stelle nur sagen, dass du die Nachricht zum Versand abgegeben hast. Ob sie wirklich versendet wird, geschweige denn ankommt, steht in den Sternen.

    Aber passieren tut da nichts, habe mich dabei an die Anleitung von 1&1 gehalten.
    Es wird die php Datei aufgerufen, diese soll ja zuerst die Mail versenden und dann soll Sie zur Startseite zurücklinken. Das zweite tut Sie aber die Mail wird nicht versendet :(

    Warum überhaupt die Weiterleitung? Warum gibst du die Antwortseite nicht direkt durch mail.php aus?

    So long,
     Martin

    --
    Früher habe ich mich vor der Arbeit gedrückt. Heute könnte ich stundenlang zusehen.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Warum überhaupt die Weiterleitung? Warum gibst du die Antwortseite nicht direkt durch mail.php aus?

      Die Seite lautet z.B.
      formular.website.de
      Dann füllt jemand das Formular aus und dann wird er auf www.website.de weitergeleitet.
      Das ist eigentlich der ganze Hintergrund.

    2. Warum überhaupt die Weiterleitung? Warum gibst du die Antwortseite nicht direkt durch mail.php aus?

      Hallo Martin!

      Dafür gibt es schon einen anführbaren Grund. Wenn die mail.php die Antwortseite ausliefert, dann kann der Benutzer mit [F5] einen weiteren Versand anstoßen. Freilich stolpert er dabei (wegen method="post") über die Rückfrage, ob die Formulardaten nochmals gesendet werden sollen.

      Ich gehe davon aus, DU weißt das.

      Ich kann also _beliebig_ benamste Felder übergeben, wie ich gerade lustig bin.

      Das kann man "typisches "Formailer"-Verhalten" nennen. Freilich kann und sollte man das "festnageln" (in dem man gegen eine eine Liste erwarteter Formularfelder prüft, jedenfalls wenn man keinen universellen Formmailer braucht. Am Ende bekommt man noch "merkwürdige Dateianhänge" vom "eigenen Webserver" geschickt. Sowas wie "Error_Log"(.com)

      Jörg Reinholz

      1. Hallo,

        Warum überhaupt die Weiterleitung? Warum gibst du die Antwortseite nicht direkt durch mail.php aus?
        Dafür gibt es schon einen anführbaren Grund. Wenn die mail.php die Antwortseite ausliefert, dann kann der Benutzer mit [F5] einen weiteren Versand anstoßen. Freilich stolpert er dabei (wegen method="post") über die Rückfrage, ob die Formulardaten nochmals gesendet werden sollen.

        stimmt, das wäre unerwünscht.

        Ich gehe davon aus, DU weißt das.

        Latent schon, aber im Moment hatte ich nicht daran gedacht.

        Ciao,
         Martin

        --
        Der Alptraum jedes Computers:
        "Mir war, als hätte ich gerade eine 2 gesehen."
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    3. <?php

      $Empfaenger = "mailadresse@xxxxxxxxxxxxxxxx.de";
      $danke = "http://www.meine website.de";
          if($_REQUEST['submit']){

      
      >   
      > Fällt dir bis hier etwas auf? - Genau, dein Formular hat gar kein Feld mit dem Namen(!) "submit". Sicher, es hat einen Submit-Button. Der hat aber kein name-Attribut und tritt deshalb nicht in den Formulardaten auf.  
      > Übrigens: Selbst wenn er einen Namen hätte, könnte er ebensogut fehlen, wenn das Formular nicht durch Klicken auf den Submit-Button abgeschickt wird, sondern normal durch Drücken der Enter-Taste.  
        
      Moment das submit ist ja das Auslösen des Formulars zur Weiterverarbeitung in einer php Datei.
      
      1. Moin,

        <?php

        $Empfaenger = "mailadresse@xxxxxxxxxxxxxxxx.de";
        $danke = "http://www.meine website.de";
            if($_REQUEST['submit']){

        
        > >   
        > > Fällt dir bis hier etwas auf? - Genau, dein Formular hat gar kein Feld mit dem Namen(!) "submit". Sicher, es hat einen Submit-Button. Der hat aber kein name-Attribut und tritt deshalb nicht in den Formulardaten auf.  
        > > Übrigens: Selbst wenn er einen Namen hätte, könnte er ebensogut fehlen, wenn das Formular nicht durch Klicken auf den Submit-Button abgeschickt wird, sondern normal durch Drücken der Enter-Taste.  
        > Moment das submit ist ja das Auslösen des Formulars zur Weiterverarbeitung in einer php Datei.  
          
        ja, das kann man so durchgehen lassen. Submit (Absenden) ist das Zusammenstellen der Formulareingaben in Pärchen der Form name=value und das Versenden dieser Daten an den Server - wahlweise als URL-Parameter (GET) oder im Request Body (POST). Wie dieser Request dann verarbeitet wird und welche Techniken dabei zum Einsatz kommen (PHP, Perl, C++, Python), ist für das Prinzip des Submit-Vorgangs belanglos.  
          
        Allerdings sind nicht zwingend alle Formulardaten im Request enthalten; nicht gewählte Checkboxen und Radiobuttons fallen beispielsweise raus - aber ebenso die nicht explizit angeklickten submit-Buttons. Das ist vor allem interessant, wenn man ein Formular mit mehreren Submits hat, die verschiedene Aktionen auslösen sollen, wie etwa "Vorschau" und "Absenden" hier im Posting-Formular. So kann das verarbeitende Script erkennen, \_welcher\_ Submit-Button benutzt wurde.  
          
        Wurde aber gar keiner benutzt, weil das Formular einfach mit der Enter-Taste abgeschickt wurde, dann ist auch keiner in den übermittelten Formulardaten enthalten. Darauf wollte ich eigentlich hinaus.  
          
        So long,  
         Martin  
        
        -- 
        [why the heck](http://community.de.selfhtml.org/zitatesammlung/zitat175) do you jerk think, that wir ein doppelposting nicht bemerken, wenn you zwischendurch the sprache wechselst?  
          (wahsaga)  
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        
        1. Tach!

          Wurde aber gar keiner benutzt, weil das Formular einfach mit der Enter-Taste abgeschickt wurde, dann ist auch keiner in den übermittelten Formulardaten enthalten.

          Das stimmt nicht (mehr). Alle aktuellen Browser senden dann das name-value-Pärchen vom ersten im Formular zu findenden Button. Und das ist in HTML5 explizit so geregelt. In der HTML-4-Spezifikation war das nicht erwähnt und wurde meines Erachtens von den Browserherstellern (außer IE 6) falsch implementiert, denn die machten das schon so, wie es nun definiert ist, lange bevor von HTML5 die Rede war.

          HTML 4.01 sagte, dass nur "successful controls valid for submission sind". Zu Buttons steht nur, dass bei mehreren nur der aktivierte Button successful ist. Kein Wort, was bei nur einem Button zu geschehen habe. Wenn keiner geklickt wurde, ist keiner aktiviert, und damit keiner successful. Das sehen wohl andere anders und meinen, dass der erste der Default-Button wird und impliziert aktiviert wird.

          dedlfix.

  3. Hallo Adam!

    Wenn Du wissen und sofort sehen willst was ankommt, dann notiere bei Skripten die Benutzerdaten verarbeiten immer folgendes ganz oben:

    <?php  
    ## Zum Debuggen eine Raute an die ersten Stelle der Folgezeile setzen##  
    #/*  
    print '<pre><b>$_POST:</b> ';print_r($_POST);print '</pre>';  
    print '<pre><b>$_GET:</b> ';print_r($_GET);print '</pre>';  
    print '<pre><b>$_COOKIE:</b> ';print_r($_COOKIE);print '</pre>';  
    session_start();print '<pre><b>$_SESSION:</b> ';print_r($_SESSION);print'</pre>';  
    print '<pre><b>$_REQUEST:</b> ';print_r($_REQUEST);print '</pre>';  
    print '<pre><b>$_SERVER:</b> ';print_r($_SERVER);print '</pre>';  
    exit;  
    #*/  
    
    

    Das Ergebnis ist in den meisten Fällen sehr erhellend.

    Jörg Reinholz

    1. Hallo,

      <?php

      Zum Debuggen eine Raute an die ersten Stelle der Folgezeile setzen##

      #/*

        
      ich bin verblüfft ... tatsächlich, auch das Rauten-Zeichen ist erlaubt, um einen [einzeiligen Kommentar](http://www.php.net/manual/en/language.basic-syntax.comments.php) einzuleiten. Wusste ich bisher nicht, danke.  
        
      
      > ~~~php
      
      print '<pre><b>$_POST:</b> ';print_r($_POST);print '</pre>';  
      
      > print '<pre><b>$_GET:</b> ';print_r($_GET);print '</pre>';  
      > print '<pre><b>$_COOKIE:</b> ';print_r($_COOKIE);print '</pre>';  
      > session_start();print '<pre><b>$_SESSION:</b> ';print_r($_SESSION);print'</pre>';
      
      

      Autsch. Nein. An dieser Stelle kannst du keine Session mehr starten - es sei denn mit zusätzlichen schweren Geschützen wie output buffering. Der Aufruf von session_start() sollte ganz am Anfang stehen, vor der ersten Ausgabe.

      Das Ergebnis ist in den meisten Fällen sehr erhellend.

      Von der Kleinigkeit mit der Session abgesehen, ja. Guter Rat.

      Ciao,
       Martin

      --
      Sozial ist, wenn andere bezahlen.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Autsch. Nein. An dieser Stelle kannst du keine Session mehr starten - es sei denn mit zusätzlichen schweren Geschützen wie output buffering. Der Aufruf von session_start() sollte ganz am Anfang stehen, vor der ersten Ausgabe.

        Klar. Du hast damit natürlich Recht. Ich war jetzt mal ein paar Tage krank (so richtig mit hohem Fieber, 2 Tage am Stück im Bett, und so weiter). Der von mir verzapfte Unsinn mit der Session ist wohl als "Vorbote" richtig benannt.

        <?php  
        #### Zum Debuggen eine Raute an die ersten Stelle der Folgezeile setzen#####  
        #/*  
          
        #### Falls die Session interessiert: Raute löschen ####  
        #session_start();print '<pre><b>$_SESSION:</b> ';print_r($_SESSION);print'</pre>';  
          
        print '<pre><b>$_POST:</b> ';print_r($_POST);print '</pre>';  
          
        print '<pre><b>$_GET:</b> ';print_r($_GET);print '</pre>';  
          
        #### Falls Cookies interessieren: Raute löschen ####  
        #print '<pre><b>$_COOKIE:</b> ';print_r($_COOKIE);print '</pre>';  
          
        #### Falls das Skript nach den Ausgaben weiter laufen soll: nächste Zeile auskommentieren####  
        exit;  
        #*/
        
  4. Habe nun meine PHP Datei überarbeitet, so funktioniert es, auch Dank zahlreicher Hinweise hier im Forum und der guten alten Tante google.

      
      
    <?php  
    $username = $_POST["username"];  
    $email = $_POST["email"];  
      
    ?>  
      
      
    <?php  
    $subject = "test";  
    $from = "test@testtesttest.de";  
    $to = "test@testtesttest.de";  
    $message = "Juhu mein Formular funktioniert ein Eintrag von " .$username. "\n\n"  
      
     .$email. "\n\n"  
      
      
      
      
     ;  
      
      
      
    $laengeemail = strlen($email);  
    // if ($laengeemail > 5) {  
    mail ($to,$subject,$message,"From: $from");  
    echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">";  
    echo "<center>";  
    echo "test";  
    echo "<br><br>";  
    echo "</center>";  
      
    ?><br>  
    <center><b><a href="javascript:history.back()">zurück</a><br>  
      
    
    
    1. Tach!

      Noch zwei kleine Empfehlungen:

      $username = $_POST["username"];
      $email = $_POST["email"];

      Du verwendest anschließend $username einmal und $email zweimal. Das unnötige Umkopieren ergibt noch nicht einmal eine Schreibersparnis. Spar dir das Anlegen unnötiger zusätzlicher Variablen und verwende die $_POST-Einträge direkt.

      $from = "test@testtesttest.de";
      $to = "test@testtesttest.de";

      Es gibt extra Domainnamen, damit man nicht in mögliche Konflikte mit irgendwelchen (potentiell) real existierenden Domains kommt. Nimm also lieber example.com (aber nicht example.de, das ist eine real existierende).

      dedlfix.

      1. Tach!

        Noch zwei kleine Empfehlungen:

        $username = $_POST["username"];
        $email = $_POST["email"];

        Du verwendest anschließend $username einmal und $email zweimal. Das unnötige Umkopieren ergibt noch nicht einmal eine Schreibersparnis. Spar dir das Anlegen unnötiger zusätzlicher Variablen und verwende die $_POST-Einträge direkt.

        $from = "test@testtesttest.de";
        $to = "test@testtesttest.de";

        Danke für den Tipp!

        Mir ist auch noch aufgefallen, das ich noch eine Abfrage einbauen muß das man das Formular nicht leer schicken kann. Wenn man nur die PHP Datei aufruft wird alles leer geschickt, das muß ich noch irgendwie einbauen.

        Adam, der ein bißchen stolz auf sich ist.

        1. Tach!

          Mir ist auch noch aufgefallen, das ich noch eine Abfrage einbauen muß das man das Formular nicht leer schicken kann. Wenn man nur die PHP Datei aufruft wird alles leer geschickt, das muß ich noch irgendwie einbauen.

          Affenformular wäre ein Stichwort, nach dem du mal suchen kannst. Um die Frage direkt zu beantworten: Wenn !empty($_POST), dann wurde das Formular abgesendet, denn es befinden sich Werte im $_POST-Array.

          dedlfix.