Автор Тема: Почему через Post не передаются данные, вернее они там есть но их выдрать нельзя  (Прочитано 6242 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн EroX

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Почему через Post не передаются данные, вернее они там есть но их выдрать нельзя (т.е. вывожу что в STDIN... все переменные есть... правда не & и = там... а какието другие символы....

Обычная расшифровка происходит (декодинг)... но ни одна переменная не извлекается... хотя через Get все нормально работает...(вот только не подходит мне Get данных надо уж очень много передавать)....

Чего не так ... может все таки какието ограничения есть на ПОСТ или чтото подобное........

Хелп попмогите!!!!!!!!!!

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
EroX:
Обычная расшифровка происходит (декодинг)...
Что значит обычная? Рукописная, чтоль? Типа
my @pairs = split(/$boundary/, $buffer);
foreach (@pairs){
my ($name, $value) = split(/=/, $_);
$value =~ tr/+/ /;
Если да, то это только для гета и подходит, т.к. ПОСТом переданные данные оформлены по другому... Слегка :)

Рекомендую, не забивай себе голову всякими рукописными парсерами для разбора форм, особенно если не знаешь точно как они работают. А пользуй, мил друг, модуль CGI.pm . Ну например таким образом:

use CGI qw( param );
$name_from_form=param(\'name_from_form\');

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

Оффлайн EroX

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Да именно старым методом декодировать....
То что там другие данные эт я уже расмотрел :)))

А вот как с помощью CGI.pm это сделать так и не понял... нашел я тут один прелдок по этому модулю... а там почти ничего и не написанно... так в кратце чтото...
Не подскажеш где взять на него документацию.........

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
EroX:
как с помощью CGI.pm это сделать так и не понял
пишу же
Цитировать
Mog.:
use CGI qw( param );
$name_from_form=param(\'name_from_form\');
Чего проще?

Цитировать
EroX:
где взять на него документацию

perldoc CGI
по моему достаточно
Все болезни от нервов, только сифилис от удовольствия

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
IMHO проще так...

$buffer = $ENV{\'QUERY_STRING\'};
if ($ENV{\'REQUEST_METHOD\'} eq "POST") {read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'})}

и не морочить голову с CGI, смысл использовать этот модуль только для получения переменных окружения???

P.S. Это продолжение кода...

 @pairs = split(/&/, $buffer);
 foreach $pair (@pairs) {
  ($name, $value) = split(/=/, $pair);
  $name =~ tr/+/ /;
  $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s//
/g;
  $value =~ s/  $value =~ s/>/>/g;
  $value =~ s/\\cM/
/g;
  $value =~ s/\\n/ /g;
  $value =~ s/\\|/ /g;
  $value =~ s/\\|/ /g;
  $value =~ s/<([^>]|\\n)*>/
/g;
  $FORM{$name} = $value;
 }

Я использую этот код как стандартную функцию, и ни разу не подводила... и GET и POST нормально работает... правда HTML код перекрывает, но по большей части оно так и нужно...

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Цитировать
Phoinix:
и не морочить голову с CGI, смысл использовать этот модуль только для получения переменных окружения

...так вот для чего он нужен :)))
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Цитировать
Wyclef:
нашел я тут один прелдок по этому модулю... а там почти ничего и не написанно...

Как сказал Mog. вполне достаточно выполнить "perldoc CGI", можно даже "perldoc CGI > CGI.txt" и pod2html тоже никто не отменял, просто выдели немного времени и почитай внимательно и будет тебе щасте. ;)
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн Yaroslav

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 323
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
Wyclef:
А пользуй, мил друг, модуль CGI.pm

вот уже какой раз я такое слышу, но вот что это такое так и не в курил..)))
с Перлом (хоть я и его не знаю тоже) вроде как попроще, но все же, был хоть какой то текст на русском, по которому хоть что то научился делать....
может и для этого CGI.pm такой где то найдется?
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили \"Титаник\".

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
Phoinix:
смысл использовать этот модуль только для получения переменных окружения???
Где это ты там видел переменные окружения?
Цитировать
Phoinix:
и GET и POST нормально работает
А когда ты файлы передаешь через форму ? Каким парсером ты пользуешся ? (Тут я лукавлю, ибо сам то для этого пользуюсь рукописным :) )

Цитировать
Phoinix:
IMHO проще так...
ИМХО, если понимаешь как это работает.
Цитировать
Wyclef:
...так вот для чего он нужен ))
кожаный хвост :)
Цитировать
Yaroslav:
вот уже какой раз я такое слышу, но вот что это такое так и не в курил..)))
Курить вредно (говорят)
Цитировать
Yaroslav:
с Перлом (хоть я и его не знаю тоже) вроде как попроще
Без комментариев :)
Цитировать
Yaroslav:
какой то текст на русском
Млин, да там на английском текст такой, что проще не бывает + примеры тут же . Это про перлдок я.
Все болезни от нервов, только сифилис от удовольствия

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Цитировать
Mog.
А когда ты файлы передаешь через форму ? Каким парсером ты пользуешся ? (Тут я лукавлю, ибо сам то для этого пользуюсь рукописным  )

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

Цитировать
Mog.
Где это ты там видел переменные окружения?

Тогда я что-то не понимаю... а что же тогда это?
$ENV{\'QUERY_STRING\'}; если не переменная окужения? :-))

Цитировать
Mog.
ИМХО, если понимаешь как это работает

Может будем без условностей???

Оффлайн EroX

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вот все говорят... типа данные полученные методом POST такие же как и GET.......... ага не тут то было в том то и дело... они не с помощью & и = кодируються... а по другому... (вывод сделан припросмотре STDIN... они разделяются по типу (типа multipart и т.д) а также еще какаято строка лепится после ключа-значения (причем ключ взят в кавычки а значение разделено с ним переводом строки (могет быть возратом каретки))... которая изменяет после каждой новой отсылке из формы... (куча дуфисов и цифровой код какойто)... того сдандартным метотодом декодирования ничего не получается вытянуть........

Вот такая вот грусная история.........

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
В форме enctype=multypart/form-data? :)
2B OR NOT 2B = FF

Оффлайн EroX

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ага... именно это.........

Но вот я нашел как задать чтобы данные передавались обычным способом (разделители & и =)

Content-Type: application/x-www-form-urlencoded надобно задать в форме.......

Правда еще не попробывал но дума на 99% что это заставит эго разбивать данные именно через & и =

Оффлайн EroX

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ого обшибочек сколько и глупо сформулированных фраз....... уж извените..... писал на радостях что кажется нашел решение проблемы......:D

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
EroX, ты эта, не горячись :)

Цитировать
EroX:
Content-Type: application/x-www-form-urlencoded
Это значение по умолчании, т.е. когда ты вообще про формат данных не упоминаешь в форме (вроде)

Цитировать
EroX:
через & и =
"&" и "=" при ПОСТе присутствует, т.к. "name=value&name2=value2 и т.д." и от этого никуда не денешся.
При enctype=multypart/form-data данные в теле запроса разделены разделителем
Цитировать
EroX:
(куча дуфисов и цифровой код какойто)...
Вот это он и есть
Все болезни от нервов, только сифилис от удовольствия

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28