Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular Script

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Formular Script

    Hallo allerseits

    Ich bin neu hier, daher zuerst einmal ein fettes Hallo an alle!

    Ich habe ein Formular Script:

    PHP-Code:
    <?php

    //die eMailadresse, an die das Formular gehen soll
    $empfaenger "meine@email.com";

    //Der Betreff für das eMail, das sie erhalten werden
    $betreff "Mein Kontaktformular";

    //Titel ihrer Website
    $webSiteTitel "Mein Kontaktformular"

    //Wo sollen Benutzer eine Fehlermeldung hinschicken, falls etwas nicht funktioniert? Die kann die gleiche sein wie die,
    //wo das Formular hingeschickt wird.
    $fehleradresse "Fehlermeldung@ihreDomain.de";

    //Überschrift
    $ueberschrift "Kontaktformular";

    //Überschrift von dem Formular
    $ormularueberschrift "Schnell und einfach. Nutzen sie das Formular.";

    //Überschrift von dem Textfeld
    $textfeldUeberschrift "Geben sie hier ihr Anliegen ein:";

    //Überschrift von dem Namensfeld
    $namensfeldUeberschrift "Ihr Name:";

    //Überschrift von dem eMailfeld
    $eMailfeldUeberschrift "Ihre eMailadresse";

    //Textausgabe bei einer fehlerhaften eMailangabe
    $fehlerhafteEMailangabe "Bitte korrigieren sie die Adresse!";

    //Name des Sende Buttons
    $sendeButton "abschicken!";

    //Name des Lösch Buttons
    $loeschButton "nochmal neu!";

    //Erfolgreiches Versenden: Mitteilung an den Benutzer
    $versendenErfolgreich "Vielen Dank, wir setzen uns baldmöglichst mit ihnen in Verbindung";

    //Benutzen sie eine css Datei zur Formatierung? Wenn ja, dann geben sie hier der Pfad inkl. Datei an
    //Haben sie keine, so lassen sie die Variable = ""
    $cssDatei "irgendein.css";

    ////////////// 
     //Ab hier sollten sie nur noch weiter ausfüllen, wenn sie wissen was sie tun.
    ////////////// 
     
     
    $umg_ref getenv(HTTP_REFERER);
    $umg_bro getenv(HTTP_USER_AGENT);
    $umg_zeit date("l  j. F Y - G.i.s");


    //Die Adresse aus dem Formular
    $absender $email;



                                 
    //Funktion zum zusammenstellen des Inhaltes
    //Dies wird das eMail sein, was sie zugeschickt bekommen

    function inhaltformat($umg_ref,$umg_bro,$umg_zeit,$absender,$name,$text)
             {
             
    $inhalt  =  "$name mit dieser eMailadresse: $absender\n";
             
    $inhalt .= "hat folgende Nachricht abgeschickt:\n";
             
    $inhalt .=  $text."\n";
             
    $inhalt .= "*************Umgebung***************\n";
             
    $inhalt .=  $umg_ref."\n";
             
    $inhalt .=  $umg_bro."\n";
             
    $inhalt .=  $umg_zeit."\n";
             return 
    $inhalt;
             }

    //Das eMail mit passendem Inhalt verschicken    
         
    function verschicken($inhalt,$empfaenger,$absender,$betreff)
             {
             
    $kopf "From: $absender\nReply-To:$absender\nX-Mailer:FormFix1.1.0";
             
    mail($empfaenger"Kontaktformular"$inhalt$kopf);
             
    //printf ("

    Nachricht erfolgreich verschickt!

    ");
             }
             
    //Das Script hört vorläufig auf


    //////////////
    //Dies ist ihre Seite mit dem Formular. Weitere Header Informationen können sie von Hand einfügen
    //////////////

    ?>
    Und das ist der Body

    Code:
    <?
    
    //////////////
    //Das Script wird 2x durchlaufen, vor dem abschicken und nach dem abschicken.
    //Vorausgesetzt, der 1. Durchlauf war erfolgreich, beginnen wir hier mit dem Script
    //Die eMail Adresse wird auf ihre Richtigkeit geprüft		 	
    //////////////
    
        $korr_em = ereg("^([_a-zA-Z0-9-]+)(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email);
    //Eine Textvariable	  
        $var_text = $text;
    
    //Falls die eMail ADresse falsch ist, soll auch der Text ungültig werden
        if  ($email AND !$korr_em) $var_text = false;
    //Eine if Abfrage klärt, ob das Formular bereits bearbeitet und abgeschickt wurde (Entweder Text oder eMail plus Los Button
        if  ($los AND ($var_text OR ($email AND $korr_em)))	  
    	   {
    //Wenn ja, dann wird der Inhalt formatiert und abgeschickt
    				   $inhalt = inhaltformat ($umg_ref,$umg_bro,$umg_zeit,$absender,$name,$text);
    				   verschicken ($inhalt,$empfaenger,$absender,$betreff);
    //Einschub der HTML Ausgabe, die der Benutzer als Bestätigung sehen wird.				   
    ?>
      				   <h2>Ihre Nachricht</h2>
      				   
    
     <?echo $name?>:
    
                        <? echo "$text
    ";
    ?>
    					
    
    eMailadresse:
    
                        <? echo "$email 
    ";?>
    
                        <? echo "
    
    ";
                           echo $versendenErfolgreich; 
    
    //Ende der ersten Bedingung, das Script geht weiter
    				   }
    				   
    			   		
    			else
    				{
    //////////////
    //Wenn das Formular zum ersten Mal aufgerufen wird, kommt dieser Teil dran 
    //...oder wenn ein Fehler in der eMail Adresse aufgetaucht ist
    //////////////
    
    ?>
                    <h2><? echo $ueberschrift ?></h2>
      				
    
    <h5><? echo $ormularueberschrift ?></h5>
    		   	  
    		   	  <form method="post" action="<?echo $PHP_SELF?>">
    			  
    
    <? echo $textfeldUeberschrift ?>
    
    			  
        		   <textarea name="text" cols="40" rows="5"><?echo $text?></textarea>
    
    
    
    			   <? echo $namensfeldUeberschrift ?>
    
    			   <input type="text" name="name" value="<?echo $name?>">
    
    
    			   
    			   <? echo  $eMailfeldUeberschrift ?>
    
    			   
    <?//Falls die Adresse falsch ist...
    //..wäre es gleichzeitig auch ärgerlich, wenn der alte Text weg wäre...
    
    		 	   if ($email AND !$korr_em)
    		 	   	  		  {
    						  echo "<h5>"; 
    						  echo $fehlerhafteEMailangabe ;
    						  echo "</h5>";
    						  }
    ?>			   
    			   <input type="text" name="email" value="<?echo $email?>" >
    
    
    			   		    <input type="submit" value="<? echo $sendeButton ?>" name="los">
                            <input type="reset" value="<? echo $loeschButton ?>">
    				  </form>
    				  		 	  
    				
    
    Fehler? Bitte melden an <? echo $fehleradresse ?>
    <?
    			}
    ?>
    Wenn ich das ganze nun hochlade auf den Server wird das Formular korrekt angezigt. Wenn ich es aber ausfülle und absende, wird die Seite einfach neu geladen und das Form geleert. Passieren tut nichts.

    An was könnte das liegen?

    Herzlichen Dank!
    Roland

  • #2
    Hallo, willkommen im Forum.

    Zunächst mal ein Hinweis zu Deinem Script... Es sieht fürchterlich aus, weil Du es in Code-Tags gepackt hast.
    Wenn Du die PHP-Tags (Button rechts über dem Textfeld hier) verwendets, bleiben Einrückungen erhalten und es gibt ein hübsches Syntax-Highlighting.

    Such hier im Forum und/oder der PHP-Doku mal nach register_globals. Das steht bei Dir vermutlich auf off und das ist auch gut so.
    Allerdings kannst Du auf URL-Parameter und Post-Variablen nicht mehr einfach so zugreifen, sondern musst $_GET[] bzw. $_POST[] verwenden.

    Mach also statt


    PHP-Code:
    <?php
     
    if  ($los AND ....
    ?>
    richtig das hier:

    PHP-Code:
    <?php
     
    if  ($_POST['los'] AND ...
    ?>
    Natürlich auch an allen anderen Stellen ändern, an denen Du Variablen verwendest, die aus dem Form stammen sollen.
    **********************************
    Nein, ich bin nicht die Signatur.
    Ich putze hier nur.
    **********************************

    Kommentar


    • #3
      Hallo

      Besten Dank für den Support. Habe den PHP-Button nicht gesehen. Habe den Script-Teil schon mal editiert.

      Zum Problem: Ich habe nun an zwei Stellen im Formularteil

      PHP-Code:
      <?php
       
      if  ($name
      ?>
      durch

      PHP-Code:
      <?phpif  
      ($_POST['name']
      ?>
      ersetzt. Nämlich hier:



      PHP-Code:
      <?php
      if  ($_POST['email'] AND !$korr_em$var_text false;
      if  (
      $_POST['los'] AND ($var_text OR ($email AND $korr_em)))
      ?>
      Leider besteht immer noch das gleiche Problem.

      Ich habe als Test mal in meinem Hosting-Control-Center register_globals auf "Ein" geschlatet. Da hat das Form funktioniert! Aber wie Du sagst, lasse ich sie lieber auf "Aus". Was müsste ich in diesem Fall am Form noch ändern?

      Kommentar


      • #4
        Du musst alle Felder, die aus dem Formular stammen, auf diese Weise ersetzen.

        In der von Dir zuletzt geposteten IF-Abfrage reicht es nicht, $los zu ersetzen, sondern mindestens auch $email. Das ist auch ein Feld.
        Lass Dir mal mit print_r($_POST) ausgeben, was Du alles an Parametern kriegst.

        Und schreib oben in das Script auch mal die Zeile da rein:
        error_reporting(E_ALL);

        Dann meldet Dir PHP gleich, wo noch undefinierte Variablen verwendet werden. Ein ige davon dürften aus Deinem Form kommen.
        **********************************
        Nein, ich bin nicht die Signatur.
        Ich putze hier nur.
        **********************************

        Kommentar

        Lädt...
        X