Zeichen quoten

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

  • Zeichen quoten

    So, ich habe da eine Frage zum Schreiben in Datenbanken (MySQL)!
    Da ich meine Eingaben vom User ja nicht direkt so hineinschreiben möchte, habe ich eine Funktion killAllTags, die den String von allen "bösen" Zeichen befreien soll.
    Reicht die Funktion in dieser Weise aus oder sollte ich lieber anders an das Problem gehen?

    PHP-Code:
    function killAllTags($target){
            
    /* htmlentities        alle HTML-Zeichen umwandeln, ENT_QUOTES wandelt auch ' um
             * quotemeta        stellt bestimmten Zeichen ein \ voran
             *
             */
            
    return quotemetahtmlentities$targetENT_QUOTES ) );
        } 

  • #2
    du solltest vielleicht auch schreiben wie du die daten wieder ausgeben willst.............

    Kommentar


    • #3
      Re: Zeichen quoten

      Original geschrieben von PHP-Desaster
      So, ich habe da eine Frage zum Schreiben in Datenbanken (MySQL)!
      Was willst du dann mit quotemeta?

      mysql_real_escape_string() ist dafür zuständig, Daten vor der Übergabe an eine MySQL-DB abzusichern, und zwar einzig und alleine.

      Und das wurde hier auch schon x-mal durchgekaut - also benutze bei weiteren Fragen zu diesem Thema bitte die Suchfunktion!
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Na gut, dann die Funktion von Mysql...


        dazu folgendes:

        string mysql_real_escape_string ( string unescaped_string [, resource Ergebnis-Kennung] )
        muss für diese Verschlüsselung der Zeichen eine MySQL-Verbindung stehen?? denn dann würde ich mich lieber nach einer anderen Methode umsehen.

        PHP-Code:
        function quote_smart($value)
        {
           
        // ...
           
        if (!is_numeric($value)) {
               
        $value "'" mysql_real_escape_string($value) . "'";
           }

           return 
        $value;
        }

        // verbinden
        $link mysql_connect('mysql_host''mysql_user''mysql_password')
           OR die(
        mysql_error());

        // sichere Anfrage formulieren
        $query sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
                   
        quote_smart($_POST['username']),
                   
        quote_smart($_POST['password']));

        mysql_query($query); 
        Nach diesem Beispiel ist dies nicht gerade offensichtlich!
        Gibt es die möglichkeit mit z.B. addslashes() den Query bereits vor aufbau der Verbindung zu sichern??

        Kommentar


        • #5
          Original geschrieben von PHP-Desaster
          muss für diese Verschlüsselung der Zeichen eine MySQL-Verbindung stehen??
          Ja, sollte schon - sonst kann die Funktion ja gar nicht wissen, wie sie die Zeichenkodierung, die bei der Verbindung benutzt wird, berücksichtigen soll.

          (Außerdem liefert die Funktion IIRC sogar nur Leerstrings zurück, wenn keine Verbindung besteht.)
          EDIT:
          Nein, hier war ich nicht korrekt.
          Wie sich die Funktion in so einem Falle verhält, wird auf der englischen Manualseite ja explizit beschrieben.


          denn dann würde ich mich lieber nach einer anderen Methode umsehen.
          Warum?

          Gibt es die möglichkeit mit z.B. addslashes() den Query bereits vor aufbau der Verbindung zu sichern??
          Nein, weder davor, noch danach.

          addslashes ist dafür - verflixt noch mal, wie oft muss man das hier noch erzählen? - nicht gedacht.
          Es könnte derzeit rein zufällig ein nahezu identisches Verhalten liefern - was sich aber in zukünftigen Versionen sowohl von PHP als auch der MySQL-API durchaus ändern kann.
          Dann hättest du also ein nicht zukunftssicheres Script erstellt, welches irgendwann von heute auf morgen auf Fehler laufen kann, die du dir dann nicht mal gleich erklären kannst.
          Das kannst du eigentlich nicht ernsthaft wollen.
          Zuletzt geändert von wahsaga; 07.04.2006, 14:52.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Dann hättest du also ein nicht zukunftssicheres Script erstellt, welches irgendwann von heute auf morgen auf Fehler laufen kann, die du dir dann nicht mal gleich erklären kannst.
            Nein, was will ich natürlich nicht!!

            Dann versuche ich mal ein wenig mit der Funktion rum

            Besten dank

            Kommentar


            • #7
              öhhmm macht das mit den backslash nicht

              get_magic_quotes_gpc von selbst wenn es aktiviert ist

              darum muss man sich doch nicht kümmern

              und für html tags ist htmlspecialchars() da oder nicht ?
              Ich hoffe es hilft

              Kommentar


              • #8
                Original geschrieben von webcool
                öhhmm macht das mit den backslash nicht

                get_magic_quotes_gpc von selbst wenn es aktiviert ist
                Ja, genau, das macht "das mit dem Backslash".

                Aber was hat das damit zu tun, die Eingaben für eine MySQL-Query vernünftig abzusichern?
                Eben, nichts.
                darum muss man sich doch nicht kümmern
                Doch, sollte man.

                magic_quotes_gpc ist dafür da, allzu große Deppen vor sich selber zu schützen.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Ahh so

                  ich hab mir die funktion

                  mysql_real_escape_string()

                  in php.net angekuckt

                  also get_magic_qoutes_gpc() betrifft nicht den Query nur eine ausgabe

                  z.b. mit echo aber eine SQL Anweisung betrifft es nicht

                  hab ich das so richtig verstanden ? wenn das stimmt was ich schreibe muss ich an meinen programmen ein paar änderungen vornehmen
                  Ich hoffe es hilft

                  Kommentar

                  Lädt...
                  X