public function isAuth()
{
if (!isset($_COOKIE["vk_app_{$this->appId}"]))
return false;
$vkCookie = $_COOKIE["vk_app_{$this->appId}"];
if (!empty($vkCookie)) {
$data = array();
// parse_str должна спасти отца русской демократии, но хуй с ним
foreach (explode('&', $vkCookie) as $item) {
list($key, $value) = explode('=', $item);
$data[$key] = $value;
}
// Проверяем sig
$string = sprintf("expire=%smid=%ssecret=%ssid=%s%s", $data['expire'], $data['mid'], $data['secret'], $data['sid'], $this->appSecret);
if (md5($string) == $data['sig']) {
// sig не подделан - возвращаем ID пользователя ВКонтакте.
return $data['mid'];
}
}
return false;
}
и вот мне маленько непонятно: у нас есть sig, мы его конкатенируем к строке, потом считаем md5 от этой строки и этот md5 равен нашему sig. Как такое возможно?