Joy: Variable übergeben

hi,

ich ein kontaktformular gebastelt. eine eine html seite mit den formularen die per js gecheckt werden. sind diese in ordnung werden die werte an ein mail.php gesendet, die die daten dann zur einer mail verarbeiten und diese mail auch versenden. nun ist es so theoretisch kann man ja nun diese mail.php einfach so aufrufen, und sie sendet dann mails. deswegen möchte ich eine abfrage einbauen. praktisch die formdatei auch als php datei anlegen, dieser dann eine variable geben, und nur wenn diese per post mitübergeben wurde soll die mail.php ihren job machen sonst nicht.

oder vielleicht kann man ja auch der mail.php irgendwie sagen, nur wenn du deinen informationen von der form.html bekommen hast mache deine arbeit.

weiss jemand wie ich das am besten realisieren kann. ich dachte halt per php mit einer versteckten variablen mit einem bestimmten wert, und der wird dann gecheckt in der mail.php, und nur wenn diese i.o. ist dann leg los.

thx
joY

  1. habe d'ehre Joy

    ich ein kontaktformular gebastelt. eine eine html seite mit den formularen die per js gecheckt werden. sind diese in ordnung werden die werte an ein mail.php gesendet, die die daten dann zur einer mail verarbeiten und diese mail auch versenden. nun ist es so theoretisch kann man ja nun diese mail.php einfach so aufrufen, und sie sendet dann mails.

    Pruefe einfach von wo Deine mail.php aufgerufen wird. Eine formdatei.php generiert auch nur wieder HTML.

    man liest sich
    Wilhelm

    1. Danke, aber wie mach ich das, ich nicht so die versierte.

      joY

      1. habe d'ehre Joy

        Danke, aber wie mach ich das, ich nicht so die versierte.

        Pruefe, ob in der Variable $_SERVER['HTTP_REFERER'] der Name der Formularseite enthalten ist.

        if(ereg('abcdefgh', $_SERVER['HTTP_REFERER']))
          // sende Mail ab
        else
          // zeige einen Fehler

        abcdefgh waere deine formdatei.html

        man liest sich
        Wilhelm

        1. Hallo Wilhelm.

          Pruefe, ob in der Variable $_SERVER['HTTP_REFERER'] der Name der Formularseite enthalten ist.

          if(ereg('abcdefgh', $_SERVER['HTTP_REFERER']))

          Dafür ist aber kein regulärer Ausdruck erforderlich. Ich empfehle daher folgende Variante:

          if (isset($_SERVER['HTTP_REFERER']) and [link:http://de2.php.net/manual/en/function.strpos.php@title=strpos]($_SERVER['HTTP_REFERER']', name-der-formularseite') !== false) {  
            # Mail versenden  
          } else {  
            # Fehlerroutine  
          }
          

          Einen schönen Montag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
          [HTML Design Constraints: Logical Markup]
          1. habe d'ehre Ashura

            if(ereg('abcdefgh', $_SERVER['HTTP_REFERER']))

            if (isset($_SERVER['HTTP_REFERER']) and [link:http://de2.php.net/manual/en/function.strpos.php@title=strpos]($_SERVER['HTTP_REFERER']', name-der-formularseite') !== false) {

            # Mail versenden
            } else {
              # Fehlerroutine
            }

              
            Ich will ja jetzt nicht Korinthenkacken bzgl. des Codeumfanges, aber da  ja heute Lernstunde zu sein scheint, erlaeutere mir doch jetzt noch den Vorteil Deines Vorschlages.  
              
            Dafuer gehe ich dann auch brav in die Heia.  
              
            man liest sich  
            Wilhelm  
              
            uebrigens meckert er bei den [code] immer die Sprache an. ;-)
            
            1. Hallo Wilhelm.

              Ich will ja jetzt nicht Korinthenkacken bzgl. des Codeumfanges, aber da  ja heute Lernstunde zu sein scheint, erlaeutere mir doch jetzt noch den Vorteil Deines Vorschlages.

              Er dürfte praktisch immer schneller sein, da der Parser hier eine einfache Zeichenkettenoperation ausführt, anstatt einen regulären Ausdrück anwenden zu müssen. (Benchmarking-Scripts liegen im Archiv herum.)

              Einen schönen Montag noch.

              Gruß, Ashura

              --
              sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
              [HTML Design Constraints: Logical Markup]
              1. habe d'ehre Ashura

                Er dürfte praktisch immer schneller sein, da der Parser hier eine einfache Zeichenkettenoperation ausführt, anstatt einen regulären Ausdrück anwenden zu müssen. (Benchmarking-Scripts liegen im Archiv herum.)

                Wieviel laengere Bruchteile von Nanosekunden wird das wohl ausmachen? :-) Natuerlich, wenn 500.000 User gleichzeitig das Formular abschicken ....

                man liest sich
                Wilhelm

                1. Hallo Wilhelm.

                  Er dürfte praktisch immer schneller sein, da der Parser hier eine einfache Zeichenkettenoperation ausführt, anstatt einen regulären Ausdrück anwenden zu müssen. (Benchmarking-Scripts liegen im Archiv herum.)

                  Wieviel laengere Bruchteile von Nanosekunden wird das wohl ausmachen?

                  Natürlich macht diese eine Stelle im gesamten Programm nicht sonderlich viel aus. Aber du weißt ja: die Summe machts.

                  Einen schönen Montag noch.

                  Gruß, Ashura

                  --
                  sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                  „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                  [HTML Design Constraints: Logical Markup]
          2. habe d'ehre Ashura

            if (isset($_SERVER['HTTP_REFERER']) and strpos($_SERVER['HTTP_REFERER']', name-der-formularseite') !== false)

            und vor allem so:
            if (isset($_SERVER['HTTP_REFERER']) and strpos($_SERVER['HTTP_REFERER'], 'name-der-formularseite') !== false)

            man liest sich
            Wilhelm

            1. Danke Wilhelm,

              damit hat es geklappt, man brauch über haupt kein else, wenn man die seite so aufruft wird sie zwar gezeigt aber der php code wird nicht ausgeführt, sprich es wird keine mail generiert und versendet.

              so kann man das nicht so einfach mißbrauchen.

              thx

              1. habe d'ehre Joy

                damit hat es geklappt

                Haette ich mir meinen Roman sparen koennen. :-)

                man liest sich
                Wilhelm

                1. Hallo,

                  und was ist nun, wie Cheatah schon angedeutet hat, wenn der Referer nicht übermittelt wird?

                  Mit freundlichem Gruß
                  Micha

                  --
                  LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
                  1. habe d'ehre derletztekick

                    und was ist nun, wie Cheatah schon angedeutet hat, wenn der Referer nicht übermittelt wird?

                    Das was ich angebe zu tun, wenn der Ausdruck nicht zutrifft.

                    Ich zitiere mal von ereg():
                    Gibt die Länge der übereinstimmenden Zeichenkette zurück, falls in Zeichenkette eine Übereinstimmung mit Suchmuster gefunden wurde oder FALSE, wenn keine Übereinstimmung gefunden wurde oder *wenn ein Fehler aufgetreten ist*.
                    </cite>

                    man liest sich
                    Wilhelm

                    1. Hallo Wilhelm Turtschan,

                      und was ist nun, wie Cheatah schon angedeutet hat, wenn der Referer nicht übermittelt wird?

                      Das was ich angebe zu tun, wenn der Ausdruck nicht zutrifft.

                      Also das:

                        
                      if(ereg('abcdefgh', $_SERVER['HTTP_REFERER']))  
                        // sende Mail ab  
                      else  
                        // zeige einen Fehler
                      

                      Dann können also alle keine Mail versenden, wenn diese keinen Referer übermitteln.

                      man liest sich

                      Ich hoffe ;)

                      Mit freundlichem Gruß
                      Micha

                      --
                      LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
              2. Hi,

                so kann man das nicht so einfach mißbrauchen.

                doch. Warum denkst Du, ändert das etwas?

                • ein Referrer kann beliebig manipuliert werden
                • das Kontaktformular kann beliebig manipuliert werden
                • die Javascriptprüfung im Formular kann deaktiviert werden

                Du setzt an der falschen Stelle an. Javascript kann lediglich eine Vorabprüfung durchführen. Es ist Aufgabe des Mailscripts, die Daten vor dem Versand (nochmals) zu prüfen und dann ggfls. eine Fehlermeldung nebst dem bereits ausgefüllten Formular zurückzuliefern.

                freundliche Grüße
                Ingo

        2. Leider ghet beides nicht, noch einer ne Idee ?

          joY

          1. habe d'ehre Joy

            Leider ghet beides nicht, noch einer ne Idee ?

            Ja, zeige Deinen Code. Die Glaskugel hat zur Zeit jemand anderer.

            man liest sich
            Wilhelm

            1. <?php

              $MailTo="info@adstudios.de";

              $inhalt = "ALLGEMEIN:\n\nTitel:                            $anrede\nNachname:                         $nname\nVorname:                          $vname\n\nStrasse:                          $strasse\nPLZ/Ort:                          $plz $ort\n\nTelefon:                          $tel\nFAX:                              $fax\n\nE-Mail:                           $email\nInternetadresse:                  $web\n\n";

              $inhalt .= "Die Seite kenne ich über:\n";
              $inhalt .= "$aufm\n";

              $inhalt .= "\n\n\n";
              $inhalt .= "ZUSÄTZLICHE ANGABEN:\n\n";

              if ($priv) {
                        $inhalt .= "- Ich bin privater Interessent\n";
              }
              if ($gewerb) {
                        $inhalt .= "- Ich bin gwerbliche Interessent\n";
              }
              if ($priv_gewerb) {
                        $inhalt .= "- Ich bin sowohl privat als auch gewerblich interessiert.\n";
              }

              $inhalt .= "\n";

              $inhalt .= "Unternehmen:                      $firma\nFunktion:                         $funktion\n";

              $inhalt .= "\n";

              $inhalt .= "Erbitte Rückruf zwecks:\n";

              if ($ig) {
                        $inhalt .= "- Informationsgespräch\n";
              }
              if ($ba) {
                        $inhalt .= "- Beratung und/oder Analyse\n";
              }
              if ($bt) {
                        $inhalt .= "- Beratung und Termin bei Ihnen im Hause\n";
              }
              if ($bto) {
                        $inhalt .= "- Beratung und Termin vor Ort\n";
              }
              if ($si) {
                        $inhalt .= "- Spezielle Informationen\n";
              }

              $inhalt .= "\n";

              if ($im) {
                        $inhalt .= "- Bitte senden Sie mir Informationsmaterial zu.";
              }

              $inhalt .= "\n\n";

              $inhalt .= "Persönliche Nachricht:\n$nachricht";
              mail($MailTo, "Kontaktformular Internet", $inhalt, "From: $email");

              ?>

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
              "http://www.w3.org/TR/html4/loose.dtd">
              <html>
              <head>

              1. habe d'ehre Joy

                <?php

                $MailTo="info@adstudios.de";
                .....
                mail($MailTo, "Kontaktformular Internet", $inhalt, "From: $email");

                ?>

                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                "http://www.w3.org/TR/html4/loose.dtd">
                <html>
                <head>

                1.) Du hast keine Abfrage nach der Herkunft eingebaut!

                2.) Ich nehme an, dass $gewerb ein Formularfeld ist. Wenn auf dem Server die Einstellung register_globals=off gesetzt ist, erhaeltst Du keinen Wert. Die korrekte Variable wuerde dann $_POST['gewerb'] heissen. Bei register_globals=on empfehle ich Dir dringend eine Nachfrage bei Deinem Provider oder ein Nachlesen der FAQs Deines Providers wie Du diese Einstellung auf OFF setzen kannst.

                3.) Ich vermute mal, dass hier im Anschluss irgendeine Dankeseite ausgegeben wird. Versuche den Mischmasch von HTML und PHP zu vermeiden. Ich weiss, es ist diese Einfachheit von PHP dies zu gestatten, aber es fuehrt auch zur Unuebersichtlichkeit. Schreibe entweder Deinen HTML-Teil auch via PHP (echo) oder verwende nach Abarbeitung Deines Skriptes die Funktion header zur Weiterleitung auf eine andere Seite. Ich bevorzuge diese Trennung

                4.) Du scheinst den Mailbody irgendwie in Spalten aufzubauen. Sehe Dir dazu mal str_pad an.

                if(ereg('abcdefgh', $_SERVER['HTTP_REFERER'])) {

                oder if (isset($_SERVER['HTTP_REFERER']) and strpos($_SERVER['HTTP_REFERER'], 'name-der-formularseite') !== false)

                //Dein PHP-Code

                header("LOCATION: http://www.blub.blub/deinSeite");

                }
                else {
                  die('eine Fehlermeldung');
                }

                man liest sich
                Wilhelm

        3. Hi,

          Pruefe, ob in der Variable $_SERVER['HTTP_REFERER'] der Name der Formularseite enthalten ist.

          Du solltest eventuell noch erwähnen, dass das Script dann weder verlässlich funktioniert, noch Missbrauch ausgeschlossen ist.

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. habe d'ehre Cheatah

            Du solltest eventuell noch erwähnen, dass das Script dann weder verlässlich funktioniert, noch Missbrauch ausgeschlossen ist.

            Hundertprozentig weiss ich nur, dass irgendwann die Eigenschaften/Werte aus der Sig vom Kollegen wahsaga auch auf mich zutreffen.

            man liest sich
            Wilhelm