Forum Webscript.Ru

Программирование => Perl => Тема начата: Pablo от 04 Августа 2003, 17:31:40

Название: чтение инфы из веб-формы
Отправлено: Pablo от 04 Августа 2003, 17:31:40
Банальная ситуация:
Хочу скормить скрипту текс из веб-формы (textbox) и , средствами скрипта, чиркануть его в базу MySQL. Всё вроде работает, НО! Текст обрезается до 255 знаков и успешно пишется в базу. Как решить проблему? Хочу, к примеру, целую страницу считать из веб формы!

Заранее спасибо.
Название: чтение инфы из веб-формы
Отправлено: NeoNox от 04 Августа 2003, 17:38:11
Какой тип поля в БД?
Название: чтение инфы из веб-формы
Отправлено: Pablo от 04 Августа 2003, 17:43:36
text. Мне кажется, что уже после декодирования url текст обрезается, а не базой
Название: чтение инфы из веб-формы
Отправлено: NeoNox от 04 Августа 2003, 17:54:08
http://www.mysql.com/doc/ru/BLOB.html
и выставь правильную длинну.
Название: чтение инфы из веб-формы
Отправлено: Pablo от 04 Августа 2003, 18:11:43
Что-то не помогает. Дело похоже не в типах полей. Отправив текст скрипту, сразу вывожу его на печать (не играясь с базой) - режет на 255 знаков.
Название: чтение инфы из веб-формы
Отправлено: NeoNox от 04 Августа 2003, 18:29:03
Скрипт в студию
Название: чтение инфы из веб-формы
Отправлено: Pablo от 04 Августа 2003, 18:33:57
Предлагаю по Аське пообщаться, если не против. 100942778. Вижу, что человек знающий1 :-)
Название: чтение инфы из веб-формы
Отправлено: Pablo от 04 Августа 2003, 18:37:26
Вот и скрипт:

#!/usr/bin/perl

use DBI;
use CGI qw(:standard);

####

sub urldecode{
   local($val)=@_;
   $val=~s/\\+/ /g;
   $val=~s/%([0-9A-H]{2})/pack(\'C\',hex($1))/ge;
   return $val;
   }
####
if($ENV{\'REQUEST_METHOD\'} eq \'GET\')
   {$query=$ENV{\'QUERY_STRING\'};}
elsif($ENV{\'REQUEST_METHOD\'} eq \'POST\')
   {sysread STDIN,$query,$ENV{\'CONTENT_LENGTH\'};}
####
   @formfields=split(/&/,$query);
    foreach(@formfields){
      $name = param(\'name\');
      $pass = param(\'pass\');
      $news = param(\'news\');   
      $head = param(\'head\');
#   if(/^name=(.*)/){$name=&urldecode($1);}
#   if(/^pass=(.*)/){$pass=&urldecode($1);}
#   if(/^news=(.*)/){$news=&urldecode($1);}
#       if(/^head=(.*)/){$head=&urldecode($1);}
   }
####   

print "Content-Type: text/html\\n\\n";

($day,$month,$year) = (localtime)[3,4,5];
$month=$month+1;
$year=$year+1900;
$date="$year:$month:$day";   


print "\\n";
print "
\\n";
print "
$day.$month.$year
\\n";
print "
\\n";
print "
$head
\\n";
print "

$news

\\n";

print "OK, click here to finish process\\n";
print "\\n";
Название: чтение инфы из веб-формы
Отправлено: NeoNox от 04 Августа 2003, 18:41:47
Цитировать
Pablo:
Предлагаю по Аське пообщаться, если не против.

Не для етого форум придумали.
Покажи мне форму для отправки.
Название: чтение инфы из веб-формы
Отправлено: Pablo от 04 Августа 2003, 18:46:35





   



Название статьи :
Здесь введите информацию :


Название: чтение инфы из веб-формы
Отправлено: NeoNox от 04 Августа 2003, 18:49:38
Замени
 @formfields=split(/&/,$query);
foreach(@formfields){
$name = param(\'name\');
$pass = param(\'pass\');
$news = param(\'news\');
$head = param(\'head\');
# if(/^name=(.*)/){$name=&urldecode($1);}
# if(/^pass=(.*)/){$pass=&urldecode($1);}
# if(/^news=(.*)/){$news=&urldecode($1);}
# if(/^head=(.*)/){$head=&urldecode($1);}
}
на
 
$name = param(\'name\');
$pass = param(\'pass\');
$news = param(\'news\');
$head = param(\'head\');
Название: чтение инфы из веб-формы
Отправлено: NeoNox от 04 Августа 2003, 18:51:01
Зачем вот ети танцы с $ENV{\'REQUEST_METHOD\'} я так и не понял...
Название: чтение инфы из веб-формы
Отправлено: Pablo от 04 Августа 2003, 19:01:25
Дурная голова рукам покою не даёт.... :-)
В литературе нашёл, а не осмыслил :-)
Название: чтение инфы из веб-формы
Отправлено: Pablo от 04 Августа 2003, 19:15:14
Всё равно не пришёл к решению проблемы.
Название: чтение инфы из веб-формы
Отправлено: NeoNox от 04 Августа 2003, 19:36:45
Название: чтение инфы из веб-формы
Отправлено: Pablo от 05 Августа 2003, 14:16:52
Весьма признателен за помощь.
Фишка была в том, что я про POST - в нижнем регистре писал..

Спасибо!