Автор Тема: Декодирование формы: Знаки "+" и "=". КАК?  (Прочитано 8580 раз)

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

Оффлайн AntiChrist

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.all.biz.ua
При декодировании использую стандартную функцию Parseform из литературы. В ней плюсы заменяются пробелами а по знаку равно идет разбивка на пары ключ=значение. Конечно при это если вводишь + или = в форме они глючат.
Модули CGI и HTML мне не понравились, да и вообще хоцца свою функцию юзать а не подключать модуль ради нее одной.
Подскажите кто знает плиз.
----
Вся Украина - Бизнес портал

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #1 : 03 Марта 2004, 10:36:13 »
perldoc CGI

Hint: use CGI qw(param);
2B OR NOT 2B = FF

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #2 : 03 Марта 2004, 11:20:49 »
Цитировать
AntiChrist:
стандартную функцию Parseform из литературы

плакал
Цитировать
AntiChrist:
Модули CGI и HTML мне не понравились

да что вы говорите?
а можно узнать почему?
Значит \'стандартную функцию\' из литературы нормально а модули которыми весь мир пользуется религия не позволяет?

И как любителю изобретать велосипеды, предложу тебе посмотреть как устроен модуль CGI и в частности функции escape и unescape. Это решает твою проблему с плюсиками, равно и другой нечистью.
The documentations is your friend

