parser

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

 

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

Этот вариант ближе к рабочему...

Тайлер 19.07.2002 06:29

На перле написал 'очиститель' файла с таблицами + сессия продлевается после каждого действия. Вроде работает...
Какие будут замечания?
$time[^date::now[]]
$week_second[^eval(
	($time.weekday * 86400) + 
	($time.hour * 3600) + 
	($time.minute * 60) + 
	$time.second
	)]

$keys[^table::load[session_keys.dat]]
$users[^table::load[users.dat]]

^if(def $cookie:user_id){
	^keys.menu{
		^if($keys.key eq $cookie:user_id){
			^if($keys.ip eq $env:REMOTE_ADDR){
				^if(^eval($week_second - $keys.time) < 900){
					$auth[ok]
					$access_level[$keys.access]
					$cgi_update[^file::cgi[/cgi-bin/auth.cgi;$.update[$keys.key]$.time[$week_second]]]
				}
			}
		}
	}
}

^users.menu{
		^if($users.login eq $form:login && 
		$users.password eq $form:password){
			$auth[]
		}

}

^if($auth ne ok){
	
	^users.menu{
		^if($users.login eq $form:login && 
		$users.password eq $form:password){
			
			$auth[ok]

			$i[32]
			$abc[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
		
			^while($i >= 0){ 
				$key[$key^abc.mid(^math:random(61);1)]
				$i[^eval($i-1)]
			}
	
			$cookie:user_id[ 
				$.value[$key]
				$.expires[session]
			]
		
			^keys.append{$env:REMOTE_ADDR	$key	$week_second	$users.access	$users.login}
			^keys.save[session_keys.dat]
			$access_level[$users.access]
			$cur_user[$users.login]
			^if(^keys.count[] > 10){
				$cgi_auth[^file::cgi[/cgi-bin/auth.cgi;$.clean[$week_second]]]
			}
		}
	}
}