带有if语句的图片显示


picture display with if statements

我有一个数据库,它将我所有的库存项目存储在#插槽中。项目的值在1-50之间。每个值表示存储在服务器上的图片。这是我写的代码,它将根据数据库中列出的值显示x图片。虽然这个代码有效,但我想知道是否有人能给我一个更好的方法来写这个代码,因为如果我有50件商品,根据可用的库存插槽数量,我将有6000多行代码。

require_once 'includes/database.php';
$query = mysql_query("SELECT * FROM inventory WHERE username '".$_SESSION['username']."'"); 
while($row = mysql_fetch_array($query)) 
$inv1 = $row["inv1"];
if($inv1 == 1) {
$inv1a = '<img src="images/armor/1.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 2) {
$inv1a = '<img src="images/armor/2.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 3) {
$inv1a = '<img src="images/armor/3.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 4) {
$inv1a = '<img src="images/armor/4.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 5) {
$inv1a = '<img src="images/armor/5.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 6) {
$inv1a = '<img src="images/armor/6.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 7) {
$inv1a = '<img src="images/armor/7.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 8) {
$inv1a = '<img src="images/armor/8.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 9) {
$inv1a = '<img src="images/armor/9.png">';
$smarty->assign('inv1a',$inv1a);
}
if($inv1 == 10) {
$inv1a = '<img src="images/armor/10.png">';
$smarty->assign('inv1a',$inv1a);
}

可能是这样的事情(实际上我甚至不知道你的代码应该做什么,这可能根本不起作用):

while ($row = mysql_fetch_array($query)) {
    $inv1 = $row["inv1"];
    $inv1a = '<img src="images/armor/'.$inv1.'.png">';
    $smarty->assign('inv1a',$inv1a);
}

这样写:

require_once 'includes/database.php';
$query = mysql_query("SELECT * FROM inventory WHERE username '".$_SESSION['username']."'"); 
while($row = mysql_fetch_array($query)) {
    $inv1 = $row["inv1"];
    $inv1a = '<img src="images/armor/'. intval($inv1). '.png">';
    $smarty->assign('inv1a', $inv1a);
}

我在$inv1左右使用intval,因为我假设您只从数据库中获取整数。

如果不是这样,请删除将intval($inv1)更改为$inv1

函数intval将输入强制转换为整数,这将防止可能的XSS攻击,例如故意命名为"index.php.png"的文件

每次你计划在网页中使用输出时,都要对其进行消毒,并确保你正在加载预期加载的内容。

您可以尝试以下操作:

while($row = mysql_fetch_array($query)){ 
    $inv1 = $row["inv1"];
    $inv1a = "<img src='images/armor/" . $inv1 . ".png'>";
    $smarty->assign('inv1a',$inv1a);
}

该代码假设图像只能在armor目录中找到。然而,如果你需要在图像类型之间切换,你可以将其设置为一个变量,比如:

$itemType = "armor";
while($row = mysql_fetch_array($query)){ 
    $inv1 = $row["inv1"];
    $inv1a = "<img src='images/" . $itemType . "/" . $inv1 . ".png'>";
    $smarty->assign('inv1a',$inv1a);
}