Von ", ' und \ .....

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

  • Von ", ' und \ .....

    Hallo zusammen,

    sicher wurde die Frage schon einmal irgendwo in diesem ja grossen und umfangreichen Forum schon ab und zu einmal gefragt. Leider konnte ich nirgends ein Thread finden, der in etwa das klärt, was mich nun schon seit ein paar Tage beschäftigt...

    Das Problem ist das Behandeln der Charaktere
    "
    '
    \
    in Zusammenhang mit einer MySQL-Datenbank.

    Genauer gesagt geht es darum, Daten, die per Formulare geschickt wurden (also unter Umständen durch magic_quotes bereits durch Slashes ergänzt wurden!), in die Datenbank einzutragen, sowie auch wieder herausgelesen werden können, für den finalen Output oder einfach nur zum Editieren.

    Meine Frage ist nun, wie das zu bewerkstelligen ist, wenn man jedes Mal ohne irgendwelche Veränderungen des Eingegebenen auskommen will!

    Natürlich habe ich auch schon meine Anfänge mit add- und stripslashes() gehabt, aber diese Funktionen sind ja alles andere als vollständig und decken auch nicht alle Fälle ab...

    Wie löst ihr das bei euren Scripts? Wie sieht die "optimale" Lösung aus?

    Was muss man machen, dass "\\ein Text\\" mit eingeschalteten magic_quotes, duch ein Formular abgeschickt, in die DB eingetragen, von dort wieder ausgelesen, dass dieses "\\ein Text\\" auch wieder in unveränderter Form in 'nem Textfeld steht um es editieren zu können?

    Hoffe, jemand kann mir endlich nach meinen vielen schlaflosen Nächten die Erleuchtung zeigen

    MfG, rob

  • #2
    suche einfach mal nach magic_quotes und du wirst fündig..

    z.b. http://www.php-resource.de/forum/sho...ht=magicquotes ungefähr in der mitte
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      ich weiss schon, was die magic_quotes anstellen

      mir würde es zB sehr helfen, wenn man Deine GB-Klasse irgendwo runterladen könnte

      Kommentar


      • #4
        ne. runterladen ist nicht...

        aber nur als tipp....

        PHP-Code:
        $new_data = (!get_magic_quotes_gpc()) ? addslashes(trim($data)) : trim($value); 
        nun kannst du $new_data problemlos in sql-queries verwenden....

        es ist sozusagen immer addslashes() als ausgangssituation enthalten.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          das habe ich alles schon gemacht...
          ich habe get_magic_quotes() = Off überschrieben und für alle $HTTP_*_VARS und $_* die addslashes() über 'ne eigene Funktion hinzugefügt.

          Aber das funktioniert zum Beispiel hier nicht:

          über ein Formular schicke ich folgendes ab:
          "\\etwas"\\
          die addslashes() werden ausgeführt, das Zeugs wird in die DB eingetragen, dann wieder von da ausgelesen, mit stripslashes() versehen und das Resultat sieht so aus:
          "\etwas\"

          PHP wandelt ja \\ in \ um, aber ich da "\\etwas\\" stehe haben - und nicht "\etwas\"

          also funktioniert zB bei diesem Beispiel die Kombination von addslashes() und stripslashes() nicht!

          Wie stelle ich das an?

          Kommentar


          • #6
            edit:

            ich hab das mal bei Deinem GB ausprobiert:

            wenn ich da als Name:

            \\versuch\\

            angebe, dann kommt als Output:

            \versuch\

            raus!
            Das Gleiche auch im Textfeld!

            Kommentar


            • #7
              mhm. ich habe es mal bei mit im GB getestet. auch da wird nur ein \ wieder 'dargestellt' in der DB hingegen steht es schon so drin, wie es soll....

              also kann es nur beim auslesen passieren...

              EDIT:
              du warst schneller...
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                @Abraxas:

                beim auslesen und anzeigen magic_quotes_runtime() prüfen
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  und jetzt noch bitte auf Deutsch

                  wofür sorgt _runtime ?

                  @abraxax: Ist das bei Dir auch wie bei Unix, dass man ein ordentliches Salär fürs Bug-Melden bekommt?

                  Kommentar


                  • #10
                    @TBT. du müsstest doch nun wissen, wie man mich schreibt....

                    aber ich weiss dennoch nciht, was du mit der *_runtime meinst....

                    EDIT:
                    das ist doch das gleiche in grün, wie get_magic_quotes_gpc()...



                    @roobin
                    definiere 'salärs'

                    aber wo du fragst... meine dev.server ist linux.
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      @Abraxa[color=green]x[/color]: Sorry

                      muß natürlich get_magic_quotes_runtime() heißen

                      und php.net sagt dazu:
                      If magic_quotes_runtime is enabled, most functions that return data from any sort of external source [color=red]including databases[/color] and text files will have quotes escaped with a backslash. If magic_quotes_sybase is also on, a single-quote is escaped with a single-quote instead of a backslash.
                      TBT

                      Die zwei wichtigsten Regeln für eine berufliche Karriere:
                      1. Verrate niemals alles was du weißt!


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar


                      • #12
                        Original geschrieben von Abraxax

                        EDIT:
                        das ist doch das gleiche in grün, wie get_magic_quotes_gpc()...

                        nope !

                        *-gpc ist für get-post-cookie

                        *-runtime ist für phpfunktionen wie mysql_fetch_array()

                        du mußt also den String nach erhalt von der DB gegen *-runtime
                        prüfen, um ihn vor der Weiterverabeitung wieder in ein einheitliches
                        Format zu bringen
                        TBT

                        Die zwei wichtigsten Regeln für eine berufliche Karriere:
                        1. Verrate niemals alles was du weißt!


                        PHP 2 AllPatrizier II Browsergame

                        Kommentar


                        • #13
                          *lämpchenangeht*

                          verstehe. also muss ich wohl noch einmal an mein guestbook dran. und meine andere sachen auch...

                          aber danke für den tipp.

                          und roobin kann nun auch wieder besser schlafen...
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            naja, ich hörte mal, dass man bei Unix 'nen recht hohen Betrag ausbezahlt bekommt, wenn man da einen Bug meldet. Aber weils eh fast keine Bugs gibt...

                            @Problem:

                            http://ch.php.net/manual/en/ref.info...quotes-runtime

                            aber da steht ja auch noch was von magic_quotes_sybase

                            Muss man auf das auch noch überprüfen?

                            Kommentar


                            • #15
                              Original geschrieben von roobin

                              aber da steht ja auch noch was von magic_quotes_sybase

                              Muss man auf das auch noch überprüfen?
                              benutzt du SyBase als Datenbank ?
                              TBT

                              Die zwei wichtigsten Regeln für eine berufliche Karriere:
                              1. Verrate niemals alles was du weißt!


                              PHP 2 AllPatrizier II Browsergame

                              Kommentar

                              Lädt...
                              X