Link/Bild aus mySQl auslesen

rakinzon

Grünschnabel
Hallo,

ich arbeite gerade an einem mini CMS und habe gerade folgendes Problem:

Ich lese die Inhalte mit folgedem Code aus:
PHP:
 if(isset($_GET['cpage'])):
                        $sql = "SELECT title, body FROM cms_pages WHERE id = '" . mysqli_real_escape_string($mysqli, $_GET['cpage']) . "'";
                        $res = $mysqli->query($sql) or require_once('./includes/error.php'); 
                    else:
                        $sql = "SELECT title, body FROM cms_pages ORDER BY navi LIMIT 1";
                        $res = $mysqli->query($sql) or require_once('./includes/error.php'); 
                    endif;
                    if(mysqli_num_rows($res) != 0):
                        while($row = mysqli_fetch_assoc($res)) {
                            echo '<b>' . mysqli_real_escape_string($mysqli, $row['title']) . '</b>';
                            echo '<br><br>';
                            echo '' . mysqli_real_escape_string($mysqli, $row['body']) . '';
                    }
                    else:
                        echo '<br><div class="fail" id="fail">Entschuldigung, aber diese Seite existiert nicht!</div><br>';
                    
                endif;

Jedoch habe ich nun ein kleines Problem mit Links. Diese lauten immer: http://MEINE_DOMAIN.de/"http://www.youtube.com/"
(also immer wird meine Domain sowie %22 hinzugefügt)

Könnt ihr mir vll sagen, wie ich das beheben kann? Danke im voraus
 
Hi,

also ich kann in deinem Code nichts finden, was auch nur annähernd darauf hinweist, dass irgendwo ein Link ausgegeben wird.

Manuel.
 
Sry der Inhalt wird aus einer Datenbank ausgelesen (siehe Anhang) Der Link dort wird auch fehlerhaft dargestellt)
 

Anhänge

  • Screenshot 2013-07-05 12.21.36.png
    Screenshot 2013-07-05 12.21.36.png
    34,9 KB · Aufrufe: 25
Was mir da noch auffällt. Du verwendet "mysqli_real_escape_string()" vor der Ausgabe ins HTML. Die Funktion ist aber dazu da, um Parameter für SQL zu escapen. Für die HTML Ausgabe benötigst du das nicht.
 
mysqli_real_escape_string() wird verwendet um das Daten an die DB zu sichern. Die Resultate des Queries musst du nicht mehr durch mysqli_real_escape_string() schicken
 
Benutze jetzt

PHP:
                    if(mysqli_num_rows($res) != 0):
                        while($row = mysqli_fetch_assoc($res)) {
                            echo '<b>' . $row['title'] . '</b>';
                            echo '<br><br>';
                            echo '' . $row['body'] . '';
                    }

FUnktioniert jetzt auch alles und sicher ist es auch noch, wenn ich das richtig verstanden habe?
 
Jepp. Denn das ist ja im Vereich des Auslesens. Der Inhalt von $row stammt aus deiner DB. Der solltest du vertrauen können. Das mysqli_real_escape_string() beim filter ist ja dazu da, dass Daten von Aussen nicht deine DB schädigen können.
 
Zurück