Автор Тема: Массив из формы в скрипт  (Прочитано 8458 раз)

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

Оффлайн PaulB

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массив из формы в скрипт
« : 16 Декабря 2001, 23:30:15 »
Передать массив из формы в скрипт - передаю.
Как мне его там заюзать? В РНР несложно - получил и использую $maillist[]. А как на перле?

Оффлайн PaulB

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
В догонку
« Ответ #1 : 16 Декабря 2001, 23:33:40 »
Если можно, пишите мылом, а то в инете я не всегда, а почту забираю регулярно...

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Массив из формы в скрипт
« Ответ #2 : 17 Декабря 2001, 11:46:13 »
мыло ушло...
The documentations is your friend

Оффлайн PaulB

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массив из формы в скрипт
« Ответ #3 : 17 Декабря 2001, 12:55:26 »
Это я уже читал. Как массив внутри скрипта использовать я знаю. Мне нужно знать, как принять его для обработки в скрипт.  Вот кусок кода, который формирует форму с массивом: for ($i=0; $i<=$count-1; $i++){($mail,$name,$city,$phone) = split(/\\::/, $allmail[$i]);
print "$name - $mail - $city
\\n";}. Т.е. в массив заносятся номера выбранных email адресов, делаю сабмит. Теперь, как мне эти данные поиметь?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Массив из формы в скрипт
« Ответ #4 : 17 Декабря 2001, 13:29:39 »
Цитировать
Мне нужно знать, как принять его для обработки в скрипт.

То есть ты не можешь принять данные из формы в скрипт?
The documentations is your friend

Оффлайн PaulB

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массив из формы в скрипт
« Ответ #5 : 17 Декабря 2001, 13:39:37 »
Да.
Код извлекаю вот этим:
if ($ENV{\'REQUEST_METHOD\'} eq "POST")
{
read(STDIN, $bufer, $ENV{\'CONTENT_LENGTH\'});
}
else
{
$bufer=$ENV{\'QUERY_STRING\'};
}
#End -------------------------

# Decode data ----------------
@pairs = split(/&/, $bufer);
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;
$FORM{$name} = $value;
}

Обращаюсь так: @mails=$FORM{\'mails[]\'}, но выдается только последнее значение из массива.
В чем проблемы могут быть?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Массив из формы в скрипт
« Ответ #6 : 17 Декабря 2001, 13:54:50 »
RTFM однозначно!
Как думаешь, что делает эта строка?
$FORM{$name} = $value;
Это, друг, хэш, с ключем $name и значением $value. Так и используй его, не трогай масив.
The documentations is your friend

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Массив из формы в скрипт
« Ответ #7 : 17 Декабря 2001, 14:00:18 »
Если хочешь поместить значения хеша в масив-
@array=%FORM;
после этого у тебя в масиве будут и ключи (нечетные значения ака $array[1]...) и значения (соответственно четные $array[2]...)
А вообще вариантов реализации-море...
The documentations is your friend

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
ему нужны ключи
« Ответ #8 : 17 Декабря 2001, 14:16:20 »
Судя по форме, которую он создает, ему нужны майлы, т.е. ключи,
т.е. :
@mails= keys %FORM;
И все.
 в исканиях.

Оффлайн PaulB

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массив из формы в скрипт
« Ответ #9 : 17 Декабря 2001, 14:26:06 »
Ребята, я в Перле новичек. Не могли бы Вы поподробнее.
Как реально можно использовать это?
Если можно, пример, плз.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Массив из формы в скрипт
« Ответ #10 : 17 Декабря 2001, 14:34:14 »
дык уже написали...
Вот что у тебя разбирает форму:
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;
$FORM{$name} = $value;
}
все это дело помещается в хэш %FORM
а далее как говорит Green Kakadu только ключи в масив
@mails= keys %FORM; (масив содержит только ключи хэша, то есть мейлы)

 или все скопом в
@mails=%FORM; (масив содержит и ключи и значения хэша)

а дальше работай с масивом...
The documentations is your friend

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
а что надо?
« Ответ #11 : 17 Декабря 2001, 14:38:50 »
Цитировать
Как реально можно использовать это?

А что надо.
Вот получил ты массив с мейлами ну и чего еще надо?
Может тогда аналог на php приведешь (раз ты аналогию в начале провел) и тогда мы поймем что требуется

Например,
@mails= keys %FORM;

дает тебе массив из майлов, т.е. элементы:
$mails[1]="первый мейл",
$mails[2]="второй мейл",
и т.д.
 в исканиях.

Оффлайн PaulB

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массив из формы в скрипт
« Ответ #12 : 17 Декабря 2001, 14:55:04 »
На РНР:
for ($i=0; $i<=$count-1; $i++){($mail,$name,$city,$phone) = split(/\\::/, $allmail[$i]);
print "$name - $mail - $city
\\n";}
строчка аналогичная.
Обращаюсь в скрипте вот именно так, как и писали:
$mails[1]="первый мейл"
$mails[2]="второй мейл"

А здесь, выдает только последнее значение.
Еще один нюанс. Кроме массива mails[], передаются еще поля, action, например. Как тогда быть. В хеше есть два ключа: mails[] и action.

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
все что в форме
« Ответ #13 : 17 Декабря 2001, 15:07:11 »
угу, да мы про другие поля как-то того, забыли.
Тогда чтоб у тебя были чисто майлы можно написать так:

@mails=grep(/\\S+@\\S+/, keys %FORM);
Если есть особое желание, то можно майлы проверить и поусердней, вместо /\\S+@\\S+/ вписать например такое:
/(\\w\\d-)+@(\\w\\d-\\.)+\\w{2,4}/
ну если есть подозрения ,что твои майлы в форме могут попортить (там же ничего не стоит заменить на иные значения)
 в исканиях.

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Есть мысль:
« Ответ #14 : 17 Декабря 2001, 15:17:20 »
Цитировать
"$name


;) mails[] - это же не один просто майл, а их кучка, так?
как оно выглядит?
или это $mails[$i]?
 в исканиях.

 

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