Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular

Einklappen

Neue Werbung 2019

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

  • cYriss
    hat ein Thema erstellt Formular.

    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

  • cYriss
    antwortet
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    trim(stripslashes($_POST["betreff"]);

    klammer setzung überprüfen ...

    Einen Kommentar schreiben:


  • cYriss
    antwortet
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • michi174
    antwortet
    Poste mal den neuen Code!

    Einen Kommentar schreiben:


  • cYriss
    antwortet
    ich habe da jetzt mal rumprobiert, klappt net

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


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

    habe die $betreff zeile so eingefügt.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    *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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    im Zweifelsfall stimmt $_REQUEST
    Und: du solltest dir nie register_globals angewöhnen, das is ein rießiges Sicherheitsriskio!

    Einen Kommentar schreiben:


  • Chr!s
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X