Php 从数据库中删除帖子
我试图在帖子旁边创建一个链接,这样我就可以点击链接并删除帖子。现在,它似乎起作用了。然而,我似乎无法删除其他用户的帖子。现在,有了下面的代码,我就可以删除我写的帖子了 我怎样才能解决这个问题 这是我的密码:Php 从数据库中删除帖子,php,html,database,post,Php,Html,Database,Post,我试图在帖子旁边创建一个链接,这样我就可以点击链接并删除帖子。现在,它似乎起作用了。然而,我似乎无法删除其他用户的帖子。现在,有了下面的代码,我就可以删除我写的帖子了 我怎样才能解决这个问题 这是我的密码: <?php session_start(); //echo $_GET[ID]; if ($_SESSION['Access'] <> "D"){ header("location:example.com"); exit(); } $con = my
<?php
session_start();
//echo $_GET[ID];
if ($_SESSION['Access'] <> "D"){
header("location:example.com");
exit();
}
$con = mysql_connect("---","---","---");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("---", $con);
$sql ="DELETE FROM Posts WHERE ID = '$_GET[id]'";
//$sql = 'INSERT INTO `Entries` (`ID`, `Date`, `Content`, `Username`) VALUES (NULL, CURDATE(), \'blah\', \'Ryan\');';
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);
header("location:example.com");
exit();
?>
首先,
mysql\uuz
库已弃用,将在较新版本的php中删除。相反,我们应该使用更新的、更受支持的库,如mysqli
或pdo
。接下来,您对SQL注入非常开放,这可能使您的应用程序完全容易受到恶意用户的攻击
我们可以很容易地解决这两个问题
首先,我们需要确保提供了id
参数,这样我们的脚本就不会不必要地产生未定义的索引
错误
$id = isset($_GET['id']) ? $_GET['id'] : false;
if($id){
//now we do everything else in here
}
接下来,我们将使用MySQLI
库创建一个面向对象的连接。这将在if($id)
条件中继续
$con = new mysqli('host', 'user', 'pass', 'database');
现在,我们将继续使用prepared
语句安全地删除它,并将我们的值绑定到查询,而不是直接传递它们
$stmt = $con->prepare('delete from Posts where ID = ?');
$stmt->bind_param('i', $id);
$result = $stmt->execute();
$stmt->store_result();
if($result){
echo 'Safely deleted '. $stmt->num_rows .' rows from the database.';
} else {
echo 'Failed to delete from the database.';
}
这是执行删除操作的安全方法。但是,您还应该检查用户是否有删除权限等。否则,任何用户都可以通过
example.com/delete.php?id=18
并删除id为18
的帖子。您收到了什么错误?如果ID是整数,则可以在$\u GET[ID]周围删除单引号。而且,看起来$_GET[id]应该是$_GET[“id”];此脚本易受SQL注入攻击。研究准备好的陈述。尝试var_dump($_GET['id'])查看它是否有任何数据。我没有收到任何错误。这可以删除我写的帖子,但当我试图删除别人写的帖子时,这不起作用。好吧,那么我的最后一段代码是什么样子的呢?