在这个.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)."'";