|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexey Gradovtsev 2:5030/1247.7 28 Dec 2001 17:44:13 To : Ruslan Bondarev Subject : CGI.pm: POST отделить от GET -------------------------------------------------------------------------------- Ruslan Bondarev в письме к Alexey Gradovtsev от 27 декабря 2001 г., 20:24 писал: AG>> value=1>>> <input type=checkbox name=id2 value=2> RB>>> Hе самое элегантное решение. AG>> Это как сказать. Я вот считаю, что разные переменные и имена должны AG>> иметь разные. А несколько чекбоксов - это по сути и есть разные RB> Hиразу. Есть форма, в которой выведен список id каких-то записей. Это RB> не разные переменные -- это массив переменных. Что, собственно, и делается RB> через @ids = $q->param('id'). Потом весьма легко из этого сделать, RB> например, $dbh->do('DELETE FROM records WHERE id IN ('.join(',', RB> @ids).')', undef, undef); RB> А как это будет решаться в твоем случае ты и сам прекрасно понимаешь. Да, именно такие моменты я и имел в виду, когда говорил про неудобство моего случая. И написал (а ты поправил) решение, которое подходит для них. Как бы то ни было, а иногда (хотя не всегда, согласен) я все же предпочту называть чекбоксы разными именами. AG>> foreach $pair (@pairs) { AG>> ($name, $value) = split(/=/, $pair); $value =~tr/+//; AG>> $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; AG>> eval('push(@'."$name, $value)"); } RB> Мда. С эвалированием ты это хорошо придумал. А что, push RB> @{$FORM{$name}}, $value -- некошерно? Ты хотел сказать, push @{$name}, $value; Да, мне это в голову не пришло ;) А от какого слова "кошерно"? RB>>> Что по поводу REDIRECT_QUERY_STRING? AG>> Hе знаю ;) А кто это такой и куда REDIRECT? RB> -2 (rtfm) Да, так я и спрашиваю, какой именно fm читать? 'This' fm - он большой ;) RB>>> А что у нас по поводу кеширования результатов запроса? RB> -2.5 Кеширование введенных пользователем данных, то есть запись в файл RB> и чтение из файла, для дальнейшего использования в работе других скриптом, RB> например. А, вот это правда удобно. Хотя эту проблему сам я решил, конечно же. RB>>> А можно ли в данном решении протестировать скрипт, введя данные с RB>>> командной строки? AG>> Видимо, переписывать придется... А cgi.pm позволяет и метод post AG>> оттестировать из командной строки? RB> -3.5 Да. Даже мультипарт. Только заколебаешься вводить. (о: Ок. А оно нам нада? (Я про строку, а не про мультипарт) RB>>> А можно ли прочитать параметры из QUERY_STRING, в случае использования RB>>> POST? AG>> Hе только можно, но и очень легко отследить, откуда они пришли: из AG>> строки запроса или из STDIN. RB> -3 Да? А как насчет $FORM{$name}? Если названия переменных одинаковые? Ты не понял. Я имел в виду, что этот кусок: if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; } else { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } - позволяет при необходимости легко отделить переменные, пришедшие из строки запроса, от переменных, пришедших в буфер. Тут же до меня обсуждалось, что CGI этого не умеет. Я согласен, что данные лучше передавать только одним путем, но раз уж ты спросил... Так что -2.5, хотя это и не меняет общей картины. RB>>> О, кстати, а обеспечивает ли этот вариант нас возможностью RB>>> видеть ошибки в окне броузера ('fatalsToBrowser')? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AG>> специально выводить $errstr. В общем, проблем, вроде, с этим быть не AG>> должно. RB> -4 perldoc CGI::Carp -- там намного больше возможностей, чем просто RB> выдача ошибки в окно броузера. Ты же сам так вопрос поставил. Hо в принципе учту. RB> ps: Hе переживай, год назад я тут тоже поносил CGI.pm. (о; Так я же и не поношу, а просто собираю информацию из вторичных источников ;) Поносить буду что-нить, когда соберу эту информацию. Т.е. когда вырасту такой же большой и умный, как тов. Чуприна. Hе могу понять, как вообще можно так все обо всем знать, как он. Артем, не расскажешь? ;)) 28 декабря 2001 г. С наибестейшими регардсами, *Alexey*. ... Live for the present, dream of the future, learn from the past. Anonimo. --- GoldED+/W32 snapshot-2001.02.24 * Origin: Зачем мне Windows? Мне пасьянс поставьте! (2:5030/1247.7) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/39613c2c772f.html, оценка из 5, голосов 10
|