Оффлайн AntiChrist

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.all.biz.ua
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #3 : 04 Марта 2004, 03:55:33 »
Блин! Ну почему Web программисты все такие злюки :(
С программы нужно было регистрацию снять - залез на
-- == MADALF HACK TEAM == --прочитал факу, спросил - все ясно понятно обьяснили...
А здесь на все один ответ - перлдок :( А он огромный шо писец...
И везде ссылки на тысячи других разделов :(
Кстати как под вынью запустить перлдок по нужной команде (я все через хтмл читаю)

Насчет CGI - не знаю кому как но мне гораздо читабельнее
%Form чем выкрутасы с парам и стрелочками... или print "Content-type..." запоминать все варианты применения модулей мне лень, проще самому свои функции писать.....
А вообще это дело вкуса, имхо.... многие мануалы написаны без CGI.pm значит кто-то и так пользуется....
Да и не вижу я в нем удобства....
Мне бы вот только плюсики научиться передавать :)
----
Вся Украина - Бизнес портал

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #4 : 04 Марта 2004, 09:23:25 »
Так....закругляемся.
perldoc входит в стандартную поставку перла (даже активперла под Вынь), ну а если утрачены навыки работы с командной строкой, то этому можно только посочувствовать...

Изобретение велосипедов не преследуется по закону, и если вы занялись этим процессом, то не стоит привлекать к нему остальных участников форума.
2B OR NOT 2B = FF

Оффлайн AntiChrist

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.all.biz.ua
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #5 : 04 Марта 2004, 11:07:00 »
Ясно, мой perldoc.bat глюченый был, а exe у мя и вовсе нет щас поправил, с этим проблем нет.....

А вот sub escape{ я не нашел... есть только escapeHTML:
начинается так:
my ($self,$toencode,$newlinestoo) = CGI::self_or_default(@_);
(использовать внутренние параметры или их дефолт чтоли?)
а что такое
\'escapeHTML\' => <<\'END_OF_FUNC\',
(блин слева одно справа -другое)
----
Вся Украина - Бизнес портал

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #6 : 04 Марта 2004, 11:19:41 »
Строка 27:
use CGI::Util qw(rearrange make_attributes unescape escape expires);
это значит что нужно экспортировать unescape и escape из модуля CGI/Util.pm.
The documentations is your friend

Оффлайн AntiChrist

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.all.biz.ua
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #7 : 06 Марта 2004, 02:40:06 »
Но ведь после
$todecode =~ tr/+/ /;       # pluses become spaces
плюсов тоже не останется совсем?

еще такой вопрос:
как включить DBI + strict?

use DBI;
use 
strict;
...
$dbh DBI->connect("DBI:mysql:database=$DB:localhost",$db_user,$db_password
	
   || die 
"Can\'t connect: $DBI::errstr\\n";
...


в логах появляется:
Global symbol "$dbh" requires explicit package at ...
и чо делать?
----
Вся Украина - Бизнес портал

Оффлайн AntiChrist

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.all.biz.ua
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #8 : 06 Марта 2004, 02:44:16 »
комментишь strict
#2: use strict;
и все пашет!
----
Вся Украина - Бизнес портал

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #9 : 06 Марта 2004, 09:43:49 »
AntiChrist

При чем здесь DBI + strict???
Переменные объявлять надо! У тебя же в логах все написано!

http://forums.webscript.ru/showthread.php?s=&threadid=9932&msgnum=0

Оффлайн AntiChrist

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.all.biz.ua
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #10 : 06 Марта 2004, 20:04:14 »
Спасибо, я понимаю некоторое раздражение по поводу моих вопросов, но я действительно только начинающий.
К сожалению в тех манах, что я читал не акцентировалась прагма strict. До сих пор я считал, что первое использование переменной в левой части присваивания - это и есть обьявление переменной.
$dbh DBI->connect("DBI:mysql:database=$DB:localhost",$db_user,$db_password
       || die 
"Can\'t connect: $DBI::errstr\\n"

(все переменные используемые справа обьявленны перед этим)
Если это не так то как еще можно обьявить хэндлер $dbh?

Может что-то вроде $dbh = new(DBI); ?

Насчет изобретения велосипедов: нелюблю я использовать чужие библиотеки не разобравшись как они работают. Ту функцию которую я использую для обработки формы я взял из литературы, разобрал построчно, переписал посвоему (обеденив некоторые регэкспы), понимаю полностью. escape из CGI::UTIL я недопонимаю, но вроде основное что мне непонятно связано именно с модульностью - обработка формы почти такая же, и как я понимаю с теми же проблемами:
пробелы и плюсы передаются  из формы одним и тем же сиволом - "+" поэтому, как я понимаю, надо еще перед передачей значений заменить все "+" на "_PLUS;"
(хотя, я конечно не уверен, что плюс обозначающий пробел, абсолютно такой же, как плюс обозначающий собссно сам плюс :) )
« Последнее редактирование: 06 Марта 2004, 20:39:22 от AntiChrist »
----
Вся Украина - Бизнес портал

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #11 : 08 Марта 2004, 17:50:51 »
Про изобретение велосипедов:
дописываем в теге формы enctype="multipart/form-data" и проверяем работу свой функции "из литературы".
Далее читаем rfc2616...

strict - perldoc strict
2B OR NOT 2B = FF

Оффлайн Петр

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://savelyev.aboho.com
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #12 : 24 Марта 2004, 00:35:33 »
Цитировать

пробелы и плюсы передаются из формы одним и тем же сиволом - "+"

Плюс, на сколько я знаю, передаётся как %2B, а вот пробел через "+".
А вообще, если уж возможны конфликты символов -
используй метод POST, он все такие знаки переводит в шестнадцатиричный код  :cool:  :D

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #13 : 24 Марта 2004, 15:57:02 »
AntiChrist
Цитировать
Может что-то вроде $dbh = new(DBI); ?


DBI - Data Base Interface, то бишь только интерфейс

Цитировать
$dbh = DBI->connect("DBI:mysql:database=$DB:localhost",$db_user,$db_password)
       || die "Can\'t connect: $DBI::errstr\\n";


А здесь ты указываешь какой именно интерфейс, в данном случае MySQL

Я лично объявляю $dbh в начале скрипта как:

use vars \'$dbh\';

т.к. мне нужно подключаться только к одной базе данных и данное подключение требуется в самых разных частях скрипта, my использую только в пределах процедур...
вообще лучше почитать ман по переменным...

Оффлайн Karabas

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://karabas.da.ru
Декодирование формы: Знаки "+" и "=". КАК?
« Ответ #14 : 12 Апреля 2004, 17:39:15 »
Может я чего не понял...?
Но я делаю так :

      ($x1,$text)=split(/=/,$text);
  $text=~s/\\+/ /g;
  $text=~s/%([0-9a-hA-H]{2})/pack(\'C\',hex($1))/ge;

Чем это плохо ?
Или я не понял что-то тут у вас... ???

Не кликай тут своей мышою !

 

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