Автор Тема: я в шоке. CONTENT_LENGTH  (Прочитано 9221 раз)

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

Оффлайн teebot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« : 11 Июня 2003, 16:25:22 »
Доброе время суток.

использую в форме метод POST, в скрипте хочу получить данные через read(STDIN,$buffer,$ENV{CONTENT_LENGTH});

но $buffer всегда пустой.
Я перенес сайт с одного сервера на другой. И вот такая беда.

Куда смотреть даже не заваю.

Помогите кто чем сможет.
Спасибо.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #1 : 11 Июня 2003, 16:55:29 »
Выложи кусок скрипта где определяется $buffer и эта строчка.
« Последнее редактирование: 11 Июня 2003, 17:24:31 от NeoNox »
The documentations is your friend

Оффлайн teebot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #2 : 11 Июня 2003, 17:11:53 »
#!/usr/bin/perl

read(STDIN,$st,$ENV{\'CONTENT_LENGTH\'});
@pairs = split(/&/, $st);
 foreach $pair (@pairs)
    {
      ($name, $value) = split(/=/, $pair);
      $value =~ tr/+/ /;
      $value=~ s /%0D%0A/
/g;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(\'C\', hex($1))/eg;
      $FORM{$name} = $value;
  }
..................
на предидущем сервере это работало.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #3 : 11 Июня 2003, 17:28:20 »
Значит пора переходить тебе на модуль CGI
perldoc CGI;

use CGI qw(:standard);

my %FORM;
$FORM{fieldname} = param(fildname);

и далее...
The documentations is your friend

Оффлайн Yaroslav

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 323
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #4 : 11 Июня 2003, 17:29:20 »
эээээ а где - $buffer = $ENV{\'QUERY_STRING\'}; ?
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили \"Титаник\".

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #5 : 11 Июня 2003, 17:35:42 »
Yaroslav
эээээ а зачем он там нужен???
The documentations is your friend

Оффлайн Yaroslav

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 323
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #6 : 11 Июня 2003, 17:40:18 »
Цитировать
NeoNox:
эээээ а зачем он там нужен???

так вот же
Цитировать
teebot:
но $buffer всегда пустой.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили \"Титаник\".

Оффлайн teebot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #7 : 11 Июня 2003, 18:11:46 »
ну ладно не прикалывайтесь.
нам теперь $buffer не нужна на ее месте теперь $st.
Говорим $buffer подрозумеваем $st.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
я в шоке. CONTENT_LENGTH
« Ответ #8 : 11 Июня 2003, 19:26:42 »
teebot

Может проблема в HTML форме ???

Попробуй все-таки проверить через CGI передаются переменные или нет? Тем более это не так долго...

Оффлайн teebot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #9 : 12 Июня 2003, 10:33:58 »
Ну вот форма, вроде ничего особенного, к тому же на старом месте все работало (вот что меня сбивает с толку).


";

















Автор*:
Тема*:
E-Mail:
Сообщение*:



теги вроде все закрыты.

Оффлайн Yaroslav

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 323
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #10 : 12 Июня 2003, 11:40:02 »
тут много вопросов и надо все видеть что б понять, а вообще я только этой ночью написал скрипт похожий на тот что сейчас у тебя http://forums.webscript.ru/showthread.php?s=&threadid=12366&pagenumber=2  (правда не знаю что твой делать должен, но думаю тебе нет проблем исправить)
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили \"Титаник\".

Оффлайн teebot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #11 : 12 Июня 2003, 12:34:31 »
посмотрел, попробовал вставить if ($ENV{\'QUERY_STRING\'}) {$namevalues = $ENV{\'QUERY_STRING\'};}
else {read(STDIN, $namevalues, $ENV{\'CONTENT_LENGTH\'});}
 не помогло.

Вот мой заголовок запроса

POST http://путь/cgi-bin/nt.pl HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, application/pdf, */*
Referer: http://путь/cgi-bin/readtop.pl?dir=linux&page=0
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
Host: сервак
Content-Length: 48
Pragma: no-cache
Cookie: phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A2%3A%2288%22%3B%7D

aname=12&folderdir=linux&topik=2&email=&vopros=2


данные передаються. Значит с формой я так понял все классно.
почему же тогда $st всегда пустая.
Я уже интересовался насчет каких-то ограничений на хостинге, говорят что нет таких.
может есть еще какая нибудь переменная окружения гдежно выцепить передаваемые данные?

Оффлайн teebot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #12 : 12 Июня 2003, 12:39:47 »
посмотрел, попробовал вставить if ($ENV{\'QUERY_STRING\'}) {$namevalues = $ENV{\'QUERY_STRING\'};}
else {read(STDIN, $namevalues, $ENV{\'CONTENT_LENGTH\'});}
 не помогло.

Вот мой заголовок запроса

POST http://путь/cgi-bin/nt.pl HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, application/pdf, */*
Referer: http://путь/cgi-bin/readtop.pl?dir=linux&page=0
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
Host: сервак
Content-Length: 48
Pragma: no-cache
Cookie: phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A2%3A%2288%22%3B%7D

aname=12&folderdir=linux&topik=2&email=&vopros=2


данные передаються. Значит с формой я так понял все классно.
почему же тогда $st всегда пустая.
Я уже интересовался насчет каких-то ограничений на хостинге, говорят что нет таких.
может есть еще какая нибудь переменная окружения гдежно выцепить передаваемые данные?

Оффлайн NCRangeR

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 42
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.mephix.h1.ru
я в шоке. CONTENT_LENGTH
« Ответ #13 : 12 Июня 2003, 13:13:08 »
teebot
У меня такое уже было :(

Попробуй получать данные из POST в самом-самом-самом начале работы скрипта.

Некоторые встроенные функции типа "cookie" делают sysread до тебя, таким образом информация теряется.

Еще попробуй вместо просто sysread сделать вот так:

$PostContent = "";
while (sysread STDIN, $str, $ENV {"CONTENT_LENGTH"})
{
$PostContent .= $str;
};
- How does the CPAN work?
 - With dark magic, evil-looking sacrificial knives and scantily clad virgins under pale moonlight.

Оффлайн teebot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
я в шоке. CONTENT_LENGTH
« Ответ #14 : 12 Июня 2003, 13:45:42 »
ничего не изменилось.
пробовал вставить твой кусок.

а sysread  у мен я и так самой первой строчкой стоит,ну после #!/usr/bin/perl, розумеется.

 

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