parser

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

 

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

Ответ

4ept 25.05.2008 17:33 / 25.05.2008 17:45

Сейчас я пытаюсь сделать достаточно простую вещь:
Если пользователь залогинен, выбирать из базы данных строку, в которой выводится его логин.
файлы такие:
index.html
@greeting[]
Клиент

@body_main[]
^oSql.server{
	^rem{ *** создаем объект класса auth *** }
	$auth[^auth::init[$cookie:CLASS;$form:fields;$.csql[$oSql]]]

	^if(def $form:[auth.logout] || (def $form:[auth.logon] && $auth.is_logon)){
		^rem{ *** при logon/logout делаем external redirect на себя *** }
		$response:location[http://${env:SERVER_NAME}^request:uri.match[\?.*][]{}?^math:random(100)]
	}
	
	^rem{ *** устанавливаем антикеширующие заголовки *** }
	^auth.setExpireHeaders[]
	
	^if(!$auth.is_logon){

		^rem{ *** если пользователь не залогинен - выводим форму для логина *** }
		^auth.htmlFormLogon[
			$.target_url[./]
		]
		
		^if(def $form:[auth.logon]){
			<p>Забыли пароль?<br />Воспользуйтесь <a href="/_auth_forgot.html">данной формой</a> для того чтобы установить себе новый пароль.</p>
		}
	}

	^if($auth.is_logon){
		^rem{ *** информация о пользователе *** }
		<p>
			<b>Информация о пользователе:</b><br />
			Логин: $auth.user.name<br />
			Email: $auth.user.email<br />
			Состоит в группах: ^auth.user.groups.menu{$auth.user.groups.name}[, ]<br />
			Дата регистрации: $auth.user.dt_register<br />
			Дата последнего логина: $auth.user.dt_logon
		</p>
	}{
		<p>Последний раз подключался пользователь: $auth.last_name</p>
	}
	
	^rem{ *** выводим форму для логаута. если пользователь не залогинен форма показана не будет *** }
	^auth.htmlFormLogout[$.target_url[./]]
}
#свиснуто из файла _auth_profile.html

$client[^cl::load[]] #мой класс
auto.p
@USE
/class/Erusage.p
/class/MySqlComp.p
/class/auth.p
/class/cl.p



###########################################################################
@auto[]
$SQL.connect-string[mysql://p3test@localhost/p3test]
$oSql[^MySqlComp::create[$SQL.connect-string;
	$.bDebug(true)
	$.sCacheDir[$CACHE_DIR/_sql]
]]
#end @auto[]



###########################################################################
@postprocess[sBody][repl;tmp]
$result[$sBody]

#...your postprocess code here if needed...

^getSQLStat[$oSql]
^rusage[]
#end @postprocess[]



###########################################################################
# log SQL statistics to file
@getSQLStat[oSql][oSqlLog]
^if(def $oSql && !in "/admin/"){
	^use[/class/SqlLog.p]
	$oSqlLog[^SqlLog::create[$oSql]]
	^oSqlLog.log[
		$.iQueryTimeLimit(500)
		$.iQueriesLimit(25)
		$.iQueryRowsLimit(3000)
		^if(def $form:mode && ^form:tables.mode.locate[field;debug]){
			^rem{ *** for ?mode=debug collect all queries info and store it to separate file *** }
			$.sFile[$DATA_DIR/sql.txt]
			$.bAll(1)
		}{
			^rem{ *** by default we log only pages with potential problems *** }
			$.sFile[$DATA_DIR/sql.log]
		}
	]
}
$result[]
#end @getSQLStat[]




###########################################################################
@rusage[sMessage]
^if(!in "/admin/"){
	^Erusage:log[
		$.sFile[$DATA_DIR/rusage.log]
		$.sMessage[$sMessage]
	]
}
$result[]
#end @rusage[]
cl.p
@CLASS
cl

@load[] 
^use[/class/MySql.p]
$tUser[^oSQL.table{
SELECT id, name
FROM user
WHERE name LIKE 'admin'
}]

@show[]
ID: $tUser.id
Name: $tUser.name