Mike: PHP Abfrage

Hallo Leute,

ich hab ein Problem, ich habe ein Kontaktformular (HTML) was per POST an eine PHP Datei die Informationen übergibt, also die Inhalte der Felder. Das PHP Script erstellt dann eine E-Mail und versendet diese. Nun kann man ja das PHP Script missbrauchen deswegen habe ich ein IF Anweisung eingebaut die leider nicht reicht vielleicht könnt Ihr mir helfen.

Hier der Code des PHP Scripts::

if ((!empty($vorname)) AND (!empty($name))) {
Mailer
}

Dieses prüft aber nur ob das Feld vorname und name nicht leer sind, und das reicht leider nicht.

1. Es soll noch die Variable $strasse,
2. die Variable $ort
3. die Variable $telefon
4. und die Vaiable $email

gecheckt werden, dabei soll der Inhalt der Felder namen, strasse, ort, email nicht gleich sein aber sie sollen gefüllt sein. Weiterhin wäre es gut wenn die Variable $telefon nur Zahlen beinhaltet. Nur wenn dieses alles gegeben ist soll die Mail generiert werden.

Da ich leider nicht gerade ein PHP Profi bin wäre es gut wenn mir jemand hilft.

Vielen Dank

Mike

  1. Hallo Mike!

    if ((!empty($vorname)) AND (!empty($name))) {

    Mailer
    }

      
    Du solltest Dich erstmal ein wenig intensiver mit PHP beschäftigen, denn Du setzt voraus, daß Register Globals (siehe [PHP Manual: Kapitel 29. Verwendung von Register Globals](http://de3.php.net/manual/de/security.globals.php))angeschaltet ist, was heutzutage aber nicht mehr immer der Fall ist. Außerdem ist es "sicherer", die neuen Superglobalen Arrays $\_GET und $\_POST zu benutzen, weil Du dann zumindest weißt, daß Deine Daten auch per POST kamen.  
      
    Des weiteren empfehle ich Dir zur Prüfung der Felder Dich mal mit [PHP Manual: XCIX. Regular Expression Functions (Perl-Compatible)](http://de.php.net/manual/en/ref.pcre.php) auseinander zu setzen.  
      
    Grüße aus Karlsruhe,  
    Götz  
    
    -- 
    Losung für Donnerstag, 24. November 2005  
    Der Herr wird einem jeden seine Gerechtigkeit und Treue vergelten. (1. Samuel 26,23)  
    Geduld habt ihr nötig, damit ihr den Willen Gottes tut und das Verheißene empfangt. (Hebräer 10,36)  
    ([Losungslink](http://www.losungen.de/heute.php))
    
  2. hallo Mike,

    Götz hat dir bereits das wesentliche geschrieben, also bleiben mir nur ein paar kleine zusätzliche Anmerkungen.

    Nun kann man ja das PHP Script missbrauchen

    Welcher "Mißbrauch" wäre denn möglich? Es gibt Spam-robots, die im Internet gezielt nach Dateien mit dem Namen "mail.*" suchen und dort irgendwelche Eintragungen vornehmen - meistens Werbung, teilweise für Porno. Solche Robots können eine valide mail-Adresse eintragen, und schwuppdiwupp, schon bist du, ohne es zu wissen, ein Porno-Spam-Verteiler.

    deswegen habe ich ein IF Anweisung eingebaut

    Die Idee selbst ist erstmal grundsätzlich richtig.

    if ((!empty($vorname)) AND (!empty($name))) {
    Mailer
    }

    Das hat dir Götz bereits erläutert.

    1. Es soll noch die Variable $strasse,
    2. die Variable $ort
    3. die Variable $telefon
    4. und die Vaiable $email
      gecheckt werden

    Warum so viele Variablen? Abgesehen davon, daß alle miteinander auch gefälscht werden können, ist eigentlich nur die Prüfung, ob die mail-Adresse valide ist, sinnvoll. Straße, Ort und Telefon könntest du allenfalls als optionale Angaben anbieten - also wer will, darf das angeben, und wer nicht will, läßt die Felder eben frei.

    w Weiterhin wäre es gut wenn die Variable $telefon nur Zahlen beinhaltet

    Für eine solche Prüfung gibt es das Konzept der regulären Ausdrücke.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    http://www.christoph-schnauss.de
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo Christoph,

      w Weiterhin wäre es gut wenn die Variable $telefon nur Zahlen beinhaltet

      Warum das?
      Nur weil in Deutschland die meisten Leute nur Ziffern in ihren Telefonnummern haben? Du kennst aber sicherlich Vanity-Nummern?

      Außerdem sollten + / und - als übliche Strukturierungszeichen zugelassen werden. Die  () sind aber schon wieder ein philosophisches Problem.

      LG
      Chris

      1. Hallo!

        Nur weil in Deutschland die meisten Leute nur Ziffern in ihren Telefonnummern haben? Du kennst aber sicherlich Vanity-Nummern?

        Aber Vanity Nummern sind auch nichts anderes als normale Telefonnummern. Ich hab schon einige Adressdatenbanken erstellt. Aber diese Anforderung, dass die Telefonnummer auch Buchstaben beinhalten muss, hab ich noch von keinem Auftraggeber erhalten.

        Aber der Hinweis darauf ist trotzdem brauchbar.

        mfg
          frafu

  3. Hi,

    1. und die Vaiable $email

    uebergibst Du die als 4ten mail()-Parameter musst Du u.a. sicherstellen, dass keine Zeilenumbrueche erlaubt sind, andernfalls lassen sich mit nachgebauten Forms leicht Spamschleudern erzeugen.

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. Hallo,

      1. und die Vaiable $email
        uebergibst Du die als 4ten mail()-Parameter musst Du u.a. sicherstellen, dass keine Zeilenumbrueche erlaubt sind, andernfalls lassen sich mit nachgebauten Forms leicht Spamschleudern erzeugen.

      Und mehrere '@' sollten auch nicht drinstehen.

      LG
      Chris

  4. Hallo,

    grundsätzlich überlegt, solltest Du Dir ein Array mit allen für dieses Formular erwarteten Variablen und ihren erforderlichen "Typen" vorbereiten.

    Wenn der Post nun eintrifft, gehtst Du das Array durch, und vergleichst es mit den Post-Variablen.

    Bei einer Abweichung von der Vorgabe erzeugst Du eine Fehlermeldung und eventuell gibst Du die dann zusammen mit den Post-Vars wieder als Formular aus.

    Das Formular lässt sich aus dem Vorgabearray übrigens auch automatisch generieren, wenn man es sinnvoll aufgebaut hat und sich die Standardfunktionen für "text" "textarea" "radio, checkbox, select single, select multiple" aufgebaut hat.

    Überleg doch hier mal öffentlich, welche Vorgaben das Array enthalten sollte:

    - Variablenname
       - Typ
       - RegExp
       - Caption
       - sizeX
       - sizeY

    usw.

    LG
    Chris