Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!

Jetzt kostenlos registrieren

Formular in php

Fragen zum Thema PHP können hier gestellt werden

Moderatoren: Basti, Guillermo, Andreas W.

Formular in php

Beitragvon johalus am 16.01.2012, 13:03

Guten Tag allerseits!

möcht euch was fragen, da ich ein problem habe weiter zumachen.
mein problem war/ist dass das require,function is_mail nicht funktioniert.

und noch so andere dinge, ich hoffe ihr könnt mir auch noch vorschläge geben was man noch verbessern muss oder kann.
übrigens muss ich noch sagen dass ich noch voll in der Lern phase bin.

hier der code:

Code: Alles auswählen
<link rel="stylesheet" type="text/css" href="CSS/ContactLayout.css"/>


<h1>Beispiel f&uuml;rs Original Formular</h1>
                <div id="kontaktfeld">


    | <a href="ausloggen.php">Ausloggen</a>



<?php
require ('kennwortschutz.php');


if  (isset ( $_GET['mail']) <> "")
{

}
function is_mail ( $testmail ) {
     $searchmuster = "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/";
     $erg = preg_match ($searchmuster, $testmail);
     return ($erg > 0);
}



        if (isset ( $_GET['anrede']) == "" or $_GET['nachname'] == "" or $_GET['vorname'] == "" or $_GET['str'] == "" or $_GET['plz'] == "" or $_GET['mail'] == "" or  $_GET['nachricht'] == ""  )
         {


        // Formular Beginn

echo    '<form method="get" action="Beispiel-formular-fuers-original.php">';

echo      '<h1>Kontakt:</h1><br />';
echo      'Felder mit * müssen angegeben werden.<br />';

echo       '<br />';

if  (isset  ( $_GET['gesendet']) == "ja" )
           {
    echo       '<p><h2>Hinweis: Das Formular ist unvollständig. Bitte alle Felder Kontrollieren und nach korrigieren.</h2></p>';
        if  ( is_mail($_GET['mail']) == false)
    {
        echo "<p><h2>Hinweis: E-Mail Adresse ist Ung&uuml;ltig! Bitte Kontrollieren und nach korrigieren.</h2></p>";
        $_GET['mail'] = "";
    }        }
echo            '<br /><br /><br />';



        //Formular Felder Beginn

        echo '<label>Anrede: *</label>';
        echo '<select name="anrede" id="anrede">
              <option value="m">Herr     </option>
              <option value="w">Frau     </option></select><br />';

        echo '<br />';

        echo '<label>Nachname: *</label>';
        echo '<input type="text" name="nachname" value="" /><br />';

        echo '<label>Vorname: *</label>';
        echo '<input type="text" name="vorname" value=""/><br />';

        echo '<label>Firma:</label>';
        echo '<input type="text" name="firma" value=""/><br />';

        echo '<label>Straße / Nr: *</label>';
        echo '<input type="text" name="str" value=""/><br />';

        echo '<label>PLZ / Ort: *</label>';
        echo '<input class="small" type="text" name="plz" value=""/>
              <input  class="medium"type="text" name="plz" value=""/><br />';

        echo '<label>Telefon:</label>';
        echo '<input class="small" type="text" name="tel" value="+41"/>
              <input  class="medium"type="text" name="tel" value=""/><br />';

        echo '<label>E-Mail: *</label>';
        echo '<input type="text" name="mail" value=""/><br />';

        echo '<label>Nachricht: *</label>';
        echo '<textarea name="nachricht" id="nachricht" rows="20" cols="42"></textarea>';

        echo '<br />';
        echo '<br />';

        echo '<input type="hidden" name="gesendet" value="ja"/>';
        echo '<input class="submitbutton" type="submit" value="Absenden"/>';

echo '</form>';
    //Formular Felder END

                // Formular END
        }
            else
         {
                  echo  '<h1>Vielen dank...</h1>';
                  echo  '<p>Vielen Dank f&uuml;r Ihre Nachricht</p>';

                  $empfaenger ="@gmx.net";
                  $inhaltbetreff ="Anfrage von Website" .$_GET['anrede'] = $_GET['nachname'] = $_GET['vorname'];
                  $inhaltmail ="Anfrage von E-Mail";
         }




?>




  </div>

johalus
Mitglied
 
