因此,下面发布的代码在Internet Explorer中运行良好,但在Firefox中运行不正常。传递URL变量UserName
时,无论选择哪个按钮,Firefox都只使用记录集中的最后一条记录。此页面使用重复区域,以允许站点管理员通过单击每个区域中的各个按钮来设置密码,更新用户配置文件和删除用户。应该发生的是,当单击一个按钮时,它应该转发到相应的页面,其中包含在URL末尾的区域UserName
值。问题仅在Firefox中。 $_POST['UserName']
始终等于SQL数据库中最后创建的记录的值。我对PHP很新,所以我不确定我在这里忽略了什么。我的搜索都没有任何帮助。
这是PHP:
<?php
$query_ManageUsers =$dbh->prepare("SELECT * FROM users WHERE UserLevel = 0 ORDER BY UserName ASC");
$query_ManageUsers->execute();
$row_ManageUsers = $query_ManageUsers->fetch(PDO::FETCH_ASSOC);
$query_RowCount = $dbh->prepare("SELECT COUNT(*) FROM users");
$totalRows_ManageUsers = $query_RowCount->fetchColumn();
if ((isset($_POST['UserID'])) && ($_POST['UserID'] != ""))
{
$userName = $_POST['UserName'];
switch ($_REQUEST['admin'])
{
case "Reset Password":
$redirect = "SetPassword.php?UserName=$userName";
header(sprintf("Location: %s", $redirect));break;
case "Update Profile":
$redirect = "UpdateUserProfile.php?UserName=$userName";
header(sprintf("Location: %s", $redirect));break;
case "Delete User":
$redirect = "ConfirmDelete.php?UserName=$userName";
header(sprintf("Location: %s", $redirect));break;
}
}
?>
这是HTML
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE"/>
<meta http-equiv="Content-Type" content="text/html: charset=utf-8"/>
<title>Admin</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script language="JavaScript" type="text/javascript">document.documentElement.className="xr_bgh2";</script>
<link rel="stylesheet" type="text/css" href="index_htm_files/xr_main.css"/>
<link rel="stylesheet" type="text/css" href="index_htm_files/xr_text.css"/>
<link rel="stylesheet" type="text/css" href="index_htm_files/custom_styles.css"/>
<script type="text/javascript" src="index_htm_files/roe.js"></script>
</head>
<body class="xr_bgb2">
<div style="width:625px;">
<label style="text-align:left; font-size:18px; font-weight:bold;" >User Administration</label>
<?php if ($row_ManageUsers != 'null') { // Show if recordset not empty ?>
<?php do { ?>
<table border="1">
<tr>
<td>
<form id="ManageUsers" method="post" >
<table width="615">
<tr>
<td style="width:250px">
<input name="UserName" style="width:250px; background-color:#C8DACA; border:none; font-size:14px" id="UserName" value="<?php echo $row_ManageUsers['UserName']; ?>" readonly="readonly" /></td>
<td style="width:100px">
<input name="admin" type="submit" value="Reset Password" form="ManageUsers" /></td>
<td style="width:100px">
<input name="admin" type="submit" value="Update Profile" form="ManageUsers" /></td>
<td style="width:100px">
<input name="UserID" type="hidden" id="UserID" form="ManageUsers" value="<?php echo $row_ManageUsers['UserID']; ?>" />
<input name="admin" type="submit" value="Delete User" form="ManageUsers"/>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
<?php } while ($row_ManageUsers = $query_ManageUsers->fetch(PDO::FETCH_ASSOC)); ?>
<?php } // Show if recordset not empty ?>
</div>
</body>
</html>
答案 0 :(得分:0)
正如我在评论中提到的,问题是您的表单具有相同的ID,如果您查看您的html / php代码,您会注意到整个表单是为每个循环输出的,并且包括相同的循环的每次迭代的id。
有些浏览器会忽略其他浏览器可能只使用最后一次出现的ID。
如果不对此进行测试,我无法100%确定这是问题,但至少它是不好的做法,应该修复。
我建议使用唯一的ID,或者甚至将该ID用作类。
只是为了澄清,当我说表格ID时我的意思是
<form id="ManageUsers" method="post" >