Unterstrich in Formulardaten (html, smarty,php)

  • Hi Leute,
    folgendes Problem , bei dem ich seit 2 Tagen nicht weiterkomme
    Ein Formular sendet Daten an ein php-script, die über select/options
    ausgewählt werden. Diese Daten werden im Anschluss in eine db eingetrgaen.
    Befindet sich in dem Wert ein Unterstrich, wird kein Wert gesendet. Dann entsteht in der db
    ein leerer Eintrag in dem Feld. Google bringt mich leider nicht weiter , ob evtl. Unterstriche
    gesperrt sind oder woran es hapert.
    ich weiss allerdings auch nicht mehr in welche Richtung ich suchen soll :(
    vielleicht hat ja einer den richtigen Wink für mich
    Hier mal die codeschnippsel:


    Code
    <select name="req_det">
    {foreach from=$buildings item=build}
    <option value="{$build.tabless}">{$build.name}</option>
    <!-- {html_options value=$build.tabless name=$build.name} -->
    {/foreach}
    </select>


    Achja falls es etwas seltsam auzssieht ich benutze smarty
    als template engine
    der auskommentierte Weg ist smarty conform
    und beide Wege funktionieren wenn kein Unterstrich im Wert ist.


    danke im voraus


    michi

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

  • Welches DBMS und von welchem Typ ist das Feld in der Tabelle?
    Codebeispiel von der Eintragung in die DB?
    Wie sieht der fertige HTML-Teil davon aus?



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • 1: mysql/myisam varchar(1000)
    2:

    PHP
    $req_det = (isset($_POST['req_det']))?mysql_real_escape_string($_POST['req_det']):'';
    	$db->query("INSERT INTO `cc".$n."_quests` (`name`, `desc`, `startptz`, `endptz`, `requ`, `requ_det`, `requ_lvl`, `res1`, `res2`, `res3`, `res4`, `qptz`, `pic`) VALUES ('".mysql_real_escape_string($_POST['name'])."', '".mysql_real_escape_string($_POST['desc'])."', '".intval($_POST['startptz'])."', '".intval($_POST['endptz'])."', '".intval($_POST['req'])."', '".$req_det."', '".intval($_POST['req_lvl'])."', '".intval($_POST['res1'])."', '".intval($_POST['res2'])."', '".intval($_POST['res3'])."', '".intval($_POST['res4'])."', '".intval($_POST['qptz'])."', '".$name."')");


    3:?? meinst du den code oder die Fehlermeldung?
    Fehlermeldung:
    Notice: Undefined index: req_det in /pfad/zum/script/script.php on line 79
    das ist die obere Zeile wo $req_det definiert wird.
    für mich heisst das daß der wert leer ist und auch eine Ausgabe von $_POST[req_det]
    ist leer. ich tippe deshalb nicht auf sql



    EDIT
    zu schnell abgeschickt ;)
    hier das komplette Formular:

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

  • Zu Punkt 3: Ich meinte eigentlich, wie der fertig generierte HTML-Code danach aussieht. Also der Quelltext im Browser.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • da das ganze hier im ACP abläuft möchte ich das ungern posten
    die Seite wird normal angezeigt bis auf die Fehlermeldung , die ich oben schon gepostet habe.


    Worauf müsste ich denn achten bzw. wonach suchen?
    sieht eigentlich alles normal aus die neue quest wird auch angezeigt nur eben mit leerer Voraussetzung
    was dann im Game zu weiteren Probs führt

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

  • Es reicht, wenn du den betroffenen <form>, <select> und <option> Bereich postest. Oder du zeigst einmal, welchen HTTP-Request dein Browser da genau übermittelt, den du vorher natürlich ebenfalls anonymisieren kannst. Kannst es mir bei Bedarf auch gerne als PN senden, wenn es nicht öffentlich ewig stehen soll.


    Ich würde ja vermuten, dass die Variable durch irgendein "Sicherheits" Script/Modul nicht übermittelt wird. Das kann ein eingesetztes PHP-Framework sein oder auch ein Webserver Modul (rewrite, security, ...) oder Konfiguration. Lass dir zum Test einmal das ganze $_POST Array mit var_dump/export im Script ausgeben.


    Und die Fehlermeldung dürfte eigentlich gar nicht erscheinen, da du ja mit isset() die Existenz überprüfst. Ist das sicher die richtige Zeile?



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • also es liegt definitiv nicht am Unterstrich
    das hab ich jetzt erfolgreich ausschliessen können
    auch kann ich nun sagen dass es nur bei den Forschungen
    und den Soldaten nicht klappt.alle anderen werden richtig übergeben.
    Formular steht ja schon weiter oben
    da die options-Daten auch aus der db kommen, muss ich (morhgen) mal testen ob auf dem Wege was verloren geht.
    var_dump liefert:
    array(11) { ["name"]=> string(8) "forsch13" ["desc"]=> string(9) "forsch 13" ["req"]=> string(1) "3" ["req_lvl"]=> string(1) "1" ["startptz"]=> string(2) "10" ["endptz"]=> string(7) "1000000" ["res1"]=> string(2) "10" ["res2"]=> string(2) "10" ["res3"]=> string(3) "101" ["res4"]=> string(3) "010" ["qptz"]=> string(2) "10" }
    also wird ['req_det'] nicht übertragen


    Die Fehlermeldung ensteht aber und wird auf die Zeile bezogen :(
    leerer String scheidet also auch aus lt.var_dump() oder werden da leere Felder ignoriert?

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE