parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Misha v.3 24.04.2007 10:09

1. вы неверно используете ^try{}: в случае ошибки надо бы в catch секции сказать парсеру, что с ошибкой вы разобрались самостоятельно ($exception.handled(1)). именно поэтому у вас ошибка когда файла не существует. и я кстати, сначала проверил бы существавание файла (^if(-f...)).

2. создать файл можно проще, без file::create: $sDummy[dummy] ^sDummy.save[/lastreq.txt]

3. вы всё пишите в один файл, это означает что два посетителя могут за него подраться: пришел пост от первого посетителя, пришел пост от второго посетителя, пришел пост от первого посетителя, нажавшего Reload...

4. $datestr[$form:newsdate] ^if(^datestr.length[] > 0){...} -- мы в парсере так не делаем, ибо у нас есть: ^if(def $form:newsdate){...}

5.
$news[^table::load[/news/news.cfg]]
...
^news.append{^datestr.match[\n][g]{<br/>} ^outstr.match[\n][g]{<br/>}} 
^news.save[/news/news.cfg]
можно проще:
$sLine[^datestr.match[\n][g]{<br/>} ^outstr.match[\n][g]{<br/>}]
^sLine.save[append;/news/news.cfg]
6.
подходящих рецептов для этого чтото не нашел
в примерах есть antiflood и antispam. первый -- только для защиты от дублирование, второй -- ещё и для защиты от спама. работают по иному принципу: перед отобращением формы каждый посетитель получает уникальный uid (билет), действующий один раз. второй раз (Reload, Back|Forward) с одним и тем-же билетом не пройти. в качестве хранилища используются не файлики, а hashfile.