str_replace - Problem mit HTML-Code

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

  • str_replace - Problem mit HTML-Code

    Hallo,
    vielleicht kann mir hier jemand weiterhelfen. Ich habe mir eine Klasse erstellt die mir den SQL-Code für Insert-/Update-Anweisungen für MySQL erstellt. Jetzt wollte ich die Klasse um eine Funktion erweitern mit der ich einen über ein Textarea Feld den Code eines YouTube-Videos hinzufügen kann. Wenn ich allerdings die " durch ein \" ersetze ist $wert plötzlich leer? Hat jemand eine Idee?

    PHP-Code:
    function addHtmlTextValue($spalte$wert){
                
    $wert str_replace('"''\"'$wert);    
                
    $this->addValue($spalte$wert);
            } 
    Der dazgehörige HTML-Code des Beispielvideos:

    HTML-Code:
    <object width="640" height="385">
    <param name="movie" value="http://www.youtube.com/v/j6OixMG2vLA?fs=1&amp;hl=de_DE"></param>
    <param name="allowFullScreen" value="true"></param>
    <param name="allowscriptaccess" value="always"></param>
    <embed src="http://www.youtube.com/v/j6OixMG2vLA?fs=1&amp;hl=de_DE" 
    type="application/x-shockwave-flash" allowscriptaccess="always" 
    allowfullscreen="true" width="640" height="385"></embed>
    </object>
    In der Variablen $wert steht der YouTube Code vor dem ersetzen definitiv drin
    Zuletzt geändert von Martin204; 07.10.2010, 21:22.

  • #2
    Warum willst du " durch \" ersetzen?

    Kommentar


    • #3
      @Martin204
      Bitte brich erst mal deinen Code so um, dass man nicht kilometerweit nach rechts scrollen muss.

      Danke
      Peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        @Kropff
        Ich hoffe jetzt ists besser mit der Lesbarkeit

        @h3ll
        ich muss " durch \" ersetzen da sonst die Datenbank mekkert

        Kommentar


        • #5
          Zitat von Martin204 Beitrag anzeigen
          ich muss " durch \" ersetzen da sonst die Datenbank mekkert
          Fürs Escaping gibt es fix fertige Funktionen, die es auch wirklich richtig machen (allein " durch \" ersetzen reicht bei Weitem nicht).

          PHP: mysql_real_escape_string - Manual

          Diese Funktion musst du bei jedem Wert anwenden, den du in einem Query einfügst, da sonst dein Script anfällig für die gefährlichen und häufig ausgenutzten SQL-Injections ist.

          Kommentar


          • #6
            Zitat von Martin204 Beitrag anzeigen
            ich muss " durch \" ersetzen da sonst die Datenbank mekkert
            Dann nutze die Funktion, die dafür vorgesehen ist - mysql_real_escape_string.
            Das ist echt ein schon zigtausendfach diskutiertes Thema ...
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Und was ist mit mysql_real_escape_string? Außerdem wäre die Einfügeoperation auch noch interessant. Mal daran gedacht, dort mit Hochkommata zu arbeiten? Nur so ein Beispiel:
              PHP-Code:
              $str '<object width="640" height="385">...</object>';
              $query 'INSERT INTO bla (blubb) VALUES (\''.$str.'\')'
              Peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Danke für die schnelle Antwort, leider tritt das Problem auch mit
                PHP-Code:
                $wert mysql_real_escape_string($wert); 
                auf, davor ist der Code enthalten, danach nicht mehr?

                Kommentar


                • #9
                  Dann machst du wohl noch irgendwas anderes falsch, was wir aus dem gezeigten Minimalcode aber nicht erkennen können.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Zitat von Martin204 Beitrag anzeigen
                    davor ist der Code enthalten, danach nicht mehr?
                    Dann zeig doch mal, wie du den Wert in die DB bekommst. Imho liegt da das Problem.

                    Peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Endlich ich habe das Problem gefunden,
                      im Formular habe ich die Encrypt-Anweisung angepasst:

                      HTML-Code:
                      <form enctype="application/x-www-form-urlencoded" id="Formular" action="gallerievideo_save.php" method="post" name="Formular">
                      Jetzt hats geklappt, MySQL mekkert nicht mehr und der Code wird gespeichert.

                      Vielen Dank für Eure schnelle Hilfe

                      Kommentar


                      • #12
                        hm - bei normalen Post daten brauchst du ja den enctype gar nicht angeben .. den passt man höchstens an, wenn man file-upload einbauen möchte
                        [font=Verdana]
                        Wer LESEN kann, ist klar im Vorteil!
                        [/font]

                        Kommentar


                        • #13
                          Ich hatte davor einen File-Upload für eine Video-Datei drin und hab diesen dann entfernt. Evtl. hing es damit zusammen. Nach 10 h Programmierung am Stück will ich aber auch nicht ausschliessen das ich sonst irgendeinen Blödsinn eingebaut und durch rumprobieren wieder entfernt habe.

                          Nochmals Danke für Eure Hilfe!

                          Kommentar

                          Lädt...
                          X