Parameterize history.php and search.php

Both now use db.php helpers with bound params: history's mission index (was
injectable via $_GET[index]) and the callsign LIKE search. Loops switched to
associative fetches.

Verified: history shows the committed mission + players + merc count; search
finds a queued callsign.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-01 14:06:34 -05:00
co-authored by Claude Opus 4.8
parent 530326b8e4
commit 7658db0641
2 changed files with 32 additions and 65 deletions
+21 -36
View File
@@ -6,39 +6,26 @@
<body style='background: #000;'> <body style='background: #000;'>
<?php <?php
$link = mysqli_connect('localhost', 'pqs', 'pqs') or die('Could not connect: ' . mysqli_error($link)); require_once("includes/db.php");
mysqli_select_db($link, 'pqs') or die('Could not select database');
$query = "SELECT MIN(missionid) FROM pqs_pastmissions"; $minmission = (int) pqs_val("SELECT MIN(missionid) FROM pqs_pastmissions");
$result = mysqli_query($link, $query) or die('Query failed: ' . mysqli_error($link)); $maxmission = (int) pqs_val("SELECT MAX(missionid) FROM pqs_pastmissions");
$rs = mysqli_fetch_array($result);
$minmission = $rs[0];
$query = "SELECT MAX(missionid) FROM pqs_pastmissions";
$result = mysqli_query($link, $query) or die('Query failed: ' . mysqli_error($link));
$rs = mysqli_fetch_array($result);
$maxmission = $rs[0];
$index = $maxmission; $index = $maxmission;
$fl = ""; $fl = "";
if (isset($_GET['prev'])) { if (isset($_GET['prev']) && isset($_GET['index'])) {
if (isset($_GET['index'])) { $index = (int)$_GET['index'] - 1;
$index = $_GET['index'] - 1; if ($index < $minmission) { $index = $maxmission; }
if ($index < $minmission) { $index = $maxmission; }
}
} }
if (isset($_GET['next'])) { if (isset($_GET['next']) && isset($_GET['index'])) {
if (isset($_GET['index'])) { $index = (int)$_GET['index'] + 1;
$index = $_GET['index'] + 1; if ($index > $maxmission) { $index = $minmission; }
if ($index > $maxmission) { $index = $minmission; }
}
} }
if ($index == $maxmission) { $fl = "(Last Mission)"; } if ($index == $maxmission) { $fl = "(Last Mission)"; }
if ($index == $minmission) { $fl = "(First Mission)"; } if ($index == $minmission) { $fl = "(First Mission)"; }
$query = "SELECT callsign, mech, pqs_pastmissions.missionid, missiondate, nummercs, missionsize, numplayers, missiontime FROM pqs_pastmissions inner join pqs_mission where pqs_pastmissions.missionid = pqs_mission.missionid HAVING pqs_pastmissions.missionid = $index"; $rows = pqs_rows("SELECT callsign, mech, pqs_pastmissions.missionid, missiondate, nummercs, missionsize, numplayers, missiontime FROM pqs_pastmissions inner join pqs_mission where pqs_pastmissions.missionid = pqs_mission.missionid HAVING pqs_pastmissions.missionid = ?", 'i', array($index));
$result = mysqli_query($link, $query) or die('Query failed: ' . mysqli_error($link));
if (isset($_GET['launch'])) { if (isset($_GET['launch'])) {
if ($_GET['launch'] == 'console') { if ($_GET['launch'] == 'console') {
@@ -50,24 +37,24 @@ if (isset($_GET['launch'])) {
echo "<tr><td colspan='2' class='queuedisplayhead'><font size='6'>Mission #$index</font> <font size='4'>$fl</font></td></tr>"; echo "<tr><td colspan='2' class='queuedisplayhead'><font size='6'>Mission #$index</font> <font size='4'>$fl</font></td></tr>";
echo "<tr><td class='queuedisplayhead' width='34%'>Callsign</td><td class='queuedisplayhead' width='34%'>Mech</td></tr>"; echo "<tr><td class='queuedisplayhead' width='34%'>Callsign</td><td class='queuedisplayhead' width='34%'>Mech</td></tr>";
while ($line = mysqli_fetch_array($result)) { foreach ($rows as $line) {
echo "<tr><td class='queuedisplay'>$line[0]</td><td class='queuedisplay'>$line[1]</td></tr>"; echo "<tr><td class='queuedisplay'>$line[callsign]</td><td class='queuedisplay'>$line[mech]</td></tr>";
$cfull = $line[3]; $cfull = $line['missiondate'];
$cyear = substr($cfull,0,4); $cyear = substr($cfull,0,4);
$cmonth = substr($cfull,4,2); $cmonth = substr($cfull,4,2);
$cday = substr($cfull,6); $cday = substr($cfull,6);
$mdate = date("l, F jS, o", mktime(0,0,0, $cmonth,$cday,$cyear)); $mdate = date("l, F jS, o", mktime(0,0,0, $cmonth,$cday,$cyear));
$mercs = $line[4]; $mercs = $line['nummercs'];
$pods = $line[5]; $pods = $line['missionsize'];
$numplayers = $line[6]; $numplayers = $line['numplayers'];
if (strlen($line[7]) == 3) { if (strlen($line['missiontime']) == 3) {
$mtime = substr($line[7], 0, 1); $mtime = substr($line['missiontime'], 0, 1);
$mtime = $mtime . ":"; $mtime = $mtime . ":";
$mtime = $mtime . (substr($line[7], 1,2)); $mtime = $mtime . (substr($line['missiontime'], 1,2));
} else { } else {
$mtime = substr($line[7], 0, 2); $mtime = substr($line['missiontime'], 0, 2);
$mtime = $mtime . ":"; $mtime = $mtime . ":";
$mtime = $mtime . (substr($line[7], 2,2)); $mtime = $mtime . (substr($line['missiontime'], 2,2));
} }
} }
echo "<tr><td align='center' colspan='2' class='queuedisplay'>&nbsp;</td>"; echo "<tr><td align='center' colspan='2' class='queuedisplay'>&nbsp;</td>";
@@ -83,8 +70,6 @@ if (isset($_GET['launch'])) {
} }
echo "<tr><td align='center'><a class='queuedisplayhead' href='history.php?prev=1&index=$index'>Prev</a></td>"; echo "<tr><td align='center'><a class='queuedisplayhead' href='history.php?prev=1&index=$index'>Prev</a></td>";
echo "<td align='center'><a class='queuedisplayhead' href='#' onclick='window.close()'>Close</a></td><td align='center'><a class='queuedisplayhead' href='history.php?next=1&index=$index'>Next</a></td></tr></table>"; echo "<td align='center'><a class='queuedisplayhead' href='#' onclick='window.close()'>Close</a></td><td align='center'><a class='queuedisplayhead' href='history.php?next=1&index=$index'>Next</a></td></tr></table>";
mysqli_free_result($result);
mysqli_close($link);
echo "</body></html>"; echo "</body></html>";
?> ?>
+11 -29
View File
@@ -35,48 +35,30 @@ echo "<tr><td colspan='4' class='queuedisplayhead'><font size='6'>Mission(s) : $
//echo "<tr><td class='queuedisplayhead' width='20%'>CallSign</td><td class='queuedisplayhead' width='20%'>Mission</td><td class='queuedisplayhead' width='20%'>ETD</td><td class='queuedisplayhead' width='20%'>Mech</td><td class='queuedisplayhead' width='20%'>Edit/Delete</td></tr>"; //echo "<tr><td class='queuedisplayhead' width='20%'>CallSign</td><td class='queuedisplayhead' width='20%'>Mission</td><td class='queuedisplayhead' width='20%'>ETD</td><td class='queuedisplayhead' width='20%'>Mech</td><td class='queuedisplayhead' width='20%'>Edit/Delete</td></tr>";
echo "<tr><td class='queuedisplayhead' width='25%'>CallSign</td><td class='queuedisplayhead' width='25%'>Mission</td><td class='queuedisplayhead' width='25%'>ETD</td><td class='queuedisplayhead' width='25%'>Mech</td></tr>"; echo "<tr><td class='queuedisplayhead' width='25%'>CallSign</td><td class='queuedisplayhead' width='25%'>Mission</td><td class='queuedisplayhead' width='25%'>ETD</td><td class='queuedisplayhead' width='25%'>Mech</td></tr>";
$link = mysqli_connect('localhost', 'pqs', 'pqs') or die('Could not connect: ' . mysqli_error($link)); require_once("includes/db.php");
mysqli_select_db($link, 'pqs') or die('Could not select database');
// get last commit time and mission id // get last commit time and mission id
$query = "SELECT max(MissionID), max(UNIX_TIMESTAMP(ctime)) FROM pqs_pastmissions"; $rs2 = pqs_row("SELECT max(MissionID) AS m, max(UNIX_TIMESTAMP(ctime)) AS t FROM pqs_pastmissions");
$getlct = mysqli_query($link, $query) or die('Query failed: ' . mysqli_error($link)); $lastmission = (int)($rs2['m'] ?? 0);
$rs2 = mysqli_fetch_array($getlct); $lastCommitTime = $rs2['t'] ?? null;
$lastmission = $rs2[0]; if(is_null($lastCommitTime)){$lastCommitTime = time();}
if(is_null($lastmission)){$lastmission = 0;}
$lastCommitTime = $rs2[1];//-(6*60*60);
if(is_null($lastCommitTime)){$lastCommitTime = time();}//-(6*60*60);}
//echo"$lastCommitTime";
//$d=strtotime("+$mtd Minutes",$lastCommitTime);
//$etd = date("h:i", $d);
// get time per game // // get time per game //
$query = "SELECT timepergame, timetoreset FROM pqs_gameconfig"; $cfg = pqs_row("SELECT timepergame, timetoreset FROM pqs_gameconfig");
$gettpg = mysqli_query($link, $query) or die('Query failed: ' . mysqli_error($link)); $tpg = (int)$cfg['timepergame'] + (int)$cfg['timetoreset'];
$rs1 = mysqli_fetch_array($gettpg);
$tpg = $rs1[0]+$rs1[1];
// fetch data // // fetch data //
$query = "SELECT * FROM pqs_queue WHERE CallSign LIKE '$cs'"; foreach (pqs_rows("SELECT * FROM pqs_queue WHERE CallSign LIKE ?", 's', array($cs)) as $line) {
$result = mysqli_query($link, $query) or die('Query failed: ' . mysqli_error($link)); $mtd = ($line['MissionID'] - $lastmission) * $tpg;
while ($line = mysqli_fetch_array($result)) {
$mtd = ($line[3] - $lastmission) * $tpg;
$d=strtotime("+$mtd Minutes",$lastCommitTime); $d=strtotime("+$mtd Minutes",$lastCommitTime);
$etd = date("h:i", $d); $etd = date("h:i", $d);
echo "<tr><td class='queuedisplay'>$line[0]</td><td class='queuedisplay'>$line[3]</td><td class='queuedisplay'>$etd</td><td class='queuedisplay'>$line[1]</td><td class='queuedisplay'>"; echo "<tr><td class='queuedisplay'>$line[CallSign]</td><td class='queuedisplay'>$line[MissionID]</td><td class='queuedisplay'>$etd</td><td class='queuedisplay'>$line[Mech]</td><td class='queuedisplay'>";
// echo "<a href='registration.php?action=edit&playerid=$line[2]&missionid=$line[3]' title='Edit $line[0]&apos;s information'><img src='images/edit.png' border='0' height='22'></a>&nbsp;&nbsp;";
// echo "<a href='registration.php?action=delete&playerid=$line[2]&missionid=$line[3]' title='Delete $line[0] from queue'><img src='images/delete.png' border='0' height='22'></a>&nbsp;&nbsp;";
echo "</td></tr>"; echo "</td></tr>";
} }
echo "<tr><td align='center' colspan='4' class='queuedisplay'>&nbsp;</td>"; echo "<tr><td align='center' colspan='4' class='queuedisplay'>&nbsp;</td>";
echo "</table></div>"; echo "</table></div>";
mysqli_free_result($result);
mysqli_close($link);
echo "</body></html>"; echo "</body></html>";
?> ?>
<script type="text/javascript"> <script type="text/javascript">