purebasic.info

PureBasic forum
Текущее время: Чт сен 20, 2018 9:53 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Создаем сайты через PB (CGI)
СообщениеДобавлено: Пн ноя 08, 2010 9:52 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2285
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Благодаря Петру, который выложил новость о CMS на PureBasic'е я решил тоже попробовать что-нибудь отправить своему браузеру через PureBasic.
Создавать свой WEB сервер невероятно тяжело, а использовать спец. технологию CGI — легко ;).

Для начала нужен сам HTTP сервер с поддержкой CGI, я выбрал Apache.
Для выполнения CGI программ, Apache необходимо чуть-чуть настроить, в файле "...\conf\httpd.conf" ищем строку:
Цитата:
This should be changed to whatever you set DocumentRoot to.

И ниже, внутри контейнера "Directory" необходимо добавить две строки:
Цитата:
Options +ExecCGI
AddHandler cgi-script .exe

Первая — ставим опцию, которая позволяет выполнять CGI программы в текущей директории. Вторая — распознаем файлы с EXE расширением как CGI программы.
Перезагрузим Apache и попробуем что-нибудь отправить браузеру через эту программу:
Код:
1
2
3
4
If OpenConsole()
  output.s = "Content-type: text/html" + #CRLF$ + #CRLF$ + "Hello from PureBasic!"
  WriteConsoleData(@output, Len(output))
EndIf


Компилируем код в EXE файл и перемещаем его в "WWW" директорию Apache сервера. Переходим по ссылке в браузере:
Цитата:
http://localhost/file.exe

И если все сделано правильно, то в браузере мы увидим строку "Hello from PureBasic!".

Полезные статьи, как освоить CGI можно найти тут.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 09, 2010 9:58 am 
Не в сети
профессор

Зарегистрирован: Чт авг 05, 2010 2:36 pm
Сообщений: 469
Откуда: Донецк
Благодарил (а): 47 раз.
Поблагодарили: 11 раз.
qpAHToMAS
А можно еще хотя бы пару примерчиков с использованием этой либы?
Меня заинтересовало создание своей CMS, неплохо бы так склепать свой сайт с использованием только одного барсика.

Кстати, случайно никто не встречал такую штуковину как RunBasic server?
С фриварной версией ничего не реально делать как только отлаживать скрипты.

_________________
PureBasic 5.60 X86, RfoBasic 90, Tinycc 0.97, Asus K54C Intel i7 2.7 ghz, 8 gb ddr3, Intel HD 3000, Windows XP SP3, Windows 10 x64, Nexus 4 and v5.1.1.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 09, 2010 1:41 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн апр 27, 2009 5:18 pm
Сообщений: 387
Откуда: Череповец, Вологодская область
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Цитата:
распознаем файлы с EXE расширением как CGI программы

Тогда получается, что если сервер запущен на Linux, то он будет обрабатывать EXE или надо компилировать файл в PB для Linux?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 09, 2010 1:51 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
BaCo писал(а):
если сервер запущен на Linux, то он будет обрабатывать EXE
Ага.... под вайном! :D :D

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 09, 2010 3:53 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2285
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Apokalipsis писал(а):
qpAHToMAS
А можно еще хотя бы пару примерчиков с использованием этой либы?
Меня заинтересовало создание своей CMS, неплохо бы так склепать свой сайт с использованием только одного барсика.

Примеров может быть сотни, как и сайтов в Интернете, я вот например, планирую сделать динамичную страничку по отображению файлов в конкретной директории на сервере и возможность их скачивания.

Сначала лучше потренироваться на отправке простого HTML, с небольшой динамичностью, потом — думать в сторону CMS, а это уже сложнее, ведь надо уметь работать с базой данных (не в файлах же хранить информацию) и уметь делать такие вещи, как прием данных от браузера (постинг сообщений, загрузка файлов), работа с профилями пользователей и т.д.
И самое приятно здесь в том, что никакой либы нет :).

BaCo, конечно же компилировать в консольные приложения Linux'а :).

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 09, 2010 6:10 pm 
Не в сети
профессор

Зарегистрирован: Чт авг 05, 2010 2:36 pm
Сообщений: 469
Откуда: Донецк
Благодарил (а): 47 раз.
Поблагодарили: 11 раз.
qpAHToMAS, я уже пробовал эксперементировать с отправкой html бродилке, все норм получается. А вот из бродилки из формы текст получить че то туговато.
PS. В код-архиве ненашел подобных кодов, а стандартными методами не интересно.

_________________
PureBasic 5.60 X86, RfoBasic 90, Tinycc 0.97, Asus K54C Intel i7 2.7 ghz, 8 gb ddr3, Intel HD 3000, Windows XP SP3, Windows 10 x64, Nexus 4 and v5.1.1.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 09, 2010 9:30 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2285
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Apokalipsis писал(а):
А вот из бродилки из формы текст получить че то туговато.

Пока этим не занимался, но попробуй на эту программу:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
If OpenConsole()
 output.s = "Content-type: text/html" + #CRLF$ + #CRLF$
 output + GetEnvironmentVariable("AUTH_TYPE") + #CRLF$
 output + GetEnvironmentVariable("CONTENT_FILE") + #CRLF$
 output + GetEnvironmentVariable("CONTENT_LENGTH") + #CRLF$
 output + GetEnvironmentVariable("CONTENT_TYPE") + #CRLF$
 output + GetEnvironmentVariable("OUTPUT_FILE") + #CRLF$
 output + GetEnvironmentVariable("PATH_INFO") + #CRLF$
 output + GetEnvironmentVariable("PATH_TRANSLATED") + #CRLF$
 output + GetEnvironmentVariable("QUERY_STRING") + #CRLF$
 output + GetEnvironmentVariable("REMOTE_ADDR") + #CRLF$
 output + GetEnvironmentVariable("REMOTE_HOST") + #CRLF$
 output + GetEnvironmentVariable("REQUEST_METHOD") + #CRLF$
 output + GetEnvironmentVariable("REQUEST_LINE") + #CRLF$
 output + GetEnvironmentVariable("SCRIPT_NAME") + #CRLF$
 
 WriteConsoleData(@output, Len(output))
EndIf


Отправлять запрос из какой-нибудь формы. По идеи где-нибудь должен вывестись отправляемый текст.

А вообще параметры передаются в URL:
Цитата:
http://localhost/file.exe?variable=value

Но наверное у такого метода есть ограничения по длине строки.

Вообщем надо читать уроки на сайте, что я выложил выше.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 12, 2010 5:45 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2285
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Собственно по поводу передачи данных "PureBasic серверу", необходимо читать "QUERY_STRING" системную переменную:
Код:
1
GetEnvironmentVariable("QUERY_STRING")


Она будет содержать текущую строку GET запроса.

Например, такая HTML форма:
Изображение
Код:
1
2
3
4
5
6
7
<form name="pbform", method="get" action="pb.exe">
Ваше имя:<br>
<input maxlength="32" name="nickname" type="text"></input><br>
Ваш комментарий:<br>
<textarea name="comment" cols="40" rows="3"></textarea><br>
<input type="submit" value="Отправить">
</form>


В заполненном виде отобразиться в "QUERY_STRING" так:
Цитата:
nickname=%CC%EE%E5+%E8%EC%FF&comment=%CC%EE%E9+%EA%EE%EC%EC%E5%ED%F2%E0%F0%E8%E9

После замены символа "+" на пробел:
Код:
1
ReplaceString(query_string, "+", " ")


И декодирования URL:
Код:
1
URLDecoder(query_string)


Строка приобретет свой оригинальный вид:
Цитата:
nickname=Мое имя&comment=Мой комментарий

Осталось ее только разобрать для последующего использования.

Код, для преобразования GET строки в оригинальный вид и его отображения:
Код:
1
2
3
4
5
6
7
8
9
If OpenConsole()
  output.s = "Content-type: text/html" + #CRLF$ + #CRLF$
 
  query_string.s = GetEnvironmentVariable("QUERY_STRING")
  query_string = ReplaceString(query_string, "+", " ")
  output + URLDecoder(query_string)
 
  WriteConsoleData(@output, Len(output))
EndIf


Обратите внимание на "action="pb.exe"" в HTML коде, там необходимо указать адрес до программы на сервере. В данном случае программа "pb.exe" лежит рядом с HTML файлом в корневом каталоге (http://localhost/pb.exe).

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 12, 2010 10:29 pm 
Не в сети
док

Зарегистрирован: Вс май 02, 2010 4:54 pm
Сообщений: 117
Откуда: оттуда...
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Цитата:
Для выполнения CGI программ, Apache необходимо чуть-чуть настроить, в файле "...\conf\httpd.conf"


А если написать в суппорт народец.ру и попросить "добавить две строки в файле httpd.conf", как думаешь, сразу пошлют подальше или просто, как всегда, проигнорят? :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 12, 2010 11:04 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2285
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Sp01LeR, думаю оба варианта сразу :).
Наверное запускать левые приложения позволит только серьезный хостинг.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 13, 2010 3:44 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн ноя 27, 2006 2:43 pm
Сообщений: 932
Откуда: Санкт-Петербург
Благодарил (а): 1 раз.
Поблагодарили: 12 раз.
Пункты репутации: 15
Существуют бесплатные хостинги с поддержкой cgi, я правда таковыми не пользовался, но если интересно - потестируй их, например:

wallst.ru
webservis.ru

набери в яндексе "бесплатный хостинг с cgi" и он выдаст еще много чего


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 13, 2010 6:57 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2285
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
У обоих хостингов требования для CGI скриптов:
Код:
1
*.cgi *.pl


Создать файлы таких форматов через PB невозможно :(.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 14, 2010 7:15 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт фев 26, 2009 1:53 am
Сообщений: 1154
Откуда: Беларусь, Витебск
Благодарил (а): 22 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Не знаю, как называется этот сервис, коллега рассказывал. Ты покупаешь траффик для сервера, домен, регистрируешь ДНС, прыгаешь с бубном, и можешь использовать в качестве серва свою машину и запускать на ней что угодно. По такой схеме, как я понимаю, работают все левые серваки пиратских он-лайн игр. ИМХО, запускать "у себя" в дата-центре неизвестные приложения никто не позволит - это огромная дыра в безопасности.

_________________
Ubuntu 10.10, PureBasic 4.61 x86
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 14, 2010 1:07 pm 
Не в сети
профессор

Зарегистрирован: Чт авг 05, 2010 2:36 pm
Сообщений: 469
Откуда: Донецк
Благодарил (а): 47 раз.
Поблагодарили: 11 раз.
qpAHToMAS, а можно копию нескольких строчек из вашего httpd.conf?
Че то не могу запустить примеры программ...
Вроде бы все нормально настроил, пришлось поставить отдельно апача без денвера, сам файл отображается на странице как линк, но запуска содержимого не происходит...
Может я не там прописал две строки что вы указывали в первом сообщении...

_________________
PureBasic 5.60 X86, RfoBasic 90, Tinycc 0.97, Asus K54C Intel i7 2.7 ghz, 8 gb ddr3, Intel HD 3000, Windows XP SP3, Windows 10 x64, Nexus 4 and v5.1.1.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 14, 2010 3:11 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2285
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Apokalipsis, вот мой "httpd.conf" файл.
Только надо изменить "D:/apache" строку на тот адрес, где стоит Apache (главный каталог, в котором "htdocs" и прочее).
CGI скрипты выполняются в "htdocs" (http://localhost), ну и по идеи в "cgi-bin" (http://localhost/cgi-bin).

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB