Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular

Einklappen

Neue Werbung 2019

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

  • Formular

    hoi, habe nen serverwechsel hinter mir und jetzt php5 statt wie auf dem alten php4. alles schön und gut, nur funktioniert mein formular script nicht mehr, woran liegt das? hat es was mit register_globals=off zu tun?

    hier mal der code:

    PHP-Code:
    <?php
        
    if($action=="senden") {
        
    $betreff trim(stripslashes($betreff));
        
    $inhalt trim(stripslashes($inhalt));
        if(!
    $name$fehler[] = "Ihr Name fehlt.";
        if(!
    $betreff$fehler[] = "Der Betreff fehlt.";
        if(!
    $inhalt$fehler[] = "Sie haben keine Nachricht geschrieben.";
        if(!
    $von$fehler[] = "Ihre Emailadresse fehlt";
        if(!
    count($fehler)) {
        @
    mail($an,$betreff,$inhalt,"From: ".$von);
        echo(
    "

    Ihre Nachricht wurde wie folgt gesendet.

    "
    );
        echo 
    "Name: [b]$name[/b]
    "
    ;
        echo 
    "Betreff: [b]$betreff[/b]
    "
    ;
        echo 
    "Inhalt: [b]".nl2br($inhalt)."[/b]
    "
    ;
        } else {
        echo 
    "[b]Beim Senden traten folgender Fehler auf:[/b]";
        echo 
    "<ul>[*]".implode("[*]",$fehler)."[/list]";
        }
        }
      
    ?>
    <form action="?section=formular" method="post">
    <input type="hidden" name="action" value="senden">
    <input type="hidden" name="an" value="mail@host.de">
      <table width="250">
        <tr>
          <td><font class="text">Name</font></td>
          <td><input name="name" value="<?php echo $name?>" size="40"></td>
        </tr>
        <tr>
          <td><font class="text">E-Mail</font></td>
          <td><input name="von" value="<?php echo $von?>" size="40"></td>
        </tr>
        <tr>
          <td><font class="text">Betreff</font></td>
          <td><input name="betreff" value="<?php echo $betreff?>" size="40"><td>
        </tr>
        <tr>
          <td><font class="text">Inhalt</font></td>
          <td><textarea name="inhalt" cols="39" rows="5"><?php echo $inhalt?></textarea></td>
        </tr>
        <tr>
          <td></td>
          <td><center><input type="submit" value=" Senden "><input type="reset" value=" Reset "></center></td>
        </tr>
      </table>
    </form>
    mir hatte jemand gesagt mit register_globals=off könnte man kein formular script zur automatischen e-mail versendung nutzen, stimmt das?

    danke für die kompetente hilfe

  • #2
    mir hatte jemand gesagt mit register_globals=off könnte man kein formular script zur automatischen e-mail versendung nutzen, stimmt das?
    Einfach nur großer Mist.

    PHP-Code:
    <?php
        
    if($action=="senden") {
        
    $betreff trim(stripslashes($betreff)); 
    ?>
    Verwende anstatt $betreff einfach $_POST['betreff'], z.B.:
    PHP-Code:
    <?php
    if($_POST['action'] == 'senden') {
            
    $betreff trim(stripslashes($_POST['betreff']);
    ?>
    Ob du $_POST oder $_GET verwenden musst, hängt davon ab, wie du die Daten übergibst (<form action=".." method="post">), bei dir also $_POST.

    Kommentar


    • #3
      im Zweifelsfall stimmt $_REQUEST
      Und: du solltest dir nie register_globals angewöhnen, das is ein rießiges Sicherheitsriskio!

      Kommentar


      • #4
        Zitat von Jojo
        im Zweifelsfall stimmt $_REQUEST
        Das sollte man sich auch nicht angewöhnen, denn damit kann man ein Script auch schnell, oder zumindest leichter, missbrauchen.

        Gruß
        phpfan

        Kommentar


        • #5
          *g*
          Recht hat er!

          hat aber den Vorteil, dass Benutzer entweder einen Direktlink oder ein Formular enutzen können
          manchmal ganz benutzerfreundlich.
          Aber natürlich stimmt das, was phpfan sagt: Die Sicherheit leidet darunter!

          Grüße,
          Jojo

          Kommentar


          • #6
            Parse error: parse error, unexpected ';' in /srv/www/htdocs/web12/html/formular.php on line 7

            habe die $betreff zeile so eingefügt.

            Kommentar


            • #7
              Kopfschüttel

              Ich sehe in diesem Thread mehrere $betreff-Zeilen. Vielleicht hast du auch was falsch gemacht. Aber davon mal abgesehen, einen Parse-Error sollte man schon selber finden können.

              Gruß
              phpfan

              Kommentar


              • #8
                ich habe da jetzt mal rumprobiert, klappt net

                Kommentar


                • #9
                  Poste mal den neuen Code!

                  Kommentar


                  • #10
                    und wenn alle versuchen nützliche dinge zu sagen dann versuche ich es auch einmal

                    bsp.:
                    if(!$variable)
                    sach dochmal bitte worauf der ausdruck prüft ...
                    (bool) false, NULL oder was .. ???

                    was ist wenn jemand nur ein leerzeichen in das bsp. betreff feld macht ?
                    sind diese Fragen nicht ein klein bissel aktueller im Moment als sich um
                    register_globals Gedanken zu machen ...

                    wie einige schon sagten $_GET bzw. $_POST ( Superglobals ) sind Super

                    ok zu etwas nützlichem

                    PHP-Code:
                    <?php

                    if (true==isset($_POST)) $_POST preClean($_POST);
                    if (
                    true==isset($_GET)) $_GET preClean($_GET);

                    /**** hier dein code
                    ***************************/





                    /****  Funktion zum säubern
                    ***************************/

                    function preClean($data) {
                        if (
                    is_array($data)) {
                            foreach (
                    $data as $key => $val) {
                                
                    $return[$key] = preClean($val);
                            }

                            return (
                    $return);
                        }
                        return 
                    trim(htmlentities(strip_tags($data), ENT_QUOTES));
                    }
                    hoffe das hilft etwas wenn es auch nur zum lernen ist

                    Kommentar


                    • #11
                      aktuell sieht es dann jetzt so aus

                      PHP-Code:
                       <?php
                          
                      if($_POST["action"] == "senden") {
                          
                      $betreff trim(stripslashes($_POST["betreff"]);
                          
                      $inhalt trim(stripslashes($inhalt));
                          if(!
                      $name$fehler[] = "Ihr Name fehlt.";
                          if(!
                      $betreff$fehler[] = "Der Betreff fehlt.";
                          if(!
                      $inhalt$fehler[] = "Sie haben keine Nachricht geschrieben.";
                          if(!
                      $von$fehler[] = "Ihre Emailadresse fehlt";
                          if(!
                      count($fehler)) {
                          @
                      mail($an,$betreff,$inhalt,"From: ".$von);
                          echo(
                      "

                      Ihre Nachricht wurde wie folgt gesendet.

                      "
                      );
                          echo 
                      "Name: [b]$name[/b]
                      "
                      ;
                          echo 
                      "Betreff: [b]$betreff[/b]
                      "
                      ;
                          echo 
                      "Inhalt: [b]".nl2br($inhalt)."[/b]
                      "
                      ;
                          } else {
                          echo 
                      "[b]Beim Senden traten folgender Fehler auf:[/b]";
                          echo 
                      "<ul>[*]".implode("[*]",$fehler)."[/list]";
                          }
                          }
                        
                      ?>
                      <form action="?section=formular" method="post">
                      <input type="hidden" name="action" value="senden">
                      <input type="hidden" name="an" value="mail@host.de">
                        <table width="250">
                          <tr>
                            <td><font class="text">Name</font></td>
                            <td><input name="name" value="<?php echo $name?>" size="40"></td>
                          </tr>
                          <tr>
                            <td><font class="text">E-Mail</font></td>
                            <td><input name="von" value="<?php echo $von?>" size="40"></td>
                          </tr>
                          <tr>
                            <td><font class="text">Betreff</font></td>
                            <td><input name="betreff" value="<?php echo $betreff?>" size="40"><td>
                          </tr>
                          <tr>
                            <td><font class="text">Inhalt</font></td>
                            <td><textarea name="inhalt" cols="39" rows="5"><?php echo $inhalt?></textarea></td>
                          </tr>
                          <tr>
                            <td></td>
                            <td><center><input type="submit" value=" Senden ">
                      <input type="reset" value=" Reset "></center></td>
                          </tr>
                        </table>
                      </form>
                      nur so kommt dann halt die fehlermeldung, die ich allerdings nicht verstehe, was soll am ; falsch sein

                      ich habe auch schonmal nach nen neuen formular, mit evtl. autorespons gesucht was gut bei php5 funktioniert, aber bis jetzt nichts gutes gefunden was mir da zusagt.

                      Kommentar


                      • #12
                        trim(stripslashes($_POST["betreff"]);

                        klammer setzung überprüfen ...

                        Kommentar


                        • #13
                          Es ist doch echt unglaublich! Einen dämlichen Parse-Error kann man selber finden, wenn man sich mal bemüht und auch mal die Augen aufmacht!!!

                          Und kannst du den Käse mal ordentlich einrücken!!! Dein Quellcode ist eine Zumutung!!! So kann man das doch wohl eindeutig besser lesen, oder?
                          PHP-Code:
                          <?php 
                              
                          if($_POST["action"] == "senden")
                              { 
                                 
                          $betreff trim(stripslashes($_POST["betreff"])); // Hier fehlte eine schließende Klammer
                                 
                          $inhalt trim(stripslashes($inhalt)); 
                                 
                                 if(!
                          $name)
                                    
                          $fehler[] = "Ihr Name fehlt."
                                    
                                 if(!
                          $betreff)
                                    
                          $fehler[] = "Der Betreff fehlt."
                                    
                                 if(!
                          $inhalt)
                                    
                          $fehler[] = "Sie haben keine Nachricht geschrieben."
                                    
                                 if(!
                          $von)
                                    
                          $fehler[] = "Ihre Emailadresse fehlt"
                                    
                                 if(!
                          count($fehler))
                                 { 
                                    @
                          mail($an,$betreff,$inhalt,"From: ".$von); 
                                    echo(
                          "

                          Ihre Nachricht wurde wie folgt gesendet.

                          "
                          ); 
                                    echo 
                          "Name: [b]$name[/b]
                          "

                                    echo 
                          "Betreff: [b]$betreff[/b]
                          "

                                    echo 
                          "Inhalt: [b]".nl2br($inhalt)."[/b]
                          "

                                 }
                                 else
                                 { 
                                    echo 
                          "[b]Beim Senden traten folgender Fehler auf:[/b]"
                                    echo 
                          "<ul>[*]".implode("[*]",$fehler)."[/list]"
                                 } 
                              } 
                          ?>
                          Gruß
                          phpfan

                          Kommentar


                          • #14
                            sei doch nicht so böse phpfan

                            es war ne peinliche frage ja, habe die klammer aber echt übersehen.

                            aber es hing nicht nur an dieser zeile, jetzt funktioniert es aber. danke an euch.

                            Kommentar

                            Lädt...
                            X