parser

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

 

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

@domain, @refresh (возможно для lib.p) + изменённый @is_cookie_on (@test_cookie)

BeaVe 10.02.2006 10:34 / 10.02.2006 10:41

1. Первый метод возвращает строку доменного имени с учётом порта.
@domain[]
$result[${env:SERVER_NAME}^if(!($env:SERVER_PORT == 80)){:${env:SERVER_PORT}}]
#end @domain[]
2. Второй метод делает refresh сам на себя и подставляет $request:uri, можно указать дополнительную строку.
@refresh[additional_string;protocol]
^if(def $additional_string){
	$_string[^if(^request:uri.pos[?]>=0){&}{?}$additional_string]
}
$_protocol[^if(def $protocol){$protocol}{http}]
^location[${_protocol}://^taint[as-is][^domain[]$request:uri]^if(def $_string){$_string}]
#end @refresh[]
Мне кажется возможно необходимо убрать $protocol, т.к. слышал, что Parser не работает с https.

3. Третий метод это немного изменённый @is_cookie_on от redactor'а.
@test_cookie[]
^if(!def $form:sid){
	$sid[^math:uid64[]]
	$cookie:$sid[$sid]
	^refresh[sid=$sid]
}{
	$formname[$form:sid]
	^if(def $cookie:$formname){
		$cookie_sid[$cookie:$formname]
		$cookie:sid[$cookie_sid]
		$cookie:$formname[]
		$result(1)
	}{
		$result(0)
	}
}
#end @test_cookie[]
Мне кажется так удобнее, посколько потом можно использовать $cookie:sid, либо $form:sid.

Мой пример использования методов.
Создаю метод.
@getSID[]
^if(^cookie:sid.length[] == 16){
	^if(!(def $form:sid)){
		^refresh[sid=$cookie:sid]
	}
	$result[$cookie:sid]
}{
	^test_cookie[]
	$result[$form:sid]
}
#end @getSID[]
Хотелось бы увидеть мнения по этим методам. Возможно вы подскажете лучшие способы...
Я думаю они есть, но пока не пришли мне в голову.