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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: cURL и ВКонтакте

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Как действовать после авторизации?
Neirol
Отправлено: 27 Июля, 2009 - 15:49:42
Post Id



Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Июнь 2009  
Откуда: Россия, Москва


Помог: 0 раз(а)




Хочу получить исходник своей страницы вконтакте посредством PHP.
Использую cURL, вот, что есть:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $email = 'someEmail';
  4. $password = 'somePass';
  5.  
  6. header('Content-type:text/html; Charset=cp1251');
  7.  
  8.  
  9. function curl($get, $post = 0, $cookies = '', $head = 1) {
  10.   $cl = curl_init($get);
  11.   curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);
  12.   curl_setopt($cl, CURLOPT_HEADER, $head);
  13.   curl_setopt($cl, CURLOPT_COOKIE, $cookies);
  14.   curl_setopt($cl, CURLOPT_FOLLOWLOCATION, 0);
  15.   curl_setopt($cl, CURLOPT_USERAGENT, 'Opera/9.25 (Windows NT 6.0; U; ru)');
  16.  
  17.   if ($post) {
  18.       curl_setopt($cl, CURLOPT_POST, 1);
  19.       curl_setopt($cl, CURLOPT_POSTFIELDS, $post);
  20.   }
  21.  
  22.   $line = curl_exec($cl);
  23.   curl_close($cl);
  24.   return $line;
  25. }
  26.  
  27. $login = curl('http://vkontakte.ru/login.php', 'op=a_login_attempt&email=' . urlencode($email) . '&pass=' . $password);
  28.  
  29. preg_match_all('#Set-Cookie:\s([\S]+?);#i', $login, $gets);
  30.  
  31. $cookies = join(';', $gets[1]);
  32.  
  33. if (!stripos($cookies, 'remixpass=')) die('Аккаунт не авторизован');
  34. else print "Аккаунт авторизован!";
  35.  
  36. ?>


Если я указываю верные данные то он успешно авторизовывается, иначе - наоборот.
Но, как мне, имея $cookies или $login получить контент свой страницы?


-----
Рожденные ползать - везде пролезет.
 
 Top
LightXXX
Отправлено: 27 Июля, 2009 - 23:33:53
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Немного проще по-моему, вот держи.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $uid='{твой_id}';
  3. $umail='{мыло}';
  4. $upasswd='{пасс}';
  5. $cookie='remixmid='.$uid.'; remixemail='.$umail.'; remixpass='.md5($upasswd).'; remixlang=3';
  6.  
  7. function myprofile($url, $cookie){
  8.         $ch = curl_init();
  9.         curl_setopt($ch, CURLOPT_URL,$url);
  10.         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  11.         curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  12.         curl_setopt($ch, CURLOPT_GET, 1);
  13.         curl_setopt($ch, CURLOPT_HEADER, 1);
  14.         curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  15.         $zz = curl_exec($ch);
  16.         curl_close($ch);
  17. return $zz;
  18. }
  19.  
  20. $url='http://vkontakte.ru/profile.php';
  21. $enter=myprofile($url, $cookie);
  22. echo $enter;
  23. ?>

(Отредактировано автором: 27 Июля, 2009 - 23:34:15)

 
 Top
Neirol
Отправлено: 28 Июля, 2009 - 13:11:16
Post Id



Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Июнь 2009  
Откуда: Россия, Москва


Помог: 0 раз(а)




Действительно проще и работает! Спасибо огромное.
Сейчас попробую осуществить тоже самое, только без ID.
(Добавление)
Хотя в принципе это и не нужно.
Мой первый вариант работает без ID, и в нем достаточно того, что он определяет авторизован я или нет.
(Добавление)
Сделал все-таки класс, который требует только E-Mail и Пароль. Когда он конструктируется идет проверка, авторизован юзер или нет, если нет, то die.
И единственная его функция выводит содержимое страницы по относительному адресу, причем можно выбрать выводить ли шапку или нет.
Выкладывать я такое добро, естественно не буду =)


-----
Рожденные ползать - везде пролезет.
 
 Top
Neirol
Отправлено: 30 Июля, 2009 - 12:32:39
Post Id



Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Июнь 2009  
Откуда: Россия, Москва


Помог: 0 раз(а)




Security error 3
Выдает вконтакте при попытке отправить сообщение через скрипт.

