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

ali7
На сайте с 21.02.2010
Offline
25
5887

Здравствуйте!

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

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

<?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)"

В чем грабли?

Тут должна быть моя подпись
dvaes
На сайте с 03.09.2007
Offline
65
#1

написано же секьюрити еррор. попробуйте слиповать на пару секунд или больше перед отправкой

alexandr_nv
На сайте с 23.04.2009
Offline
39
#2

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

ali7
На сайте с 21.02.2010
Offline
25
#3
dvaes:
написано же секьюрити еррор. попробуйте слиповать на пару секунд или больше перед отправкой

Пробовал. Та же байда

alexandr_nv:

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

Вот как раз так и пытался сделать :)

Видимо что-то упустил. Но никак не найду что. Уже много раз проверял

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий