Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Авторизация VK.com с помощью СURL
Форумы портала PHP.SU » » Вопросы новичков » Авторизация VK.com с помощью СURL

Страниц (1): [1]
 

1. Den_Step - 09 Февраля, 2017 - 22:04:07 - перейти к сообщению
Приветствую вас, ниже приведен код авторизации в ВК , но всегда есть "но", работает этот код почему-то через раз, при одном обновлении страницы стягивается главная страница вк(без всяких ошибок), при втором обновлении уже авторизированная страница, но в конце Notice: Undefined offset: 0 для двух скрытых переменных ВК($ip_h,$lg_h) которые регулярными выражениями были найдены.
Подскажите пожалуйста в чем может быть ошибка или может какую-то литературу посоветуйте Закатив глазки
PHP:
скопировать код в буфер обмена
  1.  
  2. $username = 'my_login';
  3. $password = 'my_pas';
  4. $url = 'http://vk.com';
  5. $ch = curl_init($url);
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  7. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);;
  8. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36');
  9. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
  10. curl_setopt($ch, CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt');
  11. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  12. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  13. $headers = array(
  14.  'accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
  15.  'content-type' => 'application/x-www-form-urlencoded',
  16.  'user-agent' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
  17. );
  18. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  19.  
  20. $content = curl_exec($ch);
  21. echo iconv('CP1251', 'UTF-8', $content);
  22. preg_match_all("/name=\"ip_h\" value=\"(.*?)\" \\//s", $content, $res[0]);
  23. preg_match_all("/name=\"lg_h\" value=\"(.*?)\" \\//s", $content, $res[1]);
  24. $ip_h = $res[0][1][0];// вот эти вот данный которые в форме hidden
  25. $lg_h = $res[1][1][0];// через раз отрабатывают с ошибкой
  26. $urlT = 'http://login.vk.com/?act=login';
  27. $ch = curl_init($urlT);
  28. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  29. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  30. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36');
  31. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  32. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  33. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); файл
  34. curl_setopt($ch, CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt');
  35. curl_setopt($ch, CURLOPT_POST, true);
  36. curl_setopt($ch, CURLOPT_POSTFIELDS, 'act=login&ip_h='.$ip_h.'&lg_h='.$lg_h."&role=al_frame&email=$username&pass=$password&expire=&captcha_sid=&captcha_key=&_origin=".'http://vk.com&q=1');
  37. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  38. $html = curl_exec($ch);
  39. echo iconv('CP1251', 'UTF-8', $html);
2. LIME - 09 Февраля, 2017 - 22:13:35 - перейти к сообщению
Den_Step это нормально
просто нет таких массивов
Den_Step пишет:
или может какую-то литературу посоветуйт
https://learn[dot]javascript[dot]ru/debugging-chrome
вот и смотри почему не формируется массив
Den_Step пишет:
$ip_h = $res[0][1][0];
почему ты уверен что будет такой массив всегда?
вставь проверку if
var_dump($res[0]);
не нашлось видимо по регулярке
вот и говорит что нет такого ключа
проверки наше все
(Добавление)
выводи отладочные сообщения чтоб понять
вардамп выше для примера
3. Den_Step - 09 Февраля, 2017 - 22:19:00 - перейти к сообщению
LIME пишет:
Den_Step это нормально
просто нет таких массивов
Den_Step пишет:
или может какую-то литературу посоветуйт
https://learn[dot]javascript[dot]ru/debugging-chrome
вот и смотри почему не формируется массив
Den_Step пишет:
$ip_h = $res[0][1][0];
почему ты уверен что будет такой массив всегда?
вставь проверку if
var_dump($res[0]);
не нашлось видимо по регулярке
вот и говорит что нет такого ключа
проверки наше все


Массивы понятное дело экранирывались и каждый раз выводились, сейчас еще раз проверю
4. LIME - 09 Февраля, 2017 - 22:22:54 - перейти к сообщению
какое экранирование? ты используешь ключи неглядя
а ты уверен что они есть?
дебаг дядя придумали для тебя
вставь проверку если есть такой ключь
если нет выводи вардампом всю инфу
вот и выйдешь на причину бага
а если еще научишься юзать нормальные инструменты то будешь эти вещи легко делать
https://habrahabr[dot]ru/post/250323/
5. Den_Step - 09 Февраля, 2017 - 22:28:38 - перейти к сообщению
LIME пишет:
какое экранирование? ты используешь ключи неглядя
а ты уверен что они есть?
дебаг дядя придумали для тебя
вставь проверку если есть такой ключь
если нет выводи вардампом всю инфу
вот и выйдешь на причину бага
а если еще научишься юзать нормальные инструменты то будешь эти вещи легко делать
https://habrahabr.ru/post/250323/

Прикол в том, дядя, что страница парсится когда ключей нету, а когда они есть наоборот не происходит авторизация. Спасибо за совет сейчас буду дебаг смотреть
6. LIME - 09 Февраля, 2017 - 22:31:14 - перейти к сообщению
обиделся)
ну я типа хорошего желаю дядя)
Den_Step пишет:
сейчас буду дебаг смотреть
маст ду
без дебага у нас никуда
потрать пару дней привыкнуть
потом мне спасибо отдельно напишешь в личку
я не гордый))
7. Den_Step - 09 Февраля, 2017 - 22:36:36 - перейти к сообщению
LIME пишет:
обиделся)
ну я типа хорошего желаю дядя)
Den_Step пишет:
сейчас буду дебаг смотреть
маст ду
без дебага у нас никуда
потрать пару дней привыкнуть
потом мне спасибо отдельно напишешь в личку
я не гордый))

В любом случае, уже спасибо, буду искать
8. LIME - 09 Февраля, 2017 - 22:40:43 - перейти к сообщению
/

 

Powered by ExBB FM 1.0 RC1