Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 10.07.2010, 01:03   #1
Студент заочник
 
Аватар для ali7
 
Регистрация: 21.02.2010
Адрес: Europe
Сообщений: 69
Репутация: 3391

По умолчанию Отправить сообщение вконтакте на php

Здравствуйте!
Подскажите, как отправить сообщение вконтакте пхп скриптом.

Делаю типа такого:

Код:
<?php
function setcurlcookie($setcookie) {
global $cookie;
if (!empty($setcookie)) {$cookie = $setcookie;}}

function curl($url, $post = '') {
global $cookie; 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);}
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_NOBODY, 0); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($ch); 
curl_close($ch);
return $result;}

function authorization($login, $passwd) {
$result = curl('http://login.vk.com/?act=login', 'email='.$login.'&pass='.$passwd.'&expire=&vk=');  
preg_match('/name=\'s\' value=\'(.*?)\'/i', $result, $temp);                 
$cookieid = $temp[1];
if (!empty($cookieid)) {
setcurlcookie('remixchk=5; remixsid='.$cookieid);
echo 'Авторизация успешна';
return true;
} else {
echo 'Авторизация не прошла';
return false;}}


if (authorization("mail@mail.ru", "password"))
{
    $result = curl("http://vkontakte.ru/mail.php?act=write&to=1111111");   
    preg_match('/<input type="hidden" id="chas" name="chas" value="([^"]+)"/i', $result, $chas);
    preg_match('/<input type="hidden" id="secure" name="secure" value="([^"]+)"/i', $result, $secure);
    preg_match('/<input type="hidden" id="photo" name="photo" value="([^"]+)"/i', $result, $foto);
    preg_match('/<input type="hidden" id="to_id" name="to_id" value="([^"]+)"/i', $result, $to_id);
    sleep(5);
    $postdata = "act=sent&ajax=1&misc=&secure=$secure[1]&chas=$chas[1]&photo=$foto[1]&to_id=$to_id[1]&to_reply=0&toFriends=&title=Приветтт!!!&message=Тесттттт&oid=&vid=&fid=&aid=";
    echo $postdata . "<br />";
    $result2 = curl("http://vkontakte.ru/mail.php", "$postdata");    
   echo var_dump($result2);
}
?>
Авторизация проходит нормально. Получаю страницу http://vkontakte.ru/mail.php?act=write&to=1111111, беру с формы все поля, что там есть, но при попытке отправить данные на сервер получаю:

"HTTP/1.1 400 Bad Request
Server: nginx/0.7.59
Date: Fri, 09 Jul 2010 20:50:44 GMT
Content-Type: text/json; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.2.6-1+lenny4
Pragma: no-cache
Cache-control: no-store
Content-Length: 18

Security error (2)"


В чем грабли?
__________________
Тут должна быть моя подпись
ali7 вне форума   Ответить с цитированием

Реклама
Старый 10.07.2010, 07:08   #2
dvaes
Аспирант
 
Регистрация: 03.09.2007
Адрес: Хабаровск
Сообщений: 247
Репутация: 12390
Отправить сообщение для dvaes с помощью ICQ
Социальные сети Профиль в ВКонтакте

По умолчанию Ответ: Отправить сообщение вконтакте на php

написано же секьюрити еррор. попробуйте слиповать на пару секунд или больше перед отправкой
dvaes вне форума   Ответить с цитированием
Старый 10.07.2010, 11:25   #3
alexandr_nv
Кандидат наук
 
Аватар для alexandr_nv
 
Регистрация: 23.04.2009
Сообщений: 397
Репутация: 13697
Отправить сообщение для alexandr_nv с помощью ICQ

По умолчанию Ответ: Отправить сообщение вконтакте на php

Всегда решение одно - смотреть снифером как это делает бразуер и пытаться повторить один в один.
alexandr_nv вне форума   Ответить с цитированием
Старый 10.07.2010, 12:00   #4
ali7
Студент заочник
 
Аватар для ali7
 
Регистрация: 21.02.2010
Адрес: Europe
Сообщений: 69
Репутация: 3391

ТопикСтартер Ответ: Отправить сообщение вконтакте на php

Цитата:
Сообщение от dvaes Посмотреть сообщение
написано же секьюрити еррор. попробуйте слиповать на пару секунд или больше перед отправкой
Пробовал. Та же байда

Цитата:
Сообщение от alexandr_nv
Всегда решение одно - смотреть снифером как это делает бразуер и пытаться повторить один в один.
Вот как раз так и пытался сделать
Видимо что-то упустил. Но никак не найду что. Уже много раз проверял
ali7 вне форума   Ответить с цитированием
Ответ



Опции темы

Быстрый переход


Регистрация Справка Календарь Поддержка Все разделы прочитаны