LINUX.ORG.RU

функция для парсинга POST

 ,


0

2

Друзья, подскажите. В скрипт отправляется POST запрос с двумя параметрами. Пишу функцию:

POST_ () {
    if [ $# -eq 1 ]; then	
	head -n 1 /dev/stdin | sed 's/&/\n/g' | grep -w "$1" | cut -d= -f2
	return 0
    else
	return 1
    fi
}
Т.е. при вызове
POST_ data1
получаю нужный параметр. А POST_ data2 соответственно голый, т.к. stdin читается один раз. Так вот, без промежуточных файлов можно ли обработать два параметра? С GET всё ясно, переменная $QUERY_STRING после запроса доступна для вызова много раз. С POST туплю чё-то)

Deleted

Последнее исправление: medossa (всего исправлений: 2)
Ответ на: комментарий от legolegs

Угу, заморочился сделать небольшую cms для своих нужд. Ну и для общего развития. А ещё я терпеть не могу питон, пхп и руби))) Поэтому bash, нравится он мне. В общем по сабжу, тупо сохранил stdin в переменную перед объявлением функции POST_. Всё норм.

Deleted
()

Так и не понял что ты хочешь... но можно же в функцию передавать сразу два параметра. А если в разное время передаются, то функцию в цикле вызывать...

art_metr
()
Ответ на: комментарий от art_metr

Параметр парсится один. Есть, к примеру, строка data1=ssss&data2=vvvv. Сохраняем в переменную, парсим. Про цикл не вкурил, но думаю, что с stdin без промежуточной переменной ничего не выйдет)...

Deleted
()

Вообще правильнее в один проход кушать stdin и раскидывать по переменным, а по возможности и сразу обрабатывать по существу. А процедурно можно и на перле/питоне/сишечке написать, проще будет.

legolegs ★★★★★
()
Ответ на: комментарий от Deleted

а он парсится совсем по-другому: там параметры передаются не одной строкой, а несколькими, причем разделителем бывает строка boundary, которую браузер передает вместе с параметром content-type. В общем формат примерно следующий:

------WebKitFormBoundarys6ApTpAvy8bi0fJ2
Content-Disposition: form-data; name="textinput"

some text
------WebKitFormBoundarys6ApTpAvy8bi0fJ2
Content-Disposition: form-data; name="send_button"

send
------WebKitFormBoundarys6ApTpAvy8bi0fJ2--

r0ck3r ★★★★★
()
Ответ на: комментарий от beastie

Это мягко сказано. Вот если бинарные данные понадобится обработать, например, файлы, так вообще красота будет. Я недавно на Java веб-сервер just for fun писал, так наспотыкался об это что аж вспоминать больно)

r0ck3r ★★★★★
()
Ответ на: комментарий от r0ck3r

Ну на выходе, всё равно текст парсить, поэтому пока (возможно именно пока) проблем не вижу.

Спасибо, только хотел кулибину напомнить, что всё не так просто будет.

а кому сейчас легко?))

Deleted
()
Ответ на: комментарий от linuhs_user

а то баш это дико совсем

Почему?

*Написанное* — дико, да. Только это не Баш, это какая-то макаронина из нескольких программ.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Ну можно же облегчить себе задачу выбрав языки с библиотеками и возможностями. И быстрее будет.

linuhs_user
()
Ответ на: комментарий от entemophyllon

Ну можно же облегчить себе задачу выбрав языки с библиотеками и возможностями. И быстрее будет.

Конечно можно.

делать это на баше неразумно

зато интересно)

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.