Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
4ept 25.05.2008 17:33 / 25.05.2008 17:45
Сейчас я пытаюсь сделать достаточно простую вещь:@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