Комментарии 19
Спасибо! Утащу с Вашего разрешения
0
надо не ошибки глушить собакой, а делать проверку
+2
Осмелюсь тоже внести свои исправления, теперь уже в ваш код. Вместо такой конструкции:
имхо лучше использовать такую:
$params = 'code='. $this->code. '&act=security_check&to='. $params['to']. '&hash=' .$params['hash']. '&al_page=';
имхо лучше использовать такую:
$params = http_build_query(
array_merge(
array('code'=> $this->code, 'act'=> 'security_check', 'al_page'=> ''), $params
)
);
+5
Идеологически, код правильный. Но тот, который исправляемый, гораздо быстрее. Можно сделать так:
// не могу использовать <source> из-за дурацкого кармического ограничения
$params =
'code='. $this->code. '&'
'act=security_check&'.
'to='. $params['to']. '&'
'hash='. $params['hash']. '&'.
'al_page=' ;
Автору: мне не очень нравится, что Вы из переменной с массивом внезапно делаете строку. Да, это PHP, и так можно; но мне как-то вот не очень. Как насчет того, чтобы массив $params оставить как есть, а сконструированную строчку назвать $httpQueryParams?
// не могу использовать <source> из-за дурацкого кармического ограничения
$params =
'code='. $this->code. '&'
'act=security_check&'.
'to='. $params['to']. '&'
'hash='. $params['hash']. '&'.
'al_page=' ;
Автору: мне не очень нравится, что Вы из переменной с массивом внезапно делаете строку. Да, это PHP, и так можно; но мне как-то вот не очень. Как насчет того, чтобы массив $params оставить как есть, а сконструированную строчку назвать $httpQueryParams?
0
В действительности ли второй код лучше?
0
Не понимаю, чем лучше вторая запись? Может быть привычнее, но не думаю, что она будет работать быстрее простой конкатенации строк.
0
Между прочим, подобная проверка идет только в случае, если хостинг забугорный.
0
НЛО прилетело и опубликовало эту надпись здесь
Почему бы не использовать метод официального API? Нужно лишь сайт зарегистрировать как приложение. Работает и на сервере и на локальном компьютере, особенно радует режим бесконечной сессии. Кроме того, есть параметр from_group, для отправки сообщений от имени группы.
+2
Будьте добры, код в студию. На сколько я понял API контакта работают от куков браузера, поэтому отправлять в автоматическом режиме через php не получится. Если я ошибаюсь, то поправьте меня.
0
Держите: gist.github.com/1479977
Класс вверху, его использование и разъяснение ниже.
Класс вверху, его использование и разъяснение ниже.
0
Спасибо за код. Но как я и говорил — у Вас авторизая проходит в ручном режиме, что противоречит фразе «Автоматическое оповещение». Можно засунуть в авторизацию автологин, но все равно я не до конца понял API контакта. У меня не получилось отправить сообшение к себе на стену.
0
Авторизация происходит лишь один раз, и я не вижу в этом проблемы. Дальше мы можем оставлять скрипт в crone, например, и он будет работать автоматически. На странице подключения сайта, обязательно нужно выбрать «Standalone-приложение», так как права на постинг сообщений на стену недоступны для простых сайтов.
Мне кажется это намного проще, чем парсить страницу, отправлять запросы и бояться, что смена верстки страницы поломает работоспособность скрипта.
Мне кажется это намного проще, чем парсить страницу, отправлять запросы и бояться, что смена верстки страницы поломает работоспособность скрипта.
0
Ну так в том то и проблема. Скрипт не гарантирует, что мы будем залогинены постоянно.
Плюс, что-то не понятно, как он повторно будет определять что мы уже залогинены? Ведь информация о сессии хранится в куках, а при первом логине куки сохраняются в браузере. А если после этого запустить скрипт кроном, то у скрипта не будет этих куков и соответственно контакт попросит залогиниться.
Плюс, что-то не понятно, как он повторно будет определять что мы уже залогинены? Ведь информация о сессии хранится в куках, а при первом логине куки сохраняются в браузере. А если после этого запустить скрипт кроном, то у скрипта не будет этих куков и соответственно контакт попросит залогиниться.
0
Это в вашем скрипте авторизация происходит через куки, так как эмулируется работа браузера. При работе с API используется токен сессии — access_token. Так, как при его запросе мы запрашиваем оффлайн-доступ, этот токен работает неограниченное время. Лишь только если мы сменим пароль к аккаунту, токен устареет и не будет работать.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Автоматическое оповещение читателей о новостях с помощью ВКонтакте. Часть 3