Unbekannter Fehler in Freundesliste

Ich Poste mal den ganzen Code...
Hatte nämlich bislang auch das Prob beim array_merge(), dass die ebiden Tabellen unterscheidliche Spaltennamen hatten, weshalb das ncih klappte... Aber das is ja gelöst...

PHP:
<?php
$sql = "SELECT 
ID,
Nickname
FROM 
fl_".$_SESSION['UserID']."
ORDER BY
Nickname ASC
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 
$friends = mysql_fetch_assoc($result);

$sql = "SELECT
ID,
Nickname
FROM 
User
WHERE
Letzte_Aktion > ".(time()-60*3)."
ORDER BY
Nickname ASC
";
$result= mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 
$useronline = mysql_fetch_assoc($result); // Die Ids in der DB (z.B useronline)

$h = 0; // Hilfezähler

for($i = 0; $i < count($friends); $i++) {

if(in_array($friends['ID'], $useronline)) {
    
    $on[] = $friends['ID'];
    unset($friend['ID']);
    $h++;
    }

}
?>
<select name="FL" size="1" style="width:100%;" OnChance="window.location='<?php echo $_SERVER['PHP_SELF']; ?>'+escape(this.options[this.selectedIndex].value);">
<?php
if($h <= 0)
{
	echo '<option value="leer">Keiner da ^^</option>'."n";
	$narr = $friends;
}
else
{
	echo '<option style="color:green;">Es sind '.$h.' Freunde on</option>'."n";
	$narr = array_merge_recursive($on,$friends);
}

?>
<option value="?page=friendlist">--->>---Detailliste---<<---</a></option>
<?php
for($i = 0; $i < count($narr); $i++) {

if($i < $h)
{
?>
<option value="?page=user&id=<?php echo $narr['ID'];?>"><span style="color: green;"><?php echo $narr['Nickname'];?></span></option>
<?php
}
elseif($i == $h)
{
echo '<option value="leer">---------------</option>';
}
else
{
?>
<option value="?page=user&id=<?php echo $narr['ID'];?>"><?php echo $narr['Nickname'];?></option>	
<?php
}

}
echo '</select>';

?>

Die IDs werden ausgelesen, zugeordnet udn auch richtig verarbeitet...

Nur das verlinken aus dem DropDown-Menü klappt mit dem OnChange im <select> nicht...

Das genannte Problem mit den values steckt darin, dass ja entweder die Profile der User gezeigt werden, ODER die Detailliste...
Also
$_SERVER['PHP_SELF']?page=details
und
$_SERVER['PHP_SELF']?page=user&id=$ID

Demnach muss fürs OnChange-Event im value auch der page Parameter gesetzt werden... Oder alternativ ne entsprechende Unterscheidung...
 
Ersetze das:

PHP:
if($i < $h)
{
?>
<option value="?page=user&id=<?php echo $narr['ID'];?>"><span style="color: green;"><?php echo $narr['Nickname'];?></span></option>
<?php
}
elseif($i == $h)
{
echo '<option value="leer">---------------</option>';
}
else
{
?>
<option value="?page=user&id=<?php echo $narr['ID'];?>"><?php echo $narr['Nickname'];?></option>    
<?php
}

besser mit das:

PHP:
echo ($i<$h?'<option value="?page=user&id='.$narr['ID'].'"><span style="color: green;">'.$narr['Nickname'].'</span></option>'
:($i==$h?'<option value="leer">---------------</option>':'<option value="?page=user&id='.$narr['ID'].'">'.$narr['Nickname'].'</option>'));

Eine Sicherheitslücke würde entstehen wenn wir das escaping im JavaScript rausnehmen würden. Und um das zu bewerkstelligen, was du gerne machen möchtest, müsstest du dies tun. Denn die in in den values ( ? = etc.) würden kodiert ( ? = %3f, = = %3d ).

Bevor wir als Spamer verurteilt werden (gegg), sollten wir lieber über ICQ alles bereden, denn ich verstehe dein Hauptproblem, leider gottes, immernoch nicht xD
 
Zurück