Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 03:54 18.06.24 
Компютри и Интернет
   >> Perl
Всички теми Следваща тема *Кратък преглед

Тема Проблем при обработка на файлове.нови  
Авторacidmax (Нерегистриран)
Публикувано29.12.02 16:58



Здравейте колеги.
Имам нужда от помощ за един проблем.
Имам файл users.ini, съдържащ на всеки ред:

потребител:парола:права

Имам също един Perl CGI скрипт, който получава от потребителя: потребител ($cgiuser), парола($cgipass) и нова парола($NewPassword).
След като сплитне файла със split (':') и присвои потребител, парола и права съответно на $user,$pass и $access, проверява дали $NewPassword е между 1 и 32 символа, и където ($cgipass = $pass) & ($cgiuser = $user) прави:
-------------------------------
`perl -p -i.old -e "s/$user:$pass:$access/$user:$NewPassword:$access/" users.ini`;
-------------------------------

Дотук всичко е ясно и върви добре. Но забелязах, че понякога информацията в целия файл се разбърква когато някой си смени паролата. Примерно става следното:
----------------------
потребител:парола
:права:потребител1:парола1:права1

потребител2:парола2
:права2:потребител3:парола3:права3

и така нататък...
----------------------
Препологам че $NewPassword е съдържал някакви специални символи, които са объркали действията на заместването.

Моля ви да ми предложите начин за проверката им. Също така ако виждате някакви грешки или знаете по-добър начин да направя това, което ви описах, ще помоля за Вашето съдействие.

Благодаря ви предварително.



Тема Re: Проблем при обработка на файлове.нови [re: acidmax]  
Автор:P (Нерегистриран)
Публикувано30.12.02 18:28



здравей
и аз мисля че новата парола е имала някакви символи които са ти разбъркали нещата.
и според мен има някои неща които ще е по-добре да оправиш.
например не мисля че 'perl -e ....' е подходящо в случая.
също така ако някъде в тази нова парола има : направо ти съсипва всичко.
и една парола не трябва да е минимум 1 символ, а например поне 5.

за обработката на файла може би е по-добре нещо като:

open F, users.ini or die $!; #ReadOnly
@array = <F>;
close F;

### всеки елемент на @array ти е ред от файла, т.е. user:pass:permissions

s/^\Q$user:$pass:$access\E/$user:$NewPassword:$access/ foreach @array;

ако си намерил usera с тази парола, заместил си каквото трябва
и само записваш масива, независимо променен или не отново във файла.

open F, "> users.ini" or die $!;
print F @array; ### тук внимавай евентуално с новите редове, \n
close F;

субституцията която правиш ми изглежда ОК, но май ще е по-добре с нещата които съм добавил:
^ - начало
\Q и \E - това премахва специалните означения които евентуално има в някоя променлива

Но пак остават проблемите с : и \n защото

потребител:парола
:права:потребител1:парола1:права1

това след потребител:парола си е чист нов ред, т.е. \n

ако можеш по-добре използвай база данни за това нещо, много по-сигурно и удобно е.
и това което съм написал има да се оправя, например не можеш да си сигурен че си намерил user с такава парола и си направил заместването, ...
обикновенно user името се състои само от символи за дума, $user =~ /^\w+$/ or "Incorrect user name";
а и за паролата има някакви подобни ограничения, най-малкото ти можеш да си създадеш такива, например в парола да не се съдържа символа : (тоя разделител най-добре го промени да не е това)
надявам се да съм ти помогнал с нещо от тия писания.



Тема Re: Проблем при обработка на файлове. [re: :P]  
Авторacidmax (Нерегистриран)
Публикувано30.12.02 19:25



Благодаря ти много за отговора.
Реших да последвам препоръката ти и ще се прехвърля на база данни.
Все пак, твоят метод работи , но базата данни е определено по-добра идея. Поне ще се повиши сигурността.
Благодаря много!



Тема Re: Проблем при обработка на файлове.нови [re: acidmax]  
Автор onzi (онзи)
Публикувано31.12.02 15:44



дали ще се повиши сигурността - божа работа. ама при всички положения ще имаш още едно нещо, за което да се притесняваш - дб енджина ти дали работи или не. щото ако ти се крашне дейтабейса - заминава си всичко.

пък текстовия файл - парс-ваш го и си пееш

или цялата хава става нещо като 'защо просто, като може и сложно'

TANSTAAFL! There AiNt Such Thing As A Free Lunch


Тема Re: Проблем при обработка на файлове.нови [re: onzi]  
Авторacidmax (Нерегистриран)
Публикувано01.01.03 17:16



Досега не ми се е крашвал MySQL-a да чукна на дърво



Тема Re: Проблем при обработка на файлове.нови [re: acidmax]  
Автор onzi (онзи)
Публикувано03.01.03 18:16



чнг
както са казали старите хора - всяко нещо си има първи път

TANSTAAFL! There AiNt Such Thing As A Free Lunch



Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.