Тема: Get&post
Показать сообщение отдельно
Старый 18.08.2004, 11:32
  № 1  
Fyn
Guest

Сообщений: n/a
Вопрос по передаче данных здесь уже много раз обсуждался.
Я обычно, в таких случаях как у тебя, пользуюсь следующим кодом:
Код:
%param = &comming();

sub comming {
	my $dl = $ENV{CONTENT_LENGTH};
	my $query = $ENV{QUERY_STRING};
	if ($dl >0) {
	  sysread(STDIN, $que, $dl);
	  if ($query) {
	    $query = $query.'&'.$que;
	  }
	  else {
	    $query = $que;
	  }
	}
	my @comm = split('&', $query);
	my %query = ();
	foreach (@comm) {
	  /([^=]+)=(.*)/ && do {
	    local ($field, $value) = ($1, $2);
	    $query{$field} = &decode($value);
	  }
	}
	return %query;
}

sub decode {
	my($val)=@_;
	$val=~s/\+/ /g;
	$val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge;
	return $val;
}
После чего получаем хэш %param ...

А дальше совсем просто:
Код:
foreach $key (keys %param) {
	$value = $param{$key};
	print "$key => $value";
}
Работает как через GET так и через Post или при одновременной передаче данных через GET и POST.
Ещё ни разу не подводил...


Последний раз редактировалось Fyn; 18.08.2004 в 11:33.