在任何人说之前,我会保护自己免受 SQL 注入,就在我修复这个错误之后。我正在制作一个将新闻报道提交到数据库的应用程序。此页面用于从数据库中删除报告。
我尝试过的:在 SQL 和语音标记中添加括号的所有可能方法。我和我的 ICT 老师已经研究了将近 2 个小时,但找不到解决方法。我也搜索过 Google 和 Stack Overflow,但找不到答案。
好的,所以当我回显它时会显示正确的 report_id。当我输入实际 id 时,例如 5,报告被删除。但是当我输入 $report_id 时,什么都没有被删除。
请有人告诉我我必须做哪些更正才能让它工作?
这是代码(编辑:这是固定代码。我在底部的表单中添加了隐藏字段,以及其他一些小的更改(例如取出额外的表单标签)):
<?php
require_once('authorize.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Football Central - Remove a Report</title>
</head>
<body>
<h2>Football Central - Remove a News Report</h2>
<?php
require_once('img_details_reports.php');
require_once('connect_db_reports.php');
//Assign variables from admin_reports.php using $_GET
$report_id = $_GET['id'];
if (isset($_POST['submit'])) {
if ($_POST['confirm'] == 'Yes') {
$report_id = $_POST['id'];
// Delete the image file from the server
@unlink(IMAGE_UPLOADPATH . $image);
// Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
or die("Unable to connect to the database.");
// Delete the score data from the database
$query = "DELETE FROM news_reports WHERE report_id = '".$report_id."' LIMIT 1"
or die("mysql_query failed - Error: " . mysqli_error());
mysqli_query($dbc, $query) or die("mysql_query failed - Error: " . mysqli_error());
mysqli_close($dbc);
}
}
//Display form to confirm delete
echo '<p>Are you sure you want to delete the news report?</p>';
echo '<form method="post" action="removereport.php">';
echo '<input type="radio" name="confirm" value="Yes" /> Yes ';
echo '<input type="radio" name="confirm" value="No" checked="checked" /> No <br />';
echo '<input type="hidden" name="id" value="' . $report_id . '" />';
echo '<input type="submit" value="Submit" name="submit" />';
echo '</form>';
echo '<p><a href="admin_reports.php"><< Back to admin reports page</a></p>';
?>
</body>
</html>