Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 016 535 раз!

Форум

Добро пожаловать, Гость!

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

Вопросы по работе с Apache, Nginx, PHP, MySQL, Sendmail и т.д.
Paranoia
Сообщения: 13
C нами: 4 года 7 мес

Непрочитанное сообщение Paranoia » 24 апр 2012, 19:05

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

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

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

Аватара пользователя
Максим
Сообщения: 4868
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 24 апр 2012, 19:38

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

HTTP/1.1 200 OK

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

nerevar1n
Сообщения: 16
C нами: 4 года 10 мес
Контакты:

Непрочитанное сообщение nerevar1n » 25 апр 2012, 08:39

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

Paranoia
Сообщения: 13
C нами: 4 года 7 мес

Непрочитанное сообщение Paranoia » 26 апр 2012, 14:02

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

Аватара пользователя
Максим
Сообщения: 4868
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 26 апр 2012, 14:21

<?php
header("HTTP/1.0 200 OK");
?>

Paranoia
Сообщения: 13
C нами: 4 года 7 мес

Непрочитанное сообщение Paranoia » 26 апр 2012, 15:02

Максим, странно, но почему-то получаю это:
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();, что нет.

Аватара пользователя
DelphinPRO
Сообщения: 637
C нами: 4 года 10 мес
Откуда: Самара
Контакты:

Непрочитанное сообщение DelphinPRO » 26 апр 2012, 16:24

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

Paranoia
Сообщения: 13
C нами: 4 года 7 мес

Непрочитанное сообщение Paranoia » 26 апр 2012, 19:59

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

Хоть и можно было сделать как-то так:
header("X-SoftVerison: 1.3");

Что-то не покидает меня эта мысль с HEAD запросом :D.

Dronnis
Сообщения: 18
C нами: 4 года 5 мес

Непрочитанное сообщение Dronnis » 23 сен 2012, 04:06

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


Вернуться в «Модули и инструменты»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей