Forum Webscript.Ru

Программирование => Perl => Тема начата: DimoninG от 12 Июня 2004, 00:04:35

Название: = + и т.п. - это, оказывается, проблема!
Отправлено: DimoninG от 12 Июня 2004, 00:04:35
Проблема такая: есть сайт про игры. Для добавления новых страниц я написал скрипт. Он создает новые файлы, проставляет ссылки и т.п. Но вот что любопытно (это и есть проблема): если написать в поле ввода (там, где должна быть статья или читы) текст вроде "тогда вам дадут +2 к ловкости и она станет = 10", то получаем, что символ 2 будет написан два раза, а после символа "равно" текст не будет показан (и символ тоже).
Я понимаю, что они передаются как "системные" (разделители и т.п.), только это знание мне не помогает. Мето передачи данных: POST (т.е. передаются огромные тексты). Скрипт, ясно - на Perl.

Как "разрешить" передачу таких символов?

PS Вот даже тут... я написал эти символы... и ничего не произошло... правда форум на php... может на Perl такое нельзя?..
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: Green Kakadu от 12 Июня 2004, 15:43:28
Цитировать
Вот даже тут... я написал эти символы... и ничего не произошло... правда форум на php... может на Perl такое нельзя?..

Скорее проблема в том как вы там обрабатываете передаваемые данные, а вовсе не в перле или POSTе.
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: DimoninG от 13 Июня 2004, 18:41:00
print FILE_view2 "

$ff{viewname}



\\n $ff{viewtext}\\n";

- я просто записываю текст, полученный из поля ввода в файл. И все! В чем может быть тогда ошибка?
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: glebushka от 13 Июня 2004, 20:07:00
Цитировать
DimoninG:
$ff{viewname}

Как ты получаешь этот хеш?
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: DimoninG от 13 Июня 2004, 20:22:29
Вот так:

   read (STDIN, $form_data, $ENV{\'CONTENT_LENGTH\'});
   $form_data =~ s/%(..)/pack ("C", hex($1))/eg;
   $form_data =~ tr/+/ /;
   @pairs = split (/&/, $form_data);

   $i=0;   
   foreach $pair (@pairs)
   {
      ($name, $value) = split (/=/, $pair);
      $ff{$name}=$value;
   }

Содрано с "умной" книжки и что делает я знаю лишь приблизительно.
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: ondr от 13 Июня 2004, 20:30:02
DimoninG
Этот код не рабочий.

Вот, что тебе нужно:
perldoc CGI

ps: В прошлом, твоём топике, я уже давал все необходимые линки.
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: DimoninG от 13 Июня 2004, 21:20:11
Ну почему ты не написал код? Я спрашиваю на форуме как раз для того, чтобы не рыться в документации!

PS Кстати - код-то работает! В чем там дело-то?
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: glebushka от 13 Июня 2004, 21:52:17
DimoninG, а форум существует как раз для того, чтобы научить рыться в этой самой документации.
А если не хочешь рыться. Есть прекрасный форум "поиск и изготовление скриптов". Там тебе за умеренную плату напишут код. Чтоб ты не рылся в документации.
Цитировать
DimoninG:
Кстати - код-то работает! В чем там дело-то?

В том, что не работает:)
ЗЫ. А вот этот кстати код, был написан в этом форуме тыщу раз.
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: DimoninG от 14 Июня 2004, 02:13:00
Тогда объясните мне, что такое этот "perldoc" и где его можно найти?
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: Green Kakadu от 14 Июня 2004, 02:27:53
Цитировать
PS Кстати - код-то работает! В чем там дело-то?

Гы-гы, в том то и дело КАК ОН РАБОТАЕТ ;)

$form_data =~ s/%(..)/pack ("C", hex($1))/eg;
$form_data =~ tr/+/ /;
@pairs = split (/&/, $form_data);

