Files
hustoj/web/admin/suspect_list.php
2024-10-10 12:56:56 +08:00

104 lines
3.1 KiB
PHP

<?php
require("admin-header.php");
//if (!(isset($_SESSION[$OJ_NAME.'_'.'administrator'])|| isset($_SESSION[$OJ_NAME.'_'.'contest_creator']))) {
// echo "<a href='../loginpage.php'>Please Login First!</a>";
// exit(1);
//}
if (isset($OJ_LANG)) {
require_once("../lang/$OJ_LANG.php");
}
?>
<title>Suspect List</title>
<hr>
<center><h3><?php echo $MSG_IP_VERIFICATION?></h3></center>
<div class='container'>
<?php
require_once("../include/set_get_key.php");
$contest_id = intval($_GET['cid']);
$sql = "select * from (select count(distinct user_id) c,ip from solution where contest_id=? group by ip) suspect inner join (select distinct ip, user_id, in_date from solution where contest_id=? ) u on suspect.ip=u.ip and suspect.c>1 order by c desc, u.ip, in_date, user_id";
$result = pdo_query($sql,$contest_id,$contest_id);
?>
<div>
<center>
<?php echo $MSG_CONTEST_SUSPECT1?>
<table width=90% border=1 style="text-align:center;">
<tr>
<td>IP address</td>
<td colspan=2>Used ID</td>
<td>Time</td>
<td>IP address count</td>
</tr>
<?php
foreach ($result as $row) {
echo "<tr>";
echo "<td>".$row['ip']."</td>";
echo "<td>".$row['user_id']."</td>";
echo "<td>";
echo "<a href='../userinfo.php?user=".$row['user_id']."'><sub>".$MSG_USERINFO."</sub></a> <sub>/</sub> ";
echo "<a href='../status.php?cid=$contest_id&user_id=".$row['user_id']."'><sub>".$MSG_CONTEST." ".$MSG_SUBMIT."</sub></a>";
echo "</td>";
echo "<td>".$row['in_date'];
echo "<td>".$row['c']."</td>";
echo "</tr>";
}
?>
</table>
</center>
</div>
<br><br>
<?php
$start = pdo_query("select start_time from contest where contest_id=?",$contest_id)[0][0];
$end = pdo_query("select end_time from contest where contest_id=?",$contest_id)[0][0];
$sql = "select * from (select count(distinct ip) c,user_id from loginlog where time>=? and time<=? group by user_id) suspect inner join (select distinct user_id from solution where contest_id=? ) u on suspect.user_id=u.user_id and suspect.c>1 inner join (select distinct ip, user_id, time from loginlog where time>=? and time<=? ) ips on ips.user_id=u.user_id order by c desc, u.user_id, ips.time, ip";
$result = pdo_query($sql,$start,$end,$contest_id,$start,$end);
?>
<div>
<center>
<?php echo $MSG_CONTEST_SUSPECT2?>
<table width=90% border=1 style="text-align:center;">
<tr>
<td colspan=2>User ID</td>
<td>Used IP address</td>
<td>Time</td>
<td>IP address count</td>
</tr>
<?php
foreach ($result as $row) {
echo "<tr>";
echo "<td>".$row['user_id']."</td>";
echo "<td>";
echo "<a href='../userinfo.php?user=".$row['user_id']."'><sub>".$MSG_USERINFO."</sub></a> <sub>/</sub> ";
echo "<a href='../status.php?cid=$contest_id&user_id=".$row['user_id']."'><sub>".$MSG_CONTEST." ".$MSG_SUBMIT."</sub></a>";
echo "</td>";
echo "<td>".$row['ip'];
echo "<td>".$row['time'];
echo "<td>".$row['c'];
echo "</tr>";
}
?>
</table>
</center>
</div>
</div>
<?php
require("../oj-footer.php");
?>