我创建了一个找到用户ID的小功能,我在网站上提供了该ID,因为我在<head>
$result=mysql_query("SELECT ID FROM korisnici WHERE username='".$_COOKIE["user"]."' AND password='".$_COOKIE["pass"]."'");
$get=mysql_fetch_assoc($result);
$ID_KORISNIK=$get["ID"];
if(empty($ID_KORISNIK))
{
echo '
<script>window.location="IDerror.php";</script>
';
}
所以,我想选择或插入数据库,我可以使用
$r=mysql_query("SELECT * FROM uzg WHERE IDkorisnik='$ID_KORISNIK'");
或使用JOIN
$r=mysql_query("SELECT * FROM uzg JOIN (uzg.IDkorisnik=korisnici.ID) WHERE korisnici.username='$_COOKIE["user"]' AND korisnici.password='$_COOKIE["pass"]'");
您如何看待哪一种更好或更有效?
答案 0 :(得分:1)
mysql_*
函数,使用PDO或mysqli_*
,并使用预准备语句来防止SQL注入攻击我建议您了解prepared statements,并使用PDO或MySQLi - this article来帮助您确定哪个。如果您选择PDO here is a good tutorial。
顺便说一下,我认为你的第一个解决方案更好(但你必须纠正很多东西)
答案 1 :(得分:1)
如果它是大项目我很想使用User类 所以我只想通过
来称呼它$ new_user-&GT;编号;
但是如果没有,你的第一种方法要好得多,但你不能先检查你的输入是否是有效的ID, 一旦您确认它是有效的ID [可能是现有的int],那么请使用您的第一种方法
并存储您的用户PWD,即使哈希是坏的,因为哈希很容易破解 所以,如果你想要一个针对cookie窃取的验证,请添加一些其他哈希