тут надо бы порядок действий изменить ;)
да и вариант %(..) <- не есть гуд
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: Green Kakadu от 14 Июня 2004, 02:31:46
Цитировать
что такое этот "perldoc" и где его можно найти?

.. ээ, говоря по-простому, почитай документацию модуля CGI ;) и воспользуйся его встроенными ф-циями
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: Phoinix от 14 Июня 2004, 12:08:11
DimoninG
Цитировать
Кстати - код-то работает! В чем там дело-то?

Ну и что с того, что он работает? Если это...
Цитировать
Содрано с "умной" книжки и что делает я знаю лишь приблизительно


Еще почитай про регулярные выражения, что бы знать не "приблизительно", так как, насколько я понимаю, что делают строки в твоем коде:
Цитировать
$form_data =~ tr/+/ /;
($name, $value) = split (/=/, $pair);

Ты вообще не догадываешься...

P.S.

use CGI qw(param);
my $query = new CGI;
my %form_data;
$form_data{\'name_data\'} = $query -> param(\'name_data\');


perldoc - это программа которая выводит документацию по функциям и модулям Perl. Как подсказывает практика, эта программа тебе понадобится не один раз...
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: DimoninG от 14 Июня 2004, 20:08:15
use CGI qw/:standard/;
$login=param(\'login\');

где \'login\' - имя поля ввода, а $login - Сами знаете что...

И вопрос: сразу это было не написать, а?! Либо тут один лентяи... либо: "Мы не будем тратить наше драгоценное время на какого-то <далее неразборчиво>". Ужасно, господа, ужасно! Не хотите вы помогать, не хотите... Берите пример с gamedev.ru/forum - отличные, отзывчивые люди...

P.S. А форум для того и форум, чтобы ПОМОГАЛИ, а не посылали к документации.

P.S. И, мать вашу, код, который я написал - РАБОЧИЙ! Просто он из текстовой строки вырезает нужные фрагменты, но машина - не человек и режет так, как сказали. "Не рабочий", блин... Не подходящий к данной задачи и "рабочий" - это абсолютно разные вещи, господа!
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: glebushka от 14 Июня 2004, 20:38:52
мдя...
без комментариев...
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: Phoinix от 14 Июня 2004, 20:47:08
DimoninG
Читать документацию, значить понять суть проблемы и решить её самостотельно, тем способом каким тебе нравится.
Чем тебя не устроил мой код? И чем он вообще отличается от того, который тебе кто-то подсказал? Да и вот такое "тупое" передирание из умных книжек, и готовых скриптов, порождает целую армию бездарных программистов, которые мнят себя великими, а по сути написать самостоятельно ничего не могут...
А знаешь какой следующий вопрос у тебя возникнет по той же тематике? Нет? А я знаю: "Как делать upload картинки?", и опять тебя пошлют читать документацию по CGI.

glebushka
[OFF]Да, комментарии тут излишни...[/OFF]
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: Green Kakadu от 14 Июня 2004, 22:19:58
Цитировать
И, мать вашу, код, который я написал - РАБОЧИЙ! Просто он из текстовой строки вырезает нужные фрагменты

:) значит он НЕПРАВИЛЬНО РАБОТАЕТ => не рабочий
Цитировать
тобы ПОМОГАЛИ, а не посылали к документации

Правильный посыл - это тоже помощь!
И к тому же, нельзя же все время использовать все готовое, надо бы хоть разобраться в том что используешь ;)
Название: = + и т.п. - это, оказывается, проблема!
Отправлено: NeoNox от 14 Июня 2004, 23:50:52
Цитировать
DimoninG:
А форум для того и форум, чтобы ПОМОГАЛИ, а не посылали к документации.

Ты очень хорошо осведомлен о том что должны тебе...
Дружок, никто здесь тебе никто ничего не должен.
Не у нас код не работает, а у тебя.

[moderator hate on]
За неуважение к посетителям форума - получи предупреждение.
Повторная выходка в таком ключе и двери форума перед тобой закроются навсегда.
Тема закрыта.
[moderator hate off]