Вот класс:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class Vkontakte {
  4.  
  5.         private $cookie;
  6.         private $curl_handle;
  7.         private $exec_handle;
  8.        
  9.         public $user_id;
  10.        
  11.         function __construct($email, $password) {      
  12.                 $this->curl_handle = curl_init("http://vkontakte.ru/login.php");
  13.                        
  14.                 curl_setopt($this->curl_handle, CURLOPT_RETURNTRANSFER, 1);
  15.                 curl_setopt($this->curl_handle, CURLOPT_HEADER, 1);
  16.                 curl_setopt($this->curl_handle, CURLOPT_COOKIE, "");
  17.                 curl_setopt($this->curl_handle, CURLOPT_FOLLOWLOCATION, 0);
  18.                 curl_setopt($this->curl_handle, CURLOPT_USERAGENT, "Opera/9.25 (Windows NT 6.0; U; ru)");
  19.                 curl_setopt($this->curl_handle, CURLOPT_POST, 1);
  20.                 curl_setopt($this->curl_handle, CURLOPT_POSTFIELDS, "op=a_login_attempt&email=".urlencode($email)."&pass=".$password);
  21.                
  22.                 $this->exec_handle = curl_exec($this->curl_handle);
  23.                
  24.                 curl_close($this->curl_handle);
  25.                 preg_match_all("#Set-Cookie:\s([\S]+?);#i", $this->exec_handle, $gets);
  26.  
  27.                 $cookies = join(";", $gets[1]);
  28.                
  29.                 $this->user_id = explode(";", $cookies);
  30.                 $this->user_id = explode("=", $this->user_id[2]);
  31.                 $this->user_id = $this->user_id[1];
  32.  
  33.                 if (!stripos($cookies, "remixpass=")) die("Пользователь не авторизован!");
  34.                
  35.                 $this->cookie = "remixmid=".$this->user_id."; remixemail=".$email."; remixpass=".md5($password)."; remixlang=3";
  36.         }
  37.        
  38.         function getPageContent($relativeURL, $header = "0") {
  39.                 $url = "http://vkontakte.ru/".$relativeURL;
  40.                 $this->curl_handle = curl_init();
  41.  
  42.                 curl_setopt($this->curl_handle, CURLOPT_URL, $url);
  43.                 curl_setopt($this->curl_handle, CURLOPT_RETURNTRANSFER, 1);
  44.                 curl_setopt($this->curl_handle, CURLOPT_TIMEOUT, 30);
  45.                 curl_setopt($this->curl_handle, CURLOPT_GET, 1);
  46.                 curl_setopt($this->curl_handle, CURLOPT_HEADER, $header);
  47.                 curl_setopt($this->curl_handle, CURLOPT_COOKIE, $this->cookie);
  48.  
  49.                 $this->exec_handle = curl_exec($this->curl_handle);
  50.  
  51.                 curl_close($this->curl_handle);
  52.                 return $this->exec_handle;
  53.         }
  54.        
  55.         function sendLetter($letter, $uid) {           
  56.                 $url = "http://vkontakte.ru/mail.php?act=write&to=".$uid;
  57.                
  58.                 $secure_data = $this->getPageContent("mail.php?act=write&to=".$uid);
  59.                
  60.                 print $secure_data;
  61.                
  62.                 $secure_val = preg_match('|name="secure" value="(.*)"|i', $secure_data);
  63.                 $chas_val = preg_match('|name="chas" value="(.*)"|i', $secure_data);
  64.                 $photo_val = preg_match('|name="photo" value="(.*)"|i', $secure_data);
  65.                
  66.                 $this->curl_handle = curl_init();
  67.                
  68.                 curl_setopt($this->curl_handle, CURLOPT_HEADER, 1);
  69.                 curl_setopt($this->curl_handle, CURLOPT_NOBODY, 0);
  70.                 curl_setopt($this->curl_handle, CURLOPT_URL, $url);
  71.                 curl_setopt($this->curl_handle, CURLOPT_TIMEOUT, 30);
  72.                 curl_setopt($this->curl_handle, CURLOPT_RETURNTRANSFER, 1);
  73.                 curl_setopt($this->curl_handle, CURLOPT_FOLLOWLOCATION, 0);
  74.                 curl_setopt($this->curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
  75.                 curl_setopt($this->curl_handle, CURLOPT_COOKIE, $this->cookie);
  76.                 curl_setopt($this->curl_handle, CURLOPT_POST, 1);
  77.                 curl_setopt($this->curl_handle, CURLOPT_POSTFIELDS, "title='Тест'&message=".$letter."&secure=".$secure_val."&chas=".$chas_val."&photo=".$photo_val."&to_id=".$uid."&to_reply=0&act=sent");
  78.                
  79.                 $this->exec_handle  = curl_exec($this->curl_handle);
  80.                
  81.                 curl_close($this->curl_handle);
  82.                 return $this->exec_handle;
  83.         }
  84.  
  85. }
  86.  
  87. ?>


А вот как я им пользуюсь:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. require_once "curl.class.php";
  4.  
  5. $user = new Vkontakte("", "");
  6.  
  7. print $user->sendLetter("Тестовое сообщение", 17313857);
  8.  
  9. ?>


Помогите пожалуйста!

(Отредактировано автором: 30 Июля, 2009 - 13:12:21)



-----
Рожденные ползать - везде пролезет.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB