通过数据库获取结果的问题,其中会话ID记录在用户ID中,我将不得不检查我通过链接获取的uid

时间:2015-04-10 19:13:45

标签: php mysql

$getwhole_messages = $db->query("
SELECT * FROM `user_messages` 
WHERE `sender_id`='".$_SESSION['RVuser']."' ||
`reciever_id`='".$_SESSION['RVuser']."' &&
`sender_id`='".$_GET['uid']."' ||
`reciever_id`='".$_GET['uid']."'"
);

我想在哪里检查会让我知道会话ID与uid匹配。它将在sender_id或reciever_id中。

2 个答案:

答案 0 :(得分:0)

评论太长了,除了tadman所说的(你的SQL注入攻击的风险很大),这个查询太开放了。

当存在以下任何条件时,您就具有此匹配:

条件1:当sender_id = $ _SESSION [' RVuser']

条件2:当receiver_id = $ _SESSION [' RVuser'] AND sender_id = $ _GET [' uid']

条件3:当receiver_id = $ _GET [' uid']

因此,所有人都需要使用?uid=#加载您的网页以获取有关条件3的信息。

答案 1 :(得分:-1)

始终清理易受攻击的输入!我假设你在我的例子中使用了MySQLi。

$select = sprintf("SELECT * FROM user_messages WHERE sender_id=%d || reciever_id=%d && sender_id=%d || reciever_id=%d;",
  $_SESSION['RVuser'],
  $_SESSION['RVuser'],
  $db->real_escape_string($_GET['uid']),
  $db->real_escape_string($_GET['uid'])
);

if($getwhole_messages = $db->query($select))
  // Prosess results
} else {
  // Output Query error
}

请提供错误详情,以便我们提供更多答案。