Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите со скриптом, Скрипт к БД 
:(
    Опции темы
patcionov
Дата 17.5.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.5.2010

Репутация: нет
Всего: нет



Здравствуйте! ситуация такая. Есть програмное обеспечение которое работает с базой данных. В программе есть обработчик который может принимать письма и вставлять тело письма в поле базы данных. Само ПО довольно корявое (ну уж какое есть - не я его выбирал) поэтому принимает нормально письма только в одной кодировке и только в формате plain text. Компания, которая нам внедряла этот софт написал скрипт который меняет кодировку и отрезает все ненужное от письма  - вот сам скрипт :
 
#!/usr/bin/perl -w

use DBI;
use CGI qw(:all);
use CGI qw/:standard/;
use Encode;


$str1=$ARGV[0];
my $sql="select heat.dbo.CallLog.CallDesc
from heat.dbo.CallLog
where callID= ".$str1."";

#my $output1=encode('cp1251',decode('koi8-r',$sth));
my $output1=encode('utf-8',decode('cp1251',''));
my $dbh = DBI->connect('DBI:ODBC:Driver=SQL Server;database=HEAT;server=192.168.0.131', 'heat', 'heat',
{ RaiseError => 1, AutoCommit => 1 }); 
$dbh->{LongReadLen}= 16384;
$dbh->{LongTruncOk}= 1;
my $sth = $dbh->prepare($sql);
$sth->execute;
my $message;
$sth->bind_columns( undef, \$message);
while( $sth->fetchrow_hashref( )){ 

    $output1=$message."\,";
};
$output1=~ s/<([^>]|\n)*>//g;
$output1=~ s/\!DOCTYPE HTML PUBLIC "\-\/\/W3C\/\/DTD HTML 3.2\/\/EN">//gm;
$output1=~ s/Otklonit\d+.//gm;
$output1=~ s/\&nbsp\;//gm;
$output1=~ s/^\s+//gm;
my $output2=encode('cp1251',decode('koi8-r',$output1));
$sth->finish();
print $str1, "\n";
######################################################
$sql1="update heat.dbo.CallLog
set heat.dbo.CallLog.CallDesc= '".$output2."'
where callID= ".$str1."";
my $dbh1 = DBI->connect('DBI:ODBC:Driver=SQL Server;database=HEAT;server=192.168.0.131', 'heat', 'heat',
{ RaiseError => 1, AutoCommit => 1 }); 
my $sth1 = $dbh1->prepare($sql1);
$sth1->execute;
$sth1->finish();
######################################################
$dbh->disconnect;



Сам я не программист но приблизительно вижу что срипт лезет в поле базы данных , в которое сохранился текст письма, меняет кодировку и отрезает ненужные части (теги от формата HTML) . 

Все работало и вдруг я обнаружил что если в тексте письма встречается апостроф то скрипт не отрабатывает. Можете ли подсказать способ решить данную проблему?
PM MAIL   Вверх
arto
Дата 17.5.2010, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



переписать этот ужасный скрипт.

пс. не подскажете, что за фирма вам его впарила?
PM MAIL ICQ   Вверх
OutlawZ
Дата 17.5.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

Репутация: нет
Всего: нет



Да скорей фирма просто в сети нашла кого нить чела которому лень было что то писать вот и слепил что есть.  smile 


--------------------
user posted image
user posted image
PM MAIL   Вверх
krypt3r
Дата 18.5.2010, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 2
Всего: 16



Перед запросом UPDATE добавьте экранирование переменой $output2
Код

$output2 = $dbh1->quote ($output2);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.