|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Ruslan Bondarev 2:463/94.12 27 Dec 2001 21:24:20 To : Alexey Gradovtsev Subject : Re: CGI.pm: POST отделить от GET -------------------------------------------------------------------------------- Четверг Декабрь 27 2001 15:39, Alexey Gradovtsev -> Ruslan Bondarev: AG>> value=1>> <input type=checkbox name=id2 value=2> RB>> Hе самое элегантное решение. AG> Это как сказать. Я вот считаю, что разные переменные и имена должны AG> иметь разные. А несколько чекбоксов - это по сути и есть разные AG> переменные. Hиразу. Есть форма, в которой выведен список id каких-то записей. Это не разные переменные -- это массив переменных. Что, собственно, и делается через @ids = $q->param('id'). Потом весьма легко из этого сделать, например, $dbh->do('DELETE FROM records WHERE id IN ('.join(',', @ids).')', undef, undef); А как это будет решаться в твоем случае ты и сам прекрасно понимаешь. AG> ЭТОТ - не поможет, но только потому, что мне был не нужен select AG> multiple. А был бы нужен - вот что в голову сразу приходит: foreach AG> $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ AG> /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", AG> hex($1))/eg; eval('push(@'."$name, $value)"); } Мда. С эвалированием ты это хорошо придумал. А что, push @{$FORM{$name}}, $value -- некошерно? AG> Hе знаю. Видимо, никак, раз ты спрашиваешь. -1 RB>> Что по поводу REDIRECT_QUERY_STRING? AG> Hе знаю ;) А кто это такой и куда REDIRECT? -2 (rtfm) RB>> А что у нас по поводу кеширования результатов запроса? AG> А кэширование - это разве задача скрипта, а не броузера/сервера? У AG> меня при работе на локальном http-сервере результаты кэшируются, а вот AG> на том апаче, который стоит на инет-сервере, - нет. -2.5 Кеширование введенных пользователем данных, то есть запись в файл и чтение из файла, для дальнейшего использования в работе других скриптом, например. RB>> А можно ли в данном решении протестировать скрипт, введя данные с RB>> командной строки? AG> Видимо, переписывать придется... А cgi.pm позволяет и метод post AG> оттестировать из командной строки? -3.5 Да. Даже мультипарт. Только заколебаешься вводить. (о: RB>> А можно ли прочитать параметры из QUERY_STRING, в случае RB>> использования POST? AG> Hе только можно, но и очень легко отследить, откуда они пришли: из AG> строки запроса или из STDIN. -3 Да? А как насчет $FORM{$name}? Если названия переменных одинаковые? RB>> О, кстати, а обеспечивает ли этот вариант нас возможностью видеть RB>> ошибки в окне броузера ('fatalsToBrowser')? AG> А вот это разве не от сервера зависит? Afaik, если сервер сам отдает AG> результат работы скрипта, то ошибки в броузере появятся, иначе надо AG> специально выводить $errstr. В общем, проблем, вроде, с этим быть не AG> должно. -4 perldoc CGI::Carp -- там намного больше возможностей, чем просто выдача ошибки в окно броузера. RB>> В большинстве случаев лучше все-таки написать use CGI и RB>> избавить себя от лишнего геммороя. AG> В принципе, убедили. Да и так очевидно. 4 плюса за использование модуля и один сомнительный минус с хвостиком из-за размера файла CGI.pm и "мутного" разбора им мультипарта. ps: Hе переживай, год назад я тут тоже поносил CGI.pm. (о; ... bye. --- Медленно любила, пережевывая... * Origin: (2:463/94.12) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/27783c2b86f1.html, оценка из 5, голосов 10
|