Auführungstriche in Formularfeldern

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

  • Auführungstriche in Formularfeldern

    Ich lese manchmal Variablen mit Hochkomma oder Anführungsstrichen ein. Dabei variiert die Anzahl dieser Zeichen. Nun lese ich die allerdings in Formularfeldern wieder aus und da ist meistens alles weg, was nach dem Zeichen kommt.

    Die option magic_quotes_gpc steht dabei auf On und mit add- und stripslashes komm ich nicht weiter.

    Kurzes Beispiel:

    ich trage im Formularfeld Das '98 Abi ein. Heraus kommt über

    normales echo: Das \'98 Abi
    echo in einem Formularfeld: \'Das

  • #2
    PHP-Code:
    // Zu verwenden bei z.B. Datenbank Eintragungen
    function validate_insert($string) {
        return 
    addslashes($string);
    }

    // Bei Ausgabe als Text
    function validate_print($string) {
        return 
    stripslashes($string);
    }

    // Bei Ausgabe in einem Formularfeld
    function validate_print_form($string$charset 'UTF-8') {
        return 
    htmlspecialchars(stripslashes($string), ENT_QUOTES$charset);

    Das Charset würde ich anpassen.
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Sorry, ich bin leider nicht so tief drin in der PHP-Welt. Mein Skript so aus und wie müßte ich es in diesem Fall anwenden?


      PHP-Code:
      <?
      if($gesendet){

      echo "<p>$username<br>\n";
      echo "<input type=\"text\" size=\"15\"  value=\"$username\">";

      }


      ?> 


      <form action="<?php $PHP_SELF ?>" method="post">
      <br>
      <br>
      <table width="750" border="0" bgcolor="#a2cfe8" cellpadding="5" cellspacing="0" align="center">
          <tr font class="text" bgcolor="#FFFFFF">
            <td width="170">Kürzel:</td>
            <td width="230"><input type="text" name="username"  size="15"></td>
          </tr>
          <tr>
            <td bgcolor="#e7e7e7" align="center" colspan="2">
            <input type="submit" name="gesendet" value="Anmelden" class="button">
            </td>
          </tr>
      </table>
      </form>

      Kommentar


      • #4
        PHP-Code:
        echo "<input type=\"text\" size=\"15\"  value=\"".validate_print_form($username)."\">"
        Sunshine CMS
        BannerAdManagement
        Borlabs - because we make IT easier
        Formulargenerator [color=red]Neu![/color]
        Herkunftsstatistik [color=red]Neu![/color]

        Kommentar


        • #5
          Original geschrieben von Benny-one
          PHP-Code:
          // Zu verwenden bei z.B. Datenbank Eintragungen
          function validate_insert($string) {
              return 
          addslashes($string);
          }

          // Bei Ausgabe als Text
          function validate_print($string) {
              return 
          stripslashes($string);

          Hat dir schon mal jemand gesagt, dass es zum schlechten Stil gehört eine Funktion zu schreiben, die nur ein Wrapper für eine andere Funktion ist, weil Code dadurch schwerer nachzuvollziehen ist?!

          Original geschrieben von robftp
          Die option magic_quotes_gpc steht dabei auf On und mit add- und stripslashes komm ich nicht weiter.
          Abschalten den Müll, fliegt eh mit PHP6 raus die Einstellung, und beim Einfügen in die Datenbank mysql_real_escape_string auf jede Var anwenden ... Problem gelöst

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            also mit der Funktion das klappt wunderbar. Das das aber nicht so toll sein soll hab ich es auch mit mysql_real_escape_string probiert, da ist die Ausgabe folgende mit der Eingabe Das '98 "Abi":

            normale echo: Das \'98 \"Abi\"
            echo in einem Formularfeld: Das \'98 \

            hier das Skript von mir:

            PHP-Code:
            if($gesendet){
            $username mysql_real_escape_string($username);

            echo 
            "<p>$username<br>\n";
            echo 
            "<input type=\"text\" size=\"15\"  value=\"".$username."\">";

            }

            ?> 
            magic_quotes_gpc hab ich natürlich auf Off gestellt und den Dienst neugestartet.

            Kommentar


            • #7
              Original geschrieben von robftp
              Das das aber nicht so toll sein soll hab ich es auch mit mysql_real_escape_string probiert, da ist die Ausgabe folgende mit der Eingabe Das '98 "Abi":

              normale echo: Das \'98 \"Abi\"
              echo in einem Formularfeld: Das \'98 \
              So solls ja auch sein. Du hast doch die sonderzeichen extra maskiert mit
              mysql_real_esacpe_string. So sind die daten fertig um in der db gespeichert zu
              werden. Das bedeuetet nicht dass sieimmer noch toll dazu geeignet
              sind ausgegeben zu werden.

              Dafür kannst du dann die slashes wieder entfernen. Das sind zwei verschiedene
              paar schuhe.

              greets
              (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

              Kommentar


              • #8
                ok, hab dan mal eine nach mysql_real_escape_string() ein stripslashes() hinzugefügt. Die jetzige Ausgabe sieht so aus:

                normale echo: Das '98 "Abi"
                echo in einem Formularfeld: Das '98

                scheinbar muss ich noch die Ausgabe irgendwie umschreiben aber wie?

                Ausgabe:
                PHP-Code:
                echo "<input type=\"text\" size=\"15\"  value=\"".$username."\">"
                variable steht doch in ".."

                Kommentar


                • #9
                  du bist ja lustig.
                  mysql_real_escape_string() nur verwenden, wenn du die daten in eine datenbank schreiben möchtest.

                  für die ausgabe htmlentities() verwenden

                  Kommentar


                  • #10
                    ja, ich bin lustig :-). Korrekt jetzt funktioniert

                    Kommentar

                    Lädt...
                    X