Beiträge: 5
Registriert: 16.01.2012, 12:49
Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!
 
Jetzt kostenlos registrieren

Re: Formular in php

Beitragvon johalus am 17.01.2012, 09:14

Ich hab da noch eine andere variante gebaut, jetzt ist die frage welches von dennen ist brauchbar? Und hab ich den php code auch richtig geschrieben? :roll:


Code war fehlerhaft, wurde durch ein relativ funktionierendes php code ersetzt.
Code: Alles auswählen
    <?php



        if($_GET['button'] == "Absenden")
        #wenn der submit button gedrückt wurde
        {
            if($_GET['nachname'] != "" AND $_GET['vorname'] != "" AND $_GET['str'] != "" AND $_GET['plz'] != "" AND $_GET['mail'] != "" AND $_GET['nachricht'] != "")
            #wenn die pflichtfelder gedrückt wurden
            {
                    function is_mail ($email)
                    {
                        $searchmuster = "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/";
                        $ergebnis = preg_match ($searchmuster, $email);
                        return ($ergebnis);
                    }

                    $return = is_mail($_GET['mail']);
                    #funktion wird aufgerufen und variable übergeben

                    if( $return == 0)
                    #wird zurück gegeben wenn weder ein . noch ein @ in der "mail" gefunden wurden
                    {
                        die("Es handelt sich um keine g&uuml;ltige email");
                    }
            }



            else
            {
                # für jedes input feld, dass nicht ausgefüllt wurde soll eine meldung herausgegeben werden
                foreach( $_GET as $information => $angabe )
                {
                    if( empty($angabe) )
                    {
                        echo $information . " wurde nicht ausgef&uuml;llt.<br /><br />";
                    }
                }
            }
    }

         $emfaenger = "@gmx.ch" ;
         $inhaltbertreff = "Kontaktierung von Website" ;
         $inhaltmail = "Anfrage von Website" . $_POST['nachricht'];
         $inhaltmail .= "Anfrage von E-Mail:". $_POST['mail'];

         mail ($emfaenger, $inhaltbertreff, $inhaltmail);





    ?>



Habe noch einen Weiteren Code. Inhalt des codes ist wie man Spam verhindern kann, so gut wie es geht. ( Tutorial aus einer internet seite )

