Страница 1 из 1

PHP, отправка RAW данных

Добавлено: 24 апр 2012, 19:05
Paranoia
Приветствую. В первую очередь хочу сказать спасибо за OpenServer, это действительно очень удобный продукт.

Есть вопрос по поводу PHP:
Создаю свою программу и хочу, что бы при запуске она проверяла не вышла ли новая версия программы через сайт. Прямо как OpenServer.
OpenServer по моим наблюдениям отправляет простой GET запрос и в ответ принимает сообщение с заголовком и текстом из цифр (версия по идеи).

Теперь сам вопрос: могу ли я PHP скриптом ответить программе "голым" (RAW) Integer'ом из четырех байт? Без каких-либо заголовков и прочего. Просто соединиться со скриптом и считать 4 байта, получив тем самым число актуальной версии программы.

Добавлено: 24 апр 2012, 19:38
Максим
Да вроде как нет, php передает ответ серверу, а сервер посылает заголовки. Даже если отключить у сервера все заголовки, то всё равно один останется:

HTTP/1.1 200 OK

Так что учите вашу программу нормально получать и разбирать ответ сервера.

Добавлено: 25 апр 2012, 08:39
nerevar1n
"Голым" интегером ответить в любом случае не получится, т.к. веб-сервер (apache, ngnix), в соответствии с HTTP протоколом отдаёт еще вспомогательные заголовки.
Но нужны -то не заголовки, а сам ответ, который можно обработать например вот так:
if (file_get_contents('http://site.ru/check_last_version.php') > CURRENT_SITE_VERSION) {
    // update
}

Добавлено: 26 апр 2012, 14:02
Paranoia
А header()'ом я могу отредактировать отдаваемый скриптом заголовок? Так бы туда впихул версию программы текстом, да и сам заголовок можно было бы не GET'ом брать, а HEAD запросом.
Ну или: как я могу скриптом отдавать только "HTTP/1.1 200 OK" внутри заголовка?

Добавлено: 26 апр 2012, 14:21
Максим
<?php
header("HTTP/1.0 200 OK");
?>

Добавлено: 26 апр 2012, 15:02
Paranoia
Максим, странно, но почему-то получаю это:
HTTP/1.0 200 OK
Date: Thu, 26 Apr 2012 11:00:45 GMT
Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/0.9.8r PHP/5.2.17
X-Powered-By: PHP/5.2.17
Content-Length: 0
Connection: close
Content-Type: text/html
Что есть header();, что нет.

Добавлено: 26 апр 2012, 16:24
DelphinPRO
Paranoia, вы занимаетесь извращением. Напишите простой скрипт проверки новой версии на php. Пусть он отдает только номер версии в формате text/plain. А из своей программы, нормально, по всем правилам, получайте содержимое этой страницы. Т.е. по факту, вам нужно будет только обратиться по адресу site.tu/checkver.php, а в ответе будет только номер версии программы. (При условии использования высокоуровневых библиотек для работы с http)

Добавлено: 26 апр 2012, 19:59
Paranoia
Вообщем как оказалось, header() в силах только добавить ту или иную строку в заголовок, но не изменить весь заголовок.
При таком раскладе действительно, проще будет отправлять версию текстом в теле ответа.

Хоть и можно было сделать как-то так:
header("X-SoftVerison: 1.3");
Что-то не покидает меня эта мысль с HEAD запросом :D.

Добавлено: 23 сен 2012, 04:06
Dronnis
Paranoia, Не понимаю, вашего гемороя, если Apache то, http://httpd.apache.org/docs/2.2/mod/mod_headers.html
посуте поможет удалить все заголовки кроме Server, в принцепе и его можно удалить если исходники поковырять, а дальше PHP: функцией header();
хотя в принцепе можно и через тот же .htaccess пропустить если по извращаться используя тот же mod_headers.
Хотя если мне память не ошибает то функция header() изменяет заголовки путём замены существующих тонее реплейсит, не особо я углублялся в управление заголовками так как за меня это система делает =)