Tanja: bitte um "Formular Code Überprüfung"

Hallo liebes Forum ...

Ich habe mir ein kleines Formular für eine private Homepage gebastelt.
Einmal wollte ich euch fragen ob der Code so im groben vernünftig ist oder ob es da riesige Sicherheitslöcher gibt.
Dann würde ich da gerne noch soetwas wie "Wenn alle Felder ausgefüllt, dann senden, ansonsten Meldung" einbauen.
Bitte denkt bei einer eventuellen Erklärung wie ein PHP-Neuling. "gg"

Grüße Tanja

  1. hallo,

    Einmal wollte ich euch fragen ob der Code so im groben vernünftig ist

    Nun ja, wo isser denn, dein Code?

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo,

      Einmal wollte ich euch fragen ob der Code so im groben vernünftig ist

      Nun ja, wo isser denn, dein Code?

      na da war ein anderer berliner schneller :-)

      mfg
      Twilo

      1. hallo Twilo,

        <väterlicher Tonfall-Modus>

        Nun ja, wo isser denn, dein Code?
        na da war ein anderer berliner schneller :-)

        Nö. Selbst wenn dieselbe Minute angezeigt wird, so gibt dir die Reihenfolge doch klar zu erkennen, daß ich um Sekunden schneller war. Wer später kommt, stellt sich hier im Forum immer oben an, und da du nun "über mir" stehst, warst du in der Realität "nach mir" ;-P

        </väterlicher Tonfall-Modus>

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. gudn tach!

          Nun ja, wo isser denn, dein Code?
          na da war ein anderer berliner schneller :-)

          Nö. Selbst wenn dieselbe Minute angezeigt wird, so gibt dir die Reihenfolge doch klar zu erkennen, daß ich um Sekunden schneller war.[...]

          eben. mit dem "anderen" berliner warst vermutlich du, Christoph, gemeint.

          prost
          seth

          1. Hallo,

            Nun ja, wo isser denn, dein Code?
            na da war ein anderer berliner schneller :-)

            Nö. Selbst wenn dieselbe Minute angezeigt wird, so gibt dir die Reihenfolge doch klar zu erkennen, daß ich um Sekunden schneller war.[...]

            eben. mit dem "anderen" berliner warst vermutlich du, Christoph, gemeint.

            hm.. da hat der Christoph wohl nicht ganz aufgepasst :-)

            mfg
            Twilo

            1. hallo,

              da hat der Christoph wohl nicht ganz aufgepasst :-)

              ok, ihr habt gewonnen. Zur Strafe gibts dann heute keinen Holunderwein, sondern Ebereschenwein (hat 0,3 Vol% weniger Allohol).

              Grüße aus Berlin

              Christoph S.

              --
              Visitenkarte
              ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. Hallo,

    Einmal wollte ich euch fragen ob der Code so im groben vernünftig ist oder ob es da riesige Sicherheitslöcher gibt.

    welcher Code?

    mfg
    Twilo

  3. UPS ...

    Habe doch glatt das wichtigste vergessen !!!

    Code:

    <?php
    $server = $_REQUEST['server'];
    $ip = $_REQUEST['ip'];
    $name = $_REQUEST['name'];
    $mail = $_REQUEST['mail'];
    $betreff = $_REQUEST['beitrag'];
    $name=trim($name);
    $mail=trim($mail);
    $betreff=trim($beitrag);
    $name=strip_tags($name);
    $mail=strip_tags($mail);
    $betreff=strip_tags($beitrag);
    If (isset($_POST['submit']))
    {
    $message="Ein Eintrag der Seite topfblume.net\r\n\r\n";
    $message.="Browser: $server\r\n";
    $message.="IP: $ip\r\n\r\n";
    $message.="Name: $name\r\n";
    $message.="Email: $mail\r\n";
    $message.="Betreff: $beitrag\r\n";
    $header="Content-Type: text/plain\r\n";
    mail("info@topfblume.net", "Nachricht vom Formular - topfblume.net", $message, $header);
    }
    ?>

    --------
    html

    <form action="<?php $PHP_SELF; ?>" method="post">
    <input type="text" name="name">
    <input type="text" name="email">
    <textarea name="beitrag" rows="5" cols="20" title="Gebe hier Deine Nachricht ein"></textarea>
    <input type="submit" value="senden">
    </form>

    1. Hallo Tanja.

      <?php

      $server = $_REQUEST['server'];
      $ip = $_REQUEST['ip'];
      $name = $_REQUEST['name'];
      $mail = $_REQUEST['mail'];
      $betreff = $_REQUEST['beitrag'];

        
      Alle diese Schlüssel existieren beim erstmaligen Aufruf noch garnicht, weshalb du sie nur übernehmen solltest, wenn sie [gesetzt](http://de2.php.net/manual/en/ref.exec.php) wurden.  
        
      
      > ~~~php
      
      $name=trim($name);  
      
      > $mail=trim($mail);  
      > $betreff=trim($beitrag);  
      > $name=strip_tags($name);  
      > $mail=strip_tags($mail);
      
      

      Warum überhaupt dieser Umweg? Du kannst direkt mit den Schlüsseln in $_REQUEST agieren. Es ist ein Array wie jeder andere auch, mit dem Unterschied dass er stets zur Verfügung steht.

      $header="Content-Type: text/plain\r\n";

      mail("info@topfblume.net", "Nachricht vom Formular - topfblume.net", $message, $header);

        
      Das sind die relevanten Zeilen. Die E–Mail–Adresse, der Betreff als auch die zusätzlichen Header sind fest vorgegeben, man kann hier also nirgends zusätzliche Mailheader einschmuggeln.  
        
      
      > `<form action="[code lang=php]<?php $PHP_SELF; ?>`{:.language-html}" method="post">[/code]  
        
      Brauchst du wirklich noch [register_globals](http://de2.php.net/manual/de/security.globals.php)?  
        
      Ansonsten dürfte das Script sicher sein.  
        
        
      Einen schönen Montag noch.  
        
      Gruß, Mathias  
      
      -- 
      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](http://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/HTMLConstraints.html)]
      
      1. hi,

        Alle diese Schlüssel existieren beim erstmaligen Aufruf noch garnicht, weshalb du sie nur übernehmen solltest, wenn sie gesetzt wurden.

        Meintest du vielleicht, wenn sie gesetzt wurden?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo wahsaga.

          Alle diese Schlüssel existieren beim erstmaligen Aufruf noch garnicht, weshalb du sie nur übernehmen solltest, wenn sie gesetzt wurden.

          Meintest du vielleicht, wenn sie gesetzt wurden?

          Ja, meinte ich. Wieder einmal haben mir die beiden Zwischenablagen einen Streich gespielt.

          Mal sehen, ob ich die Qt–Version irgendwie deaktiviert bekomme.

          Einen schönen Dienstag noch.

          Gruß, Mathias

          --
          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. If (isset($_POST['submit']))
      {

        
       if (!(isset($_POST['name']))){  
         $error_msg = "Name fehlt!";  
       }  
       if (!(isset($_POST['email']))){  
         $error_msg = "E-Mail fehlt!";  
       }  
       if (!(isset($_POST['beitrag']))){  
         $error_msg = "Beitrag fehlt!";  
       }  
       if (!(isset($error_msg))){  
      
      > $message="Ein Eintrag der Seite topfblume.net\r\n\r\n";  
      > $message.="Browser: $server\r\n";  
      > $message.="IP: $ip\r\n\r\n";  
      > $message.="Name: $name\r\n";  
      > $message.="Email: $mail\r\n";  
      > $message.="Betreff: $beitrag\r\n";  
      > $header="Content-Type: text/plain\r\n";  
      > mail("info@topfblume.net", "Nachricht vom Formular - topfblume.net", $message, $header);  
      > }  
      
      }  
      
      

      So kannst du abfragen ob alles ausgefüllt wurde und nur dann die Eingaben schicken. Außerdem kannst du noch die Fehlermeldung ausgeben. Damit nach dem Abschicken nicht alles verloren geht, falls etwas fehlt, solltest du noch dein Formular um die Eingaben ergänzen:

      <input type="text" name="name" value="<?php print $_POST['name']; ?>">

      entsprechend auch bei den anderen Feldern.