Code: Alles auswählen
                            function ($tuersteher)
                            {
                              $taeter[] = '%0A';
                              $taeter[] =  'to:';
                              $taeter[] =   'cc:';
                              $taeter[] =   'bcc:';
                              $taeter[] =   'from:';
                              $taeter[] =   'subject:';
                              $taeter[] =   'reply-to:';
                              $taeter[] =    'content-type:';
                              $taeter[] =    'mime-version:';
                              $taeter[] =    'multipart/mixed';
                              $taeter[] =    'content-transfer-encoding:';

                                    foreach ($taeter AS $einzeltaeter )
                                    {
                                            if (eregi ($einzeltaeter, $tuersteher )
                                            {
                                                exit;
                                            }
                                    }
                            }



danke im vorraus.
Zuletzt geändert von johalus am 22.01.2012, 14:46, insgesamt 1-mal geändert.
johalus
Mitglied
 
Beiträge: 5
Registriert: 16.01.2012, 12:49

Re: Formular in php

Beitragvon Guillermo am 18.01.2012, 01:25

Hi johalus,

welche Fehlermeldungen erhältst du denn? (Um alle Fehlermeldungen zu erhalten vorher "error_reporting(E_ALL);" aufrufen)
Gebildet ist der, der weiß, wo er findet, was er nicht weiß.
Benutzeravatar
Guillermo
Moderator
 
Beiträge: 1093
Registriert: 01.10.2007, 18:18
Wohnort: Bayern

Re: Formular in php

Beitragvon johalus am 18.01.2012, 16:45

Keine ahnung was das bedeute.
Notice: Undefined variable: email in F:\xampp\htdocs\Etest\Beispiel-formular-fuers-original.php on line 113


Weiss jetzt warum diese Meldung kommt. Weil ich noch kein server besitzte.
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in F:\xampp\htdocs\Etest\Beispiel-formular-fuers-original.php on line 113

Jetzt hab ich noch eine zusätzliche frage und zwar. hab ich ja extra eine Regex erstellt und die funktioniert nicht. oder wird die umgangen? weil wenn ich z.b im formular eingebe:

nachname: E
vorname:E
E-Mail:E


eingebe heisst es dann:

Vielen dank...

Vielen Dank für Ihre Nachricht.


und das soll erst vorkommen wenn die Email adresse und formular daten ausgefüllt wurden-
abpropo ausfülle, wenn ich es ausfülle (ohne email) dann steht ja
Hinweis: Das Formular ist unvollständig. Bitte alle Felder Kontrollieren und nach korrigieren.

und dies soll nur vorkommen wenn die daten nicht korrekt ausgefüllt wurden (nur die felder mit *)
johalus
Mitglied
 
Beiträge: 5
Registriert: 16.01.2012, 12:49

Re: Formular in php

Beitragvon Guillermo am 21.01.2012, 01:36

Hi johalus,

die erste Fehlermeldung bedeutet dass du mit einer Variablen "$email" in der Datei "Beispiel-formular-fuers-original.php" arbeitest die garnicht existiert. Schau mal genau nach wo du diese Variable verwendest, und was du damit machen willst. Wenn du sie weiterhin dort verwenden willst musst du sie vorher mit einem Wert belegen, das könnte z.B. so aussehen:
Code: Alles auswählen
$email = "name@provider.de";
//ODER:
$email = $_GET["mail"];


Um zu testen ob dein Programm auch wirklich e-Mails verschickt ohne es online testen zu müssen kannst du dir einen kleinen e-Mail Server konfigurieren. Den Server, also das Programm an sich findest du hier: Hamster: e-Mail Server von Volker Gringmuth. Wie man ihn zum laufen bekommt ist auch sehr gut auf der Seite beschrieben.

Bei deiner Funktion die Spam e-Mails ausfiltert sehe ich außerdem einige Fehler:
Die Funktion hat keinen Funktionsnamen, der PHP Parser (Übersetzter) müsste dir hier einen Fehler anzeigen. Richtiger wäre:
Code: Alles auswählen
function FUNKTIONSNAME($tuersteher) {
    ...
}


Ich finde es außerdem komisch dass du innerhalb dieser Funktion ein exit aufrufst. Sinnvoller wäre es zurückzugeben ob der Inhalt der e-Mail gültig ist und die Fehlerbehandlung danach zu machen á la
Code: Alles auswählen
function pruefeAufFehler($email) {
    //Hier überprüfen
    if($fehler) {
        return false;
    } else {
        return true;
    }
}

//Email Inhalt auslesen
$text = ...
if(pruefeAufFehler($text) == false) {
    //Fehlerbehandlung, z.B. exit
    exit;
}


Ich rate dir nicht einfach iwelche Codeschnipsel aus Tutorials herauszunehmen und in deine Programme einzupflegen, sondern die Tutorials genau zu machen und versuchen zu verstehen was wie funktioniert und warum. Danach solltest du dann dein Programm von Grund auf neu schreiben, momentan hast du sehr sehr viele Fehler die wir dir hier nicht alle ausbessern können.

Viele Grüße,
Guillermo
Gebildet ist der, der weiß, wo er findet, was er nicht weiß.
Benutzeravatar
Guillermo
Moderator
 
Beiträge: 1093
Registriert: 01.10.2007, 18:18
Wohnort: Bayern

Re: Formular in php

Beitragvon johalus am 22.01.2012, 14:41

Also dieses Formular ist von mir erstellt worden. (Beispiel-formular-fuers-original.php)


Edit: Musste verbessert werden, der grund war das ich $_GET und $_Post gemischt hatte "ist logisch das es dann nicht funktioniert"
Code: Alles auswählen
<link rel="stylesheet" type="text/css" href="CSS/1.css"/>


<h1>Beispiel f&uuml;rs Original Formular</h1>
                <div id="kontaktfeld">






<?php

   error_reporting(E_ALL);


        if (isset ( $_POST['anrede']) == "" or $_POST['nachname'] == "" or $_POST['vorname'] == "" or $_POST['str'] == "" or $_POST['plz'] == "" or $_POST['mail'] == "" or  $_POST['nachricht'] == ""  )
    {
                          function is_mail ($email)
                    {
                        $searchmuster = "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[a-zA-Z]{2,4}$/";
                        $ergebnis = preg_match ($searchmuster, $email);
                        return ($ergebnis > 0);
                    }





if  (isset  ( $_POST['gesendet']) == "ja" )
           {
    echo       '<p><h2>Hinweis: Das Formular ist unvollständig. Bitte alle Felder Kontrollieren und nach korrigieren.</h2></p>';
            }
if  (isset ( $_POST['mail']) <> "")

{
            if  ( is_mail ($email) == false)

    {
        echo "<p><h2>Hinweis: E-Mail Adresse ist Ung&uuml;ltig! Bitte Kontrollieren und nach korrigieren.</h2></p>";
        $_POST['mail'] = "";
    }
}











        echo            '<br /><br /><br />';



                //Formular Felder Beginn
                        // Formular Beginn

        echo    '<form method="post" action="Beispiel-formular-fuers-original.php">';

        echo      '<h1>Kontakt:</h1><br />';
        echo      'Felder mit * m&uuml;ssen angegeben werden.<br />';

        echo       '<br />';


        echo '<label>Anrede: *</label>';
        echo '<select name="anrede" id="anrede">
              <option value="Herr">Herr     </option>
              <option value="Frau">Frau     </option></select><br />';

        echo '<br />';

        echo '<label>Nachname: *</label>';
        echo '<input type="text" name="nachname" value="" /><br />';

        echo '<label>Vorname: *</label>';
        echo '<input type="text" name="vorname" value=""/><br />';

        echo '<label>Firma:</label>';
        echo '<input type="text" name="firma" value=""/><br />';

        echo '<label>Stra&szlig;e / Nr: *</label>';
        echo '<input type="text" name="str" value=""/><br />';

        echo '<label>PLZ / Ort: *</label>';
        echo '<input class="small" type="text" name="plz" value=""/>
              <input  class="medium"type="text" name="plz" value=""/><br />';

        echo '<label>Telefon:</label>';
        echo '<input class="small" type="text" name="tel" value="+41"/>
              <input  class="medium"type="text" name="tel" value=""/><br />';

        echo '<label>E-Mail: *</label>';
        echo '<input type="text" name="mail" value=""/><br />';

        echo '<label>Nachricht: *</label>';
        echo '<textarea name="nachricht" id="nachricht" rows="20" cols="42"></textarea>';

        echo '<br />';
        echo '<br />';

        echo '<input type="hidden" name="gesendet" value="ja"/>';
        echo '<input class="submitbutton" type="submit" value="Absenden"/>';

echo '</form>';
    //Formular Felder END

                // Formular END
        }
            else
         {
                  echo  '<h1>Vielen dank...</h1>';
                  echo  '<p>Vielen Dank f&uuml;r Ihre Nachricht</p>';


         }

                            $emfaenger = "@gmx.ch";
                            $betreff = "Kontaktierung von Website" ;
                            $inhalvonmail = "Anfrage von Website: " . $_POST['nachricht'];
                            $inhalvonmail .= "  |  Firma: " .$_POST['firma']. "  |  Anrede: " . $_POST['anrede']. "  |  Nachname: " . $_POST['nachname']. "  |  Vorname:". $_POST['vorname']."  |  PLZ: ". $_POST['plz']."  |  Strasse: ".$_POST['str']."  |  TEL: ".$_POST['tel']."  |  E-Mail: " .$_POST['mail'];


                            mail ($emfaenger, $betreff, $inhalvonmail,"from: email\r\n");



   $email = $_POST['mail'];

?>



Tutorial:
Code: Alles auswählen
    <?php
            if  ( $_GET['mail'] == "" or $_GET['anliegen'] == "" )
    {

echo '<form method="get" action="Beispiel-formular.php">';

    echo      '<h1>Kontakt:</h1><br />';
    echo      'Felder mit * müssen angegeben werden.<br />';

    if  ( $_GET['gesendet'] == "ja" )
               {
        echo       '<p>* Bitte alle felder ausfüllen</p>';
                }

            echo '<label>E-Mail: *</label>';
            echo '<input type="text" name="mail" value="" />';

            echo '<label>NACHRICHT: *</label>';
            echo '<input type="text" name="anliegen" value="" />';

            echo '<input type="hidden" name="gesendet" value="ja"/>';
            echo '<input class="submitbutton" type="submit" value="Absenden"/>';

    echo '</form>';

            }
                else
             {
                      echo  '<h1>Vielen dank...</h1>';
                      echo  '<p>Vielen Dank f&uuml;r Ihre Nachricht</p>';
             }


    <?


Spamfilter vom Tutorial:
Code: Alles auswählen
<?php
function is_mail ( $testmail )
{
     $suchchmuster = "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/";
     $erg = preg_match ($suchchmuster, $testmail);
     return ($erg > 0);

}
?>



Dieser Code wurde von einem Bekannten geschrieben (mit mir natürlich) doch dann begann ich das => (Beispiel-formular-fuers-original.php) zu machen.

Code eines Bekannten:
Code: Alles auswählen
        <?php



            if($_GET['button'] == "Absenden")
            #wenn der submit button gedrückt wurde
            {
                if($_GET['nachname'] != "" AND $_GET['vorname'] != "" AND $_GET['str'] != "" AND $_GET['plz'] != "" AND $_GET['mail'] != "" AND $_GET['nachricht'] != "")
                #wenn die pflichtfelder gedrückt wurden
                {
                        function is_mail ($email)
                        {
                            $searchmuster = "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/";
                            $ergebnis = preg_match ($searchmuster, $email);
                            return ($ergebnis);
                        }

                        $return = is_mail($_GET['mail']);
                        #funktion wird aufgerufen und variable übergeben

                        if( $return == 0)
                        #wird zurück gegeben wenn weder ein . noch ein @ in der "mail" gefunden wurden
                        {
                            die("Es handelt sich um keine g&uuml;ltige email");
                        }
                }



                else
                {
                    # für jedes input feld, dass nicht ausgefüllt wurde soll eine meldung herausgegeben werden
                    foreach( $_GET as $information => $angabe )
                    {
                        if( empty($angabe) )
                        {
                            echo $information . " wurde nicht ausgef&uuml;llt.<br /><br />";
                        }
                    }
                }
        }

             $emfaenger = "@gmx.ch" ;
             $inhaltbertreff = "Kontaktierung von Website" ;
             $inhaltmail = "Anfrage von Website" . $_POST['nachricht'];
             $inhaltmail .= "Anfrage von E-Mail:". $_POST['mail'];

             mail ($emfaenger, $inhaltbertreff, $inhaltmail);





        ?>


nicht das ihr denkt das der Beispiel-formular-fuers-original.php von einem tutorial stammt.
Eins ist klar ich versteh noch längst nicht alles, versuche jedoch sogut wie ich kann es zu verstehen auch wenn es mir manchmal unheimlich schwer fällt.

damit möcht ich sagen dass ich kein code geschnipsel gemacht habe. oder sonst irgendetwas.
ich habe aus Büchern, Videos ( DVD ) gelernt. (über 9 tagen lern material) hab ich mir extra gekauft.

So jetzt sollte es übersichtlicher und verstandlich sein.
johalus
Mitglied
 
Beiträge: 5
Registriert: 16.01.2012, 12:49

Re: Formular in php

Beitragvon johalus am 23.01.2012, 15:31

So nun bin ich wieder fleissig am formular, soweit ich weiss hab ich diese fehler behoben die Mr.Guillemo geschildert hat.
was mir noch nicht so klar ist wegen meine Fehlermeldungen
Code: Alles auswählen
echo "<p><h2>Hinweis: E-Mail Adresse ist Ung&uuml;ltig! Bitte Kontrollieren und nach korrigieren.</h2></p>";]
wie ich diese meldung so darstellen kann, das sie auch nur vorkommt wenn z.B Die Email nicht korrekt geschrieben wurde.

Momentan sieht es aus, das ich im Formular überall ein Buchstabe hinschreiben muss, und verschicken kann. was ja nicht der sinn der sache war! :gelbekarte:

mir wäre lieber wenn:

Nachname (ausgefüllt)
Vorname ( ausgefüllt)
E-Mail (nicht korrekt = hallo@----welt.mobi )

das dann die meldung erscheint.

was es leider nicht tut. Man kann einfach:

E-Mail: E
eintippen und dann kann man absenden klicken.. Obwohl ich ein Regex geschrieben habe.. ich weiss nicht mehrweiter.
johalus
Mitglied
 
Beiträge: 5
Registriert: 16.01.2012, 12:49


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste