これは1時間前までは完璧に機能していましたが、それ以来、私はそれを修正するために頭を悩ませましたが、何も得られませんでした.
コードはユーザーのリストとそれらを禁止するボタンを表に出力しますが、問題は、たとえば 34 番目のユーザーを禁止するをクリックすると、最初のユーザーを禁止し、56 番目のユーザーを禁止するをクリックすると、そのユーザーを禁止することです。 2 番目のユーザー。私のコードを見ると、そうではないことがわかるはずです (uID を除いて、他のすべての詳細は完全に正しいことに注意してください)。
$query = mysql_query("SELECT id, full_name, banned, username from `tblUsers`");
while($row = mysql_fetch_array($query)){
$uID = $row['id'];
if($row['banned'] == '0'){
$banBool = '<form id="ban" method="post" action="ban.php?uid='.$uID.'">
<input type="hidden" name="ban" value="" />
<a onclick="document.getElementById(\'ban\').submit();">Ban</a>
</form>'; }else{
$banBool = '<form id="unban" method="post" action="unban.php?uid='.$uID.'">
<input type="hidden" name="name" value="" />
<a onclick="document.getElementById(\'unban\').submit();">UnBan</a>
</form>' ;
}
if($row['banned'] == '1'){
$status = 'Banned';
}else{
$status = 'Active';
}
echo "<tr><td>" . $row['username'] . " " . $uID . "</td><td>" . $banBool . "</td><td>" . $status . "</td><td>" . $row['full_name'] . "</td></tr>";
}
問題は action="unban.php?uid='.$uID.' にあります。パスをトレースするとき、IDは常に最小の数値です(上位の結果)
ban.php
<?php
include '../../includes/dataBase.class.php';
sql::connect();
if(!sql::checkAdmin() == 1){
header("Location: ../myaccount.php");
}
if(!isset($_GET['uid'])){
header("Location: users.php?action=1");
}
$uid = $_GET['uid'];
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("INSERT INTO `uipBan` (`ip`) VALUES ('$ip')")or die(mysql_error());
mysql_query("UPDATE tblUsers SET banned = '1' WHERE id = '$uid'")or die(mysql_error());
//header("Location: users.php?action=1");
echo $uid;
?>