Variable aus Datensatz holen und übergeben

protek

Grünschnabel
Hallo,

Ich möchte meine Datensätze inkl. Texte und Bilder in einer Tabelle darstellen. Bilder sind als blob in meiner DB abgelegt. Hab mir 2 Dateien programmiert auslesen.php und bild_holen.php. Für jedes Bild hole ich die jeweilige ID aus meinem Datensatz und übergebe diese an bild_holen.php. Leider funktioniert die ID Übergabe nich, nur wenn ich die ID manuell eintrage wird was angezeigt.Vielleicht hat jmd ne Idee?! Danke schon mal :rolleyes:

PHP:
<td><img src="bild_holen.php?id=<? $daten[id]; ?>"></td>

auslesen.php
PHP:
<html>
<body>
<div align="center">
<h1>datensatz auslesen</h1>
<?
include ("datenbank.php");

$result = mysql_query("SELECT * FROM fertigkeiten");

?>

  <table border="1" cellspacing="0" cellpadding="3" align="center">
    <tr> 
      <td><b>ID</b></td>
      <td><b>Bild</b></td>
      <td><b>Klasse</b></td>
      <td><b>Skill</b></td>
      <td><b>Attribut</b></td>
      <td><b>Typ</b></td>
      <td><b>Energie</b></td>
      <td><b>Aufladezeit</b></td>
    </tr>
    <? while ($daten = mysql_fetch_array($result)) { ?>
    <tr> 
      <td><? echo $daten[id]; ?></td>
      <td><img src="bild_holen.php?id=<? $daten[id]; ?>"></td>
      <td><? echo $daten[klasse]; ?></td>
      <td><? echo $daten[skill]; ?></td>
      <td><? echo $daten[attribut]; ?></td>
      <td><? echo $daten[typ]; ?></td>
      <td><? echo $daten[energie]; ?></td>
      <td>nix</td>
    </tr>
    <?  } ?>
  </table>
</div>
</body>
</html>



bild_holen.php
PHP:
<?php

include ("datenbank.php");
 
		$temp_id = $_GET['id'];
		
	    $result = mysql_query("SELECT bild FROM fertigkeiten WHERE ID = $temp_id");

        $row = mysql_fetch_object($result);

   
        header ("Content-type: $row->/jpg");
        echo $row->bild;
?>
 
PHP:
<td><img src="bild_holen.php?id=<? echo $daten[id]; ?>"></td>
so sollte es gehen. du hast ein "echo" vergessen..
 
Trotz der fehlerhaften Inhaltstyp-Angabe funktioniert es?

Übrigens solltest du sämtliche von außen kommenden Daten validieren, damit diese Schwachstellen nicht für SQL-Injektionen oder Ähnliches ausgenutzt werden können.
 
Zwar wird in deinem Fall die ID von einem Skript ausgegeben, doch was hindert einen findigen Benutzer nicht diese ID durch, sagen wir mal, Folgendes zu ersetzen:
Code:
0; DELETE fertigkeiten
Die zusammengesetzte Abfrage würde dann wie folgt lauten:
Code:
SELECT bild FROM fertigkeiten WHERE ID = 0; DELETE fertigkeiten
Was damit anzurichten ist, kannst du dir sicherlich vorstellen.
 
super vielen dank sneaky jetzt läufts ;)

@Gumbo was genau meinst du?

Er bezieht sich auf folgende Stelle in deinem Code:
PHP:
$temp_id = $_GET['id'];
$result = mysql_query("SELECT bild FROM fertigkeiten WHERE ID = $temp_id");

Du packst einfach die Daten, die der User über das Formular geschickt hat, in dein MySQL-Query. Dabei besteht die gefahr von SQL Injektion.
Grundsätzlich gilt, dass man alle Daten die vom User kommen überprüfen (validieren) sollte.
 
Trotz der fehlerhaften Inhaltstyp-Angabe funktioniert es?

Hast recht, das fehlt noch was. Das hab ich leider übersehen, sorry! Hatte mich einfach zu sehr auf das "echo" konzentriert ;)

PHP:
<td><img src="bild_holen.php?id=<? echo $daten["id"]; ?>"></td>
hier haben noch die Anführungszeichen gefehlt $daten["id"]
 
Zuletzt bearbeitet:
Zurück