Консультация № 55025
11.09.2006, 14:36
0.00 руб.
0 5 5
Здравствуйте, уважаемые эксперты. Возможно я ошибся и задаю вопрос экспертам не по теме, но все же. У меня есть сайт на PHP. Сначала там идет авторизация потом работа. Сайт предназначен для учета заявок от контрагентов. Так вот можно-ли написать клиентскую часть на языке более низкого уровня, скажем на C++, которая бы проходила авторизацию и заполняла формы, без web-интерфеса и отсылала данные серверу. Это нужно для экономии траффика и к тому-же с использованием web не все интерфейсные возможности можно реализовать. Заранее спасибо.

Обсуждение

Неизвестный
11.09.2006, 14:44
общий
это ответ
Здравствуйте, ATan!

1) Кто сказал что С++ более низкого уровня?
2) Проходить авторизацию на стороне клиента это как? БД у тебя все равно на сервере :)
3) Если уж нужен навороченный интерфейс - кури в сторону Java

Только мне кажется это зря - если у тебя страничка весит не мегабайт - то особой экономии траффика ты не получишь, только больше проблем

А так - возможности РНР оочень большие

Лучше спроси что у тебя не получается сделать средствами РНР - вот тогда тебе ответят как это можно сделать на РНР и и если не возможно, то как это можно обойти
Неизвестный
11.09.2006, 14:53
общий
это ответ
Здравствуйте, ATan!
1. На каком языке Вы не написали бы свою "клентскую" часть, объем траффика будет один и тот же. При авторизации и заполнении форм все значения передаются открытым текстом и язык на котором написан сайт никак не изменяет объем передаваемой информации.
2. Не путайте клиентскую и серверную части сайта. Клиентская часть выполняемся в броузере и пишется обычно на JavaScript. Серверная часть может быть на любом языке (PHP, Perl, C++, Java, ASP и т.д.).
3. На мой взгляд PHP гораздо удобнее при работе с web‘ом, чем другой язык.

P.S. Напишите в ICQ какие возможности Вам нужны и я посмотрю можно ли их реализовать в PHP.
Неизвестный
11.09.2006, 15:11
общий
это ответ
Здравствуйте, ATan!
Позволю себе не согласиться с предыдущими докладчиками. Использование клиентской программы (например на C++) действительно может сократить траффик (не прересылаются формы в HTML и всякие элементы оформления). И действительно шире интерфейсные возможности. Но большой минус - трудоемкость исполнения.

Если все же хочется такое написать, то первое что приходит на ум - C++ Builder. В нем есть компонент TNMHTTP, который дает все возможности для HTTP-обмена с сервером.

Об авторизации - отдельный вопрос. Какой тип Вы используете мне неизвестно, но вышеупомянутый кромпонент дает возможности и для HTTP-авторизации, и для авторизации через cooke или сессии.
Неизвестный
11.09.2006, 15:13
общий
это ответ
Здравствуйте, ATan!

Можно. Для этого потребуется знать HTTP-протокол. RFC по нему тут

1. http://www.w3.org/Protocols/rfc2616/rfc2616.html - английская, более поздняя версия
2. http://www.lib.ru/WEBMASTER/rfc2068/ - русская

С помощью сокетов подключаемся к веб-серверу (обычно 80 порт). Отправляем заголовок, получаем в ответ заголовок с ответом сервера. Смотрите простой пример в приложении.


Приложение:
После подключения к веб-серверу клиент отправляет:GET some_file.php?login=vasya&password=super_password HTTP/1.1Host: some_server.comИ два перевода строки ("\r\n\r\n").После этого сервер ищет у себя файл some_file.php, обрабатывает и выдает результат уже вам в виде:HTTP/1.1 200 OKDate: Mon, 11 Sep 2006 11:02:56 GMTServer: Apache/1.0.0 PHP/6.0Last-Modified: Mon, 04 Sep 2006 19:50:12 GMTAccept-Ranges: bytesContent-Length: 9Content-Type: text/html; charset=windows-1251Content-Language: ruAuthorizedСперва идет заголовок ответа (HTTP/1.1 200 OK - файл найден, ошибок нет, Date: ... - текущая дата и т.д.), затем опять же через двойной перевод строки идут данные, выведенные some_file.phpАнализируя вывод скрипта, вы можете узнать, правильны ли были логин и пароль - то есть совершить авторизацию, что и требовалось. Все остальное делается в том же ключе.
Неизвестный
11.09.2006, 15:28
общий
это ответ
Здравствуйте, ATan!
Посылайте на 80 порт сервера правильные запросы, обрабатывайте ответы и все! Правда не совсем понятно как Вы этим сэкономите трафик, но если постараетесь, то наверное получится.
Форма ответа