[MySQL] Wenn HTML-Tags dann kein INSERT?

Gafuliz

Cadet 4th Year
Registriert
Feb. 2005
Beiträge
125
Hallo Community!

Ich habe ein Problem beim programmieren meines eigenen CMS'. Ich möchte Datensätze mittels eines Input-Feldes der Datenbank zugänglich machen. Dies funktioniert auch prima, solange ich nur Text ohne HTML-Tags dort eintrage. Sobald ich beispielsweise ein img-Tag eintrage, arbeitet er und am Ende hab ich nicht drin stehen, sprich genauso wenig wie vorher ;).

Es gibt da doch sicher ein Trick, oder?

PHP:
<?php

  /* Konfigurationsdateien laden */
  include('../inc/base.inc.php');
  include('../inc/adminfunctions.inc.php');
  include('../inc/login.inc.php');

    /* Überprüfen ob Login erfolgt ist, ggf. Anmeldemöglichkeit bieten */
    if(is_logged_in())
    {
        $id = $_POST['id'];
        $category = $_POST['category'];
        $message = $_POST['message'];
        $message_sidebar = $_POST['message_sidebar'];
        $visible = $_POST['visible'];

    include('../inc/database.inc.php');
    $connection = mysql_connect($db['host'],$db['uid'],$db['pwd']);
    if($connection)
    {
      mysql_select_db($db['db']);
      $sql = "UPDATE fi_pages SET cat = '$category', content = '$message', content_side = '$message_sidebar', visible = '$visible' WHERE cat='".$category."'";
      $result = mysql_query($sql);
            header('Location: index.php?page='.$category.'');
        }
    }

?>
Gruß, Gafuliz
 
Meine Vermutung ist, dass in deinem IMG-Tag das SRC-Attribut mit Hilfe des Apostrophs angegeben wird also z.B.
IMG SRC='bild.jpg'

Das Problem ist, dass die MySQL-Query eben diesen Apostroph ebenfalls für die Parameter benutzt. Der Trick besteht nun darin, den Apostrophen zu maskieren.

Dafür gibt's spezielle PHP-Funktionen: http://de3.php.net/manual/de/function.mysql-escape-string.php
Edit3: Natürlich lieber die aktuelle Version der Funktion nehmen: http://de3.php.net/manual/de/function.mysql-real-escape-string.php

Edit: Aus Sicherheitsgründen ist es sowieso _stark_ zu empfehlen, alle Parameter die in die Query gehen auf diese Weise zu "behandeln", sonst könnte geziel eine SQL-Abfrage manipuliert werden (oder auch nur versehentlich).

Edit2: Selbst wenn meine Vermutung bzgl des Apostrophs falsch sein sollte, denke ich sollte die Funktion dein Problem lösen.
 
Zuletzt bearbeitet:
Danke für die schnelle Hilfe!
Ich probier dein Tipp gleich mal aus.:)
Gruß, Gafuliz

EDIT: Hat funktioniert! :) Super!
 
Zuletzt bearbeitet:
Zurück
Oben