Forum Webscript.Ru

Программирование => Perl => Тема начата: glebushka от 05 Апреля 2002, 03:17:42

Название: Ещё один "интересный" кусочек кода...
Отправлено: glebushka от 05 Апреля 2002, 03:17:42
Вот кусочек кода:
if ($ENV{"REQUEST_METHOD"} eq "POST") {
$ct = $ENV{"CONTENT_TYPE"};
$cl = $ENV{"CONTENT_LENGTH"};
# check the content-type for validity
if($ct ne "application/x-www-form-urlencoded")
  {
  printf "I don\'t understand content-type: %s\\n", $ct;
  exit 1;
  }
# put the data into a variable
read(STDIN, $qs, $cl);
} else {
# put the QUERY_STRING into a variable
$qs = $ENV{\'QUERY_STRING\'};
}

# split it up into an array by the \'&\' character
@qs = split(/&/,$qs);
#
for($i = 0;$i <= $#qs; $i++)
  {
  # convert the plus chars to spaces
  $qs[$i] =~ s/\\+/ /g;
  # convert the hex characters
  $qs[$i] =~ s/%(..)/pack("c",hex($1))/ge;
  # split each one into name and value
  ($name, $value) = split(/=/,$qs[$i],2);
  # create the associative element
  $qs{$name} = $value;
  }
Чтобы это могло значить практически в самом начале скрипта?
Самое интересное, что когда я его вырезал, на работе скрипта это не сказалось, или это мне только так кажется?
Название: Получение параметров в cgi скрипте
Отправлено: Chs от 05 Апреля 2002, 09:27:45
Это разбор параметров "вручную" и несколько кривоватый причем.
То же самое, но более "прямо":

use CGI qw(:cgi-lib);
my %qs;
&ReadParse(\\%qs);
Название: Получение параметров в cgi скрипте
Отправлено: glebushka от 05 Апреля 2002, 11:27:39
А зачем это нужно? Не понимаю? объясни?
Я конечно всатвил твои три строчки в начало скрипта...
Как работало, так и работает...
Название: Получение параметров в cgi скрипте
Отправлено: Chs от 05 Апреля 2002, 11:48:57
Цитировать
А зачем это нужно? Не понимаю? объясни?

А зачем скрипту нужны параметры, передаваемые из формы? :)))
Некоторые привыкли, что параметры в хеш.:))
Название: Получение параметров в cgi скрипте
Отправлено: glebushka от 05 Апреля 2002, 11:55:25
А почему скрипт без этих строчек работает?
Название: Получение параметров в cgi скрипте
Отправлено: glebushka от 05 Апреля 2002, 11:58:43
Вот код скрипта:
use CGI qw(:cgi-lib);
my %qs;
&ReadParse(\\%qs);

use CGI qw(:standard);
$mycgi=new CGI;
if(!$mycgi->param){
Ну и т.д.
Что характерно, параметры скрипт получает и без первых трёх строчек:).
Или это альтернативный вариант?
Тогда как я буду получать параметры по "твоёму" способу?
Название: Получение параметров в cgi скрипте
Отправлено: Chs от 05 Апреля 2002, 12:46:48
Цитировать
Что характерно, параметры скрипт получает и без первых трёх строчек.

Естественно, один param я уже увидел, но зачем так криво писать - не понимаю.:)
Название: Получение параметров в cgi скрипте
Отправлено: glebushka от 05 Апреля 2002, 12:51:43
А как надо, скажи, плиз, буду учиться...
Как получить параметры, после первых трё строчек?
Название: Получение параметров в cgi скрипте
Отправлено: Chs от 05 Апреля 2002, 13:34:51
Цитировать
Как получить параметры, после первых трё строчек?

Они уже получены и находяться с хеше.:))
Теперь с ними только работать.
Название: Получение параметров в cgi скрипте
Отправлено: glebushka от 05 Апреля 2002, 21:56:05
Цитировать
Теперь с ними только работать.

Мона примерчик для особо тупых?
Название: Получение параметров в cgi скрипте
Отправлено: Chs от 05 Апреля 2002, 22:06:54
Цитировать
Мона примерчик для особо тупых?


use CGI qw(:cgi-lib);
my %in;
&ReadParse(\\%in);

my $param1 = $in{\'param1\'};

print "Content-type: text/plain\\n\\n";
foreach (keys %in)
{
    print "$_=$in{$_}\\n";
}
Название: Получение параметров в cgi скрипте
Отправлено: Green Kakadu от 06 Апреля 2002, 02:49:11
Цитировать
Естественно, один param я уже увидел, но зачем так криво писать - не понимаю.

для повышения живучести ;)

2glebushka если ты посмотришь FAQ Chs то там есть ссылки на книжки разные.. Учиться на плохих примерах ИМХО неразумно.