尝试查找ID或使用JOIN更有效

时间:2013-03-28 17:55:51

标签: php mysql join

我创建了一个找到用户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"]'");

您如何看待哪一种更好或更有效?

2 个答案:

答案 0 :(得分:1)

  1. 不要将密码存储为cookie
  2. 从不信任用户输入,您的查询受SQL注入攻击
  3. 不要使用mysql_*函数,使用PDO或mysqli_*,并使用预准备语句来防止SQL注入攻击
  4. 我建议您了解prepared statements,并使用PDOMySQLi - this article来帮助您确定哪个。如果您选择PDO here is a good tutorial

    顺便说一下,我认为你的第一个解决方案更好(但你必须纠正很多东西)

答案 1 :(得分:1)

如果它是大项目我很想使用User类 所以我只想通过

来称呼它

$ new_user-&GT;编号;

但是如果没有,你的第一种方法要好得多,但你不能先检查你的输入是否是有效的ID, 一旦您确认它是有效的ID [可能是现有的int],那么请使用您的第一种方法

并存储您的用户PWD,即使哈希是坏的,因为哈希很容易破解 所以,如果你想要一个针对cookie窃取的验证,请添加一些其他哈希