PHP isset for 循环无法检查未知数量的按钮


PHP-isset for loop not working to check unknown number of buttons

在这个.php文件中,在html正文中,我生成了一个无序列表,其中包含未知数量的项目:$num_files(目录中每个文件1个列表项)。

最后得到目录中的文件无序列表,每个文件都有一个"查看"按钮。

当用户单击特定文件(特定列表项)的查看按钮时,它应重定向。

无论我按哪个按钮,都不会发生任何事情。

[some stuff up here]
<ul class="center">
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="POST">
<?php
if($num_files==0) exit;
$i = 0;
$ii=0;
while ($i < $num_files) {
    $ii=$i+2;
    echo "<li> $user_filenames[$ii] </li>";
    $id = trim("view".$i);
    echo '<input type="submit" id=$id name=$id value="view">';
    $i=$i+1;
}?>
</form>
</ul>
<?php
    $x=0;
    $xx=0;
    while ($x < $num_files) {
        $var = trim("view".$x);
        if(isset($_POST[$var])){
            $xx = $x+2;
            $_SESSION['current_file'] = $user_filenames[$xx];
            header("Location: view_file.php");
            exit;
        }
        $x=$x+1;
    }
?>
</body>
</html>
值得注意的是,当我

将代码更改为以下内容时,当我按下任何按钮时,它就会成功重定向(但只会使用预定的 $user_filenames[x] 元素重定向,并且无法区分按钮)。

<ul class="center">
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="POST">
<?php
if($num_files==0) exit;
$i = 0;
$ii=0;
while ($i < $num_files) {
    $ii=$i+2;
    echo "<li> $user_filenames[$ii] </li>";
    echo '<input type="submit" id="view" name="view" value="view">';
    $i=$i+1;
}?>
</form>
</ul>
<?php
        if(isset($_POST['view'])){
            $_SESSION['current_file'] = $user_filenames[2];
            header("Location: view_file.php");
            exit;
        }
    }
?>
</body>
</html>

当您查看源代码时,此名称和 id 属性是否正确?

input type="submit" id=$id name=$id value="view"

你有这个:

echo '<input type="submit" id=$id name=$id value="view">';

取而代之的是这个(你说有效)

echo '<input type="submit" id="view" name="view" value="view">';

这是有道理的,因为从你的代码来看,上面的应该变成:

<input type="submit" id=someid name=someid value="view"

这是无效的 html。您需要确保生成的代码也包含引号。

我建议你也试试火狐的"萤火虫",使用它,你会注意到打乱的html,甚至不假思索。

这将是解决问题的一种变体:

$id = "'". trim("view".$i)."'";