Stripslashes

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

  • Stripslashes

    Ich möchte, dass ein abgegebenes Kommentar von Befehlen, die das System beeinflussen könnten, entfernt werden.

    Nun habe ich aber das Problem, dass auch noch Zeilenumbrüche gesetzt werden sollen... durch das Stripslashes werden diese aber immer wieder "zerstört", hat jemand eine Idee, wie man dies umgehen kann!?

    PHP-Code:
    $text    mysql_escape_string($_POST["text"]);
    $text    nl2br($text);
    $text    stripslashes($text);
    $text    htmlentities($text); 

  • #2
    Re: Stripslashes

    Es ist absolut unnötig und unsinnig, einfach mal alles, was man an irgendwie "schützenden" Funktionen finden kann, gedankenlos auf die Daten anzuwenden.

    Maskiere Daten immer so, wie es der jeweilige Kontext erfordert.

    Für die Übergabe an MySQL ist das mysql_real_escape_string() - und sonst nichts.

    Für die Ausgabe auf einer HTML-Seite ist das auf jeden Fall (mindestens) htmlspecialchars().

    Wie oft haben wir dieses verflixte Thema hier eigentlich schon durchgekaut ...?

    Nun habe ich aber das Problem, dass auch noch Zeilenumbrüche gesetzt werden sollen... durch das Stripslashes werden diese aber immer wieder "zerstört"
    Nein, das liegt vermutlich nicht am stripslashes - sondern daran, dass du wirklich alles, was du gefunden hast, angewendet hast - dabei aber auch noch, mangels Verständnis, in einer unsinnigen Reihenfolge.

    Jetzt schalte bitte erst mal dein Hirn an - und überlege dir, was aus den per nl2br() erzeugten <br />-Elementen wohl wird, wenn du anschließend htmlentities() drauf anwendest.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ja ok, es besteht allerdings weiterhin das Problem, dass durch stripslashes die "\" vor "\r\n" entfernt werden.

      Hast du dafür eine Möglichkeit zur Lösung?

      Kommentar


      • #4
        Hast du erst mal eine Erklärung dafür, warum du stripslashes an dieser Stelle anwenden willst?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Weil die übergebenen Werte (Ein Text) per $_POST serverseitig gequoted werden, d.h. vor zeichen wie ", ' usw. werden Slashes gesetzt und diese sollen nun entfernt werden.

          Kommentar


          • #6
            Dann werden auch vor \r und \n zusätzliche Backslashes eingefügt. Stripslashes() macht also aus \\r und \\n wieder ordentliche Zeichen und nichts kaputt.

            Kommentar


            • #7
              Theoretisch sollte dies so sein...

              Allerdings, wenn ich im Textfeld eingebe:
              "Hallo"

              Hallo
              und dann verarbeiten lasse:
              PHP-Code:
              $text    mysql_real_escape_string($_POST["text"]);
              $text    stripslashes($text); 
              wird mir in der DB gespeichert:
              "Hallo"rnrnHallo
              Woran könnte das liegen?

              Kommentar


              • #8
                Original geschrieben von hasch
                Woran könnte das liegen?
                Daran, dass du dir das "Quoten bei POST" auf diesem Server nur eingebildet hast - anstatt es wirklich zu überprüfen ...?


                http://www.php.net/manual/de/functio...quotes-gpc.php
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Es ist an, hatte ich zuvor auch schon überprüft, aber trotzdem danke für den Hinweis.

                  Kommentar


                  • #10
                    Lies nochmal, was wahsaga sagte und lies ggf. nochmal im Manual nach, was die einzelnen Funktionen machen und wann sie daher sinnvoll anzuwenden sind.
                    mysql_real_escape_string() zuerst ist jedenfalls Schwachsinn!

                    Kommentar


                    • #11
                      Nein, das mysql_real_escape_string() ist nötig, da es in die DB eingetragen werden soll.

                      Ich lasse den Text jetzt zuerst mit Slashes in die DB eintragen und wende folgendes erst beim Auslesen der Kommentare an:

                      PHP-Code:
                      $text    $row_k->text;                

                      if(
                      get_magic_quotes_gpc())
                      $text    stripslashes($text);
                                                      
                      $text    htmlentities($text);
                      $text    nl2br($text); 
                      Jetzt geht es auch ohne Probleme, allerdings ist mir immer noch unerklärlich, warum Stripslashes vor dem Eintragen in die DB solche Probleme gemacht hat...

                      Kommentar


                      • #12
                        Original geschrieben von hasch
                        Jetzt geht es auch ohne Probleme, allerdings ist mir immer noch unerklärlich, warum Stripslashes vor dem Eintragen in die DB solche Probleme gemacht hat...
                        Weil du die Funktionen ohne Ahnung benutzt.

                        Was macht mysql_(real_)escape_string?
                        Und was macht stripslashes?
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Original geschrieben von wahsaga
                          Weil du die Funktionen ohne Ahnung benutzt.
                          Ja, ist mir dann auch aufgefallen

                          Kommentar


                          • #14
                            *lösch*aend*die oberen haben schon alles gesagt..

                            Kommentar

                            Lädt...
                            X