Hochkommata & Anführungszeichen

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

  • Hochkommata & Anführungszeichen

    Also benutze bei Editierfunktionen wie z.B. eines Textes immer Hochkommata (').

    Nun, vor dem INSERT benutze ich das Folgende:

    PHP-Code:
    $text addslash($text); 
    Und beim Editieren siehts dann so aus:

    PHP-Code:
    echo "<input type='text' name='text' value='$text'>"
    Enthält der Wert $text nun ein Hochkommata, wird nach diesem Hochkommata, logischer Weise, der restliche Text nicht angezeigt. Nun benutze ich die allseits bekannten Escapes (\"), wird der das Hochkommata angezeigt.

    Doch, enthält $text nun ein Hochkommata (') und ein Anführungszeichen ([/b]"[/b]), wird der Datensatz zwar richtig gespeichert, aber nachdem man wieder auf der Editierseite ist, hört es nun nach dem Hochkommata auf, das heisst, dass keine Anführungszeichen angezeigt werden.

    Das Problem habe ich nun beschrieben, was kann man da tun ?

  • #2
    Re: Hochkommata &amp; Anführungszeichen

    Original geschrieben von snook
    PHP-Code:
    echo "<input type='text' name='text' value='".addslashes($text)."'>"
    Und so?

    Kommentar


    • #3
      kenn ich
      bei html hat escapen keinen sinn, deshalb hab ich die " einfach durch &.quot; ersetzt...
      eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

      Kommentar


      • #4
        @DSB:

        Nein, funktioniert leider nicht.

        @slarti:

        Meinst du, dass man bevor der Einsetzung der Variablenwerte in das Valueattribut, die Anführungszeichen durch &quot; ersetzen soll ?

        Zum Beispiel so:

        PHP-Code:
        $text str_replace("\"","&quot;",$text); 
        ?

        Kommentar


        • #5
          zum speichern in der datenbank verwende ich mysql_escape_string(), vielleicht hilft Dir das:

          PHP-Code:

          $text 
          mysql_escape_string($text); 
          (Details siehe www.php.net)

          Kommentar


          • #6
            $text = str_replace("\"","&.quot;",$text);
            ...genau so.
            allerdings wird das dann auch so inne db geschrieben, es sei denn,
            du ersetzt sie vor dem speichern wieder...
            eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

            Kommentar


            • #7
              Original geschrieben von slarti
              ...genau so.
              allerdings wird das dann auch so inne db geschrieben, es sei denn,
              du ersetzt sie vor dem speichern wieder...
              Hm, das hat mir jetzt eigentlich weniger geholfen, weil du mich vielleicht nicht ganz verstanden hast. Dieser str_replace ist eigentlich nur dazu gut ihn in die DB zu schreiben. Im Valueattribut jedoch, ist es keine gute Möglichkeit, da dann im Inputfeld das "&.quot;" ausgeschrieben steht und nicht durch ein Anführungszeichen ersetzt wird, was mein eigentliches Problem ist.

              Kurzgefasst:

              - Der MySQL INSERT funktioniert
              - Die Variablenübertragung in das Valueattribut ist fehlerhaft

              Kommentar


              • #8
                ...
                dann hast du dein problem nicht richtig verstanden...
                dein value-attribut is genau bei dem anführungszeichen zuende, mit dem es auch angefangen hat. ergo, wenn dieses in deinem $text vorkommt, wird er dort abgeschnitten,
                egal ob mit backslash oder nicht...
                das heißt, du mußt genau diese anführungszeichen aus deiner variable entfernen, bevor
                du sie in deinem input-value ausgibst.
                und wenn dir &.quot; nicht gefällt, nimm halt chr(148) oder die anführungszeichen,
                die du in deinen tags nicht benutzt...
                eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                Kommentar


                • #9
                  Original geschrieben von snook
                  Im Valueattribut jedoch, ist es keine gute Möglichkeit, da dann im Inputfeld das "&.quot;" ausgeschrieben steht und nicht durch ein Anführungszeichen ersetzt wird, was mein eigentliches Problem ist.
                  was erzählst du hier für einen unsinn?

                  Code:
                  <input type="text" value="&amp;quot;und ob!&amp;quot;">
                  ergibt ein textfeld, das mit
                  Code:
                  "und ob!"
                  vorbelegt ist.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Dann sollte das hier klappen:

                    PHP-Code:
                    echo "<input type='text' name='text' value='".htmlspecialchars($text)."'>"
                    Da werden direkt alle "gefährlichen" Zeichen umgewandelt.

                    Kommentar


                    • #11
                      @ slarti:

                      &.quot; geht nicht, dafür aber & quot;. Habe mich vom Punkt etwas irritieren lassen, aber jetzt funktionierts. Vielen Dank.

                      @ DSB:

                      Nein, funktioniert leider auch nicht.

                      Kommentar


                      • #12
                        ???
                        Warum denn nicht? Die Funktion htmlspecialchars wandelt doch alle Zeichen in ihre HTML-Codes um. Wie sieht denn dann die Zeile (im Quellcode) aus?
                        Poste bitte mal ein Beispiel mit richtigem Inhalt.
                        Oder kommen die Slahes (die Du vorher ja eingefügt hast) störend ins Bild?
                        Dann müsste der Aufruf so aussehen htmlspecialchars(stripslashes($text)) .

                        Kommentar

                        Lädt...
                        X