mysql_escape_string & Zeilenumbruch

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

  • mysql_escape_string & Zeilenumbruch

    Hallo,

    wenn ich einen Text mit Zeilenumbruch maskiere, dann zerstört er mir den Zeilenumbruch!
    Aus einem wirklichen "\r\n" wird ein normales '\r\n'!
    Und ich weiß nicht wieso!
    Ich bin am verzweifeln.

    Die ersten könnten ja jetzt rufen: magic_quotes!
    Aber: ich hab auf magi_quotes geachtet und gestripslashed!
    Und in meinem Beispiel werden auch keine Variablen übergeben.
    PHP-Code:
    <?php
        $str 
    "test1\r\ntest2";
        
    $str_esc mysql_escape_string($str);
        
    $str_unesc stripslashes($str_esc);
        
        echo 
    '<pre>';
        echo 
    $str;
        echo 
    '<hr />';
        echo 
    $str_esc;
        echo 
    '<hr />';
        echo 
    $str_unesc;
    ?>
    Das ist der gesamte Testcode!
    Und aussehen tut es so:
    test1
    test2
    ----------
    test1\r\ntest2
    ----------
    test1rntest2
    Wieso?!
    Ich bin auf eure Antworten gespannt...


    Mein Ziel ist es letztendlich ganz normale Texte mit mehreren Zeilenumbrüchen zu maskieren und in einer Datenbank zu speichern.
    Dummerweise funktioniert es mal und mal funktioniert es nicht und ich hab bis jetzt nicht rausgefunden, wovon in Drei*****namen das abhängt!


    Vielen Dank.

    gruß
    Piremilok
    Zuletzt geändert von Piremilok; 03.09.2008, 21:10.

  • #2
    Du machst es falsch bzw. hast falsch verstanden

    Nach dem du mysql_real_escape_string angewendet hast, muss du in die DB ablegen. In der DB existiert die zusätzlichen ' nicht mehr, da MySQL sie als escape-Zeichen erkannt hat und entsprechend darauf reagiert.

    Nach dem du die Daten aus der DB ausliest, kannst/sollst du sofort ausgeben, ohne stripslashes anzuwenden, da die ' nicht mehr existieren.

    Das was du versucht hast ist Käse.

    Kommentar


    • #3
      Hallo,

      vielen Dank für deine Antwort.

      Hab noch mal ein bissl rummgesucht und herausgefunden, dass es keine "wirkliche" Umkehrfunktion dafür gibt.
      D.h. einmal maskiert sollten die Daten in die Datenbank geschrieben werden. Stripslashes scheint nicht 100pro die Umkehrfunktion dafür zu sein.

      Nun noch eine Frage: Wenn ich Magic_Quotes nicht serverseitig deaktivieren kann, sondern erst in der ersten Zeile meines Scripts, dann sind meine Daten ja bereits maskiert, oder?
      D.h. wenn ich mysql_real_escape_string() verwende, maskiere ich die Daten doppelt, so, als würde ich 2x mysql_real_escape_string() anwenden, oder?

      Somit wäre also der bessere Weg, dass ich prüfe, ob magic_quotes aktiviert ist und wenn nicht, und nur in diesem Falle, mysql_real_escape_string() auf die übergebenen Daten anwende.


      Oder ist da jetzt wieder ein Denkfehler meinerseits drinne?

      Vielen Dank.


      gruß
      Piremilok

      Kommentar


      • #4
        Original geschrieben von Piremilok

        Somit wäre also der bessere Weg, dass ich prüfe, ob magic_quotes aktiviert ist und wenn nicht, und nur in diesem Falle, mysql_real_escape_string() auf die übergebenen Daten anwende.
        Das ist die korrekte Vorgehensweise

        Kommentar


        • #5
          Original geschrieben von asp2php
          Das ist die korrekte Vorgehensweise
          finde ich nicht!

          mysql_real_escape_string() macht zwar dasselbe wie addslashes(), es sind aber zwei unterschiedliche funktionen für unterschiedliche einsatzzwecke.

          wenn magic_quotes aktiv ist, wird intern addslashes() ausgeführt, das sollte dann erst mit stripslashes rückgängig gemacht werden. anschließend, für die benutzung in der datenbank, wird dann mysql_real_escape_string() ausgeführt.

          genau so ist es im handbuch "Beispiel #3 Optimale Vorgehensweise zur Querybehandlung" für mysql_real_escape_string() beschrieben.

          Kommentar


          • #6
            3DMax, ... ähm ... ich meine eigentlich wie du es sagst, aber es war doch ein bißchen früh zum Antworten gewesen

            Kommentar

            Lädt...
            X