On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Пост N: 8
Зарегистрирован: 03.02.12
ссылка на сообщение  Отправлено: 10.02.12 11:08. Заголовок: Harbour CGI


Помогите разобраться.
Пишу простое CGI приложение.
Читаю переменные окружения, которые передает сервер приложению - getenv(). Вывожу результат в outstd().
Если форма запроса по "GET" ( getenv("REQUEST_METHOD")=="GET" ) то все переменные читаю из getenv("QUERY_STRING").
А если по "POST", как прочитать переданные переменные?

Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 15 [только новые]


постоянный участник


Пост N: 724
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.02.12 11:41. Заголовок: Dazzler пишет: А ес..


Dazzler пишет:

 цитата:
А если по "POST", как прочитать переданные переменные?


Умные дядьки говорят, что через stdin, через клавиатуру типа... http://dayte2.com/get-post-methods

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 9
Зарегистрирован: 03.02.12
ссылка на сообщение  Отправлено: 10.02.12 12:32. Заголовок: Как это сделать? Как..


Как это сделать? Какими функциями можно прочитать?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 725
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.02.12 14:08. Заголовок: Буфер клавиатуры чит..


Буфер клавиатуры читается функцией Inkey()

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 10
Зарегистрирован: 03.02.12
ссылка на сообщение  Отправлено: 10.02.12 14:37. Заголовок: Понял как читается. ..


Понял как читается. fread() - возвращает данные. Главное чтобы первый параметр был 0 - ноль

n_buff= fread(0,@buff,len(buff))

возвратила в buff строку, длинной n_buff

Спасибо

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 726
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.02.12 14:52. Заголовок: Ну да... Стандартные..

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 11
Зарегистрирован: 03.02.12
ссылка на сообщение  Отправлено: 10.02.12 14:57. Заголовок: Я просто не знал как..


Я просто не знал как эти стандартные потоки можно было использовать.....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 727
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.02.12 15:15. Заголовок: Dazzler пишет: Я пр..


Dazzler пишет:

 цитата:
Я просто не знал как эти стандартные потоки можно было использовать.


Я тоже...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 8
Зарегистрирован: 09.11.06
ссылка на сообщение  Отправлено: 17.06.18 18:14. Заголовок: Не читает все данные из потока


Пробую передать файл на сервер, принимающий скрипт на сервере:

function main() 
LOCAL nLen, cTemp, nRead
OUTSTD("Content-type: text/html" + hb_eol() + hb_eol())
IF "POST" $ UPPER( hb_GetEnv( "REQUEST_METHOD" ) )
nLen := VAL(hb_getenv("CONTENT_LENGTH"))
cTemp := SPACE( nLen )
IF ( nRead := FRead( 0, @cTemp, nLen )) != nLen
OUTSTD("<p>Post error read " + hb_ntos( nRead ) + " instead of " + hb_ntos( nLen ) + hb_eol() )
ELSE
OUTSTD("<p>Post string is: " , cTemp + hb_eol())
ENDIF
ENDIF
OUTSTD("</body></html>" + hb_eol())
RETURN NIL


Но из stdin почему-то читается ~70кб и все, т.е. если передавать больше, то получаю к примеру:
Post error read 71443 instead of 103746

Может кто подскажет куда копать.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5918
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.06.18 20:24. Заголовок: Gosha пишет: Пробую..


Gosha пишет:

 цитата:
Пробую передать файл на сервер, принимающий скрипт на сервере:


Это как ? Более подробней можно написать ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1439
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 17.06.18 20:40. Заголовок: Andrey пишет: Это к..


Andrey пишет:

 цитата:
Это как ? Более подробней можно написать ?


http://lectureswww.readthedocs.io/5.web.server/cgi.html

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 9
Зарегистрирован: 09.11.06
ссылка на сообщение  Отправлено: 17.06.18 22:04. Заголовок: Имеется html: <..


Имеется html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>File Upload</title>
</head>
<body>
<form action="/cgi-bin/upload_file.exe" method="post" enctype="multipart/form-data">
<p>Photo to Upload: <input type="file" name="photo" /></p>
<p><input type="submit" name="Submit" value="Submit Form" /></p>
</form>
</body>
</html>


Выбираем файл, загружаем на сервер методом POST.
Скрипт на стороне сервера из stdin читает содержимое. Если файл небольшой то все ОК, а если большой то из stdin читается только 70кб.
При использовании TIPCgi - та же ерунда получается.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1440
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 18.06.18 06:21. Заголовок: Gosha пишет: При ис..


Gosha пишет:

 цитата:
При использовании TIPCgi - та же ерунда получается


Так может дело в настройках сервера?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 10
Зарегистрирован: 09.11.06
ссылка на сообщение  Отправлено: 18.06.18 08:36. Заголовок: PSP пишет: Так може..


PSP пишет:

 цитата:
Так может дело в настройках сервера?


В начале тоже так подумал, но скрипт на Perl отрабатывает нормально.
Хочу еще уточнить: переменная cTemp на выходе имеет длину нормальную, равную "CONTENT_LENGTH", но вот ее содержимое заполнено данными только первые 70кб, переменная nRead также равна 70кб.


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3741
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.06.18 09:05. Заголовок: Чтение из stdin выпо..


Чтение из stdin выполняется с помощью winapi-функции ReadFile. Возможно, там есть какие-то особенности или ограничения, например, реакция на символ eof.
Попробуйте опростить FError/DosError, может быть там что-то будет.

Кстати, попробуйте выдавать fread в цикле, пока прочитанная длина строки не равна нулю, с конкатенацией прочитанных строк.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 11
Зарегистрирован: 09.11.06
ссылка на сообщение  Отправлено: 19.06.18 10:05. Заголовок: Pasha пишет: Кстати..


Pasha пишет:

 цитата:
Кстати, попробуйте выдавать fread в цикле, пока прочитанная длина строки не равна нулю, с конкатенацией прочитанных строк.



Да, помогло, последовательное чтение 1кб блоками.
Странно однако.
Благодарю.


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 590
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет