Mysql Ausgabe verlinken

Wenn du mysql_fetch_object nutzt, musst du diese "$row->name"-Syntax verwenden,
bei mysql_fetch_array wäre es $row['name']!

Zu dem Fehler den du bekommst ... das von dir gepostete Script hat keine 89 Zeilen ;)


edit:
Ok dann passt ja jetz alles ;)

MfG
 
Auch wenn jetzt endlich alles funktioniert, hätte ich noch eine kleine Bitte an die Profis.

Auch wenn der Code nicht sehr sauber sein sollte -das ist dann wohl die Fleißarbeit für die nächsten Tage- aber ist denn der Code sicher ? Gibt es da ein Problem mit SQL-Injection etc ?

Wäre sehr froh wenn noch mal jemand einen Blick drauf werfen könnte. Anbei nochmals die liste.php (Überblick) und person.php (Details):

liste.php:
PHP:
<?php
  $sql = "SELECT id, anrede, vorname, nachname, bild, beruf FROM kandidaten ORDER BY id"; 
  $sqlanfrage = mysql_query($sql) or die("Es ist ein Fehler aufgetreten: " . mysql_error()); 
  
while ($daten = mysql_fetch_object($sqlanfrage)) 
    { 
    $id = stripslashes($daten->id); 
	$anrede = stripslashes($daten->anrede);
	$vorname = stripslashes($daten->vorname); 
	$nachname = stripslashes($daten->nachname);
	$bild = stripslashes($daten->bild);  
	$beruf = stripslashes($daten->beruf); 
	
	 
echo "<div id='kandidaten'>
<div id='kandidatenbild'>
<a href=\"person.php?id=$id\"><img src='$bild' border='0'></a>
</div>

<div id='kandidatentext'>
$anrede
<br>
<a href=\"person.php?id=$id\"><strong>$vorname $nachname</strong></a>
<br>
$strasse
</div>
<br>
<div id='kandidatenzusatz'>$beruf</div>
</div>

<div style='clear:both;'></div>";
	

}
?>

person.php
PHP:
<?php
  error_reporting(E_ALL);
  
  $error = '';
  
 if(!isset($_GET['id']) OR !is_numeric($_GET['id'])){
 
 $error = "Fehler !.<br />\n";
    }
    
	else{
        
 $_GET['id'] = (int)mysql_real_escape_string($_GET['id']);
 
  $id = $_GET['id'];

 
$abfrage = "SELECT id, anrede, titel, vorname, nachname, strasse, plz, ort, telprivat, teldienst, mobil, email, beruf, person, aktiv, grund, bild FROM kandidaten WHERE id='".$_GET['id']."'";

$ergebnis = mysql_query($abfrage) or die (mysql_error());

$row = mysql_fetch_array ($ergebnis);

{
 	$id = $row["id"];
 	$anrede = $row["anrede"];
 	$titel = $row["titel"];
	$vorname = $row["vorname"];
	$nachname = $row["nachname"];
	$strasse = $row["strasse"];
	$plz = $row["plz"];
	$ort = $row["ort"];
	$telprivat = $row["telprivat"];
	$teldienst = $row["teldienst"];
	$mobil = $row["mobil"];
	$email = $row["email"];
	$beruf = $row["beruf"];
	$person = $row["person"];
	$aktiv = $row["aktiv"];
	$grund = $row["grund"];
	$bild = $row["bild"];

 
echo "<tr><td><hr><img src='$bild'></td></tr><tr>
	<td>
	$anrede $titel<br><b>$vorname $nachname</b><br>
	$strasse<br>$plz $ort<br>
	Tel. Privat: $telprivat<br>
	Tel. Dienstl.: $teldienst<br>
	Tel. Mobil: $mobil<br>
	E-Mail: $email<br><br>
	Beruf: $beruf<br><br>
	Persönliches:<br>$person<br><br>
	Aktivitäten:<br> $aktiv<br><br>
	Gründe für Kandidatur:<br>$grund<br><hr><br><br><br><br><br></td></tr>";
 
}
}
?>


Besten Dank nochmals an drucko & Gumbo
 
In deiner liste.php nutzt du keinerlei Werte, die über $_GET, $_POST oder $_COOKIE kommen, insofern ist da kein Angriffspunkt!

In person.php wäre der einzige Wert, der sich theoretisch für eine SQL-Injection eignen würde $_GET['id'], den du aber zum einen mit !is_numeric() schonmal überprüfst und dann, wenn er numerisch ist, mit mysql_real_escape_string() escapest und dann noch in einen Integer-Wert umwandelst (int) --> also 3fach abgesichert ;)
Für IDs, also Integer-Zahlen, ist eine Typenumwandlung zu Integer eigentlich schon genug Absicherung, da dann eventuelle bösartige Eingaben in deren Int-Wert , also in eine Zahl, umgewandelt werden und somit unschädlich sind! Bei Texten bist du mit mysql_real_escape_string auf der sicheren Seite.
Ganz im Ganzen: in deinem Script keine SQL-Injection möglich
MfG

Und bitte Thread als "erledigt" markieren, wenn er erledigt sein sollte
 
Zurück