Как стать автором
Обновить

Комментарии 19

Спасибо! Утащу с Вашего разрешения
надо не ошибки глушить собакой, а делать проверку
Этот класс писал не я, но влюбом случае он является прототипом и Вы совершенно правы.
Осмелюсь тоже внести свои исправления, теперь уже в ваш код. Вместо такой конструкции:
$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
	)
);

Идеологически, код правильный. Но тот, который исправляемый, гораздо быстрее. Можно сделать так:

// не могу использовать <source> из-за дурацкого кармического ограничения
$params =
    'code='. $this->code. '&'
    'act=security_check&'.
    'to='. $params['to']. '&'
    'hash='. $params['hash']. '&'.
    'al_page=' ;

Автору: мне не очень нравится, что Вы из переменной с массивом внезапно делаете строку. Да, это PHP, и так можно; но мне как-то вот не очень. Как насчет того, чтобы массив $params оставить как есть, а сконструированную строчку назвать $httpQueryParams?
Да, спасибо, это грубая ошибка. Это проблема копипаста. Так совпало, что переменная так же называется. Но в принципе, аргумент $params, после получения хэша больше не нужен.
В действительности ли второй код лучше?
Не понимаю, чем лучше вторая запись? Может быть привычнее, но не думаю, что она будет работать быстрее простой конкатенации строк.
Моя критика (исправления) касается скорее стиля оформления кода, чем его содержания. Лично я вижу проблему не в быстроте, а в наглядности. В массиве названия параметров отделены от значений визуально (плюс к тому можно забыть об амперсанде), чего не скажешь о собираемой строке в 1-м варианте.
Между прочим, подобная проверка идет только в случае, если хостинг забугорный.
НЛО прилетело и опубликовало эту надпись здесь
Почему бы не использовать метод официального API? Нужно лишь сайт зарегистрировать как приложение. Работает и на сервере и на локальном компьютере, особенно радует режим бесконечной сессии. Кроме того, есть параметр from_group, для отправки сообщений от имени группы.
Будьте добры, код в студию. На сколько я понял API контакта работают от куков браузера, поэтому отправлять в автоматическом режиме через php не получится. Если я ошибаюсь, то поправьте меня.
Держите: gist.github.com/1479977
Класс вверху, его использование и разъяснение ниже.
Спасибо за код. Но как я и говорил — у Вас авторизая проходит в ручном режиме, что противоречит фразе «Автоматическое оповещение». Можно засунуть в авторизацию автологин, но все равно я не до конца понял API контакта. У меня не получилось отправить сообшение к себе на стену.
Авторизация происходит лишь один раз, и я не вижу в этом проблемы. Дальше мы можем оставлять скрипт в crone, например, и он будет работать автоматически. На странице подключения сайта, обязательно нужно выбрать «Standalone-приложение», так как права на постинг сообщений на стену недоступны для простых сайтов.
Мне кажется это намного проще, чем парсить страницу, отправлять запросы и бояться, что смена верстки страницы поломает работоспособность скрипта.
Ну так в том то и проблема. Скрипт не гарантирует, что мы будем залогинены постоянно.
Плюс, что-то не понятно, как он повторно будет определять что мы уже залогинены? Ведь информация о сессии хранится в куках, а при первом логине куки сохраняются в браузере. А если после этого запустить скрипт кроном, то у скрипта не будет этих куков и соответственно контакт попросит залогиниться.
Это в вашем скрипте авторизация происходит через куки, так как эмулируется работа браузера. При работе с API используется токен сессии — access_token. Так, как при его запросе мы запрашиваем оффлайн-доступ, этот токен работает неограниченное время. Лишь только если мы сменим пароль к аккаунту, токен устареет и не будет работать.
Теперь понял. Спасибо большое за скрипт, будет полезен для дальнейших разработок.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации