Размещен: /Kernel/ajax/JsHttpRequest.php
Описание
JsHttpRequest: PHP backend for JavaScript DHTML loader.
(C) Dmitry Koterov, http://en.dklab.ru
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. See http://www.gnu.org/copyleft/lesser.html
Do not remove this comment if you want to use the script! Не удаляйте данный комментарий, если вы хотите использовать скрипт!
This backend library also supports POST requests additionally to GET.
author
Dmitry Koterov
version
5.x $Id$
$ID = null
$LOADER = null
$SCRIPT_DECODE_MODE = ''
$SCRIPT_ENCODING = "UTF-8"
$_contentTypes = array(
"script" => "text/javascript",
"xml" => "text/plain", // In XMLHttpRequest mode we must return text/plain - stupid Opera 8.0. :(
"form" => "text/html",
"" => "text/plain", // for unknown loader
)
$_emergBuffer = null
$_encTables = array(
'windows-1251' => array(
0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
0x0098, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
),'koi8-r'=>array(0x2500,0x2502,0x250C,0x2510,0x2514,0x2518,0x251C,0x2524,0x252C,0x2534,0x253C,0x2580,0x2584,0x2588,0x258C,0x2590,0x2591,0x2592,0x2593,0x2320,0x25A0,0x2219,0x221A,0x2248,0x2264,0x2265,0x00A0,0x2321,0x00B0,0x00B2,0x00B7,0x00F7,0x2550,0x2551,0x2552,0x0451,0x2553,0x2554,0x2555,0x2556,0x2557,0x2558,0x2559,0x255A,0x255B,0x255C,0x255d,0x255E,0x255F,0x2560,0x2561,0x0401,0x2562,0x2563,0x2564,0x2565,0x2566,0x2567,0x2568,0x2569,0x256A,0x256B,0x256C,0x00A9,0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433,0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043d,0x043E,0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432,0x044C,0x044B,0x0437,0x0448,0x044d,0x0449,0x0447,0x044A,0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413,0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041d,0x041E,0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412,0x042C,0x042B,0x0417,0x0428,0x042d,0x0429,0x0427,0x042A),)
$_magic = 14623
$_nonAsciiChars = ''
$_prevDisplayErrors = null
$_toUtfFailed = false
$_unicodeConvMethod = null
$_uniqHash =
JsHttpRequest JsHttpRequest()
void getJsCode()
boolean isActive()
string php2js()
void quoteInput()
void setEncoding()
void _correctSuperglobals()
void _decUcs2Decode()
void _obHandler()
void _toUtf8_callback()
void _ucs2EntitiesDecode()
void _ucs2EntitiesDecodeCallback()
void _unicodeConv()
JsHttpRequest( $enc );
Описание
Constructor.
Create new JsHttpRequest backend object and attach it to script output buffer. As a result - script will always return correct JavaScript code, even in case of fatal errors.
QUERY_STRING is in form of: PHPSESSID=<sid>&a=aaa&b=bbb&JsHttpRequest=<id>-<loader> WHERE <id> is a request ID, <loader> is a loader name, <sid> - a session ID (if present), PHPSESSID - session parameter name (by default = "PHPSESSID").
If an object is created WITHOUT an active AJAX query, it is simply marked as non-active. Use statuc method isActive() to check.
Принимаемые параметры
$enc
[ Наверх ]
getJsCode( );
Описание
string getJsCode()
Return JavaScript part of the library.
[ Наверх ]
isActive( );
Описание
Static function.
Returns true if JsHttpRequest output processor is currently active.
Возвращает
True if the library is active, false otherwise.
[ Наверх ]
php2js( [mixed $a = false] );
Описание
Convert a PHP scalar, array or hash to JS scalar/array/hash. This function is an analog of json_encode(), but it can work with a non-UTF8 input and does not analyze the passed data. Output format must be fully JSON compatible.
Принимаемые параметры
$a
Any structure to convert to JS.
Возвращает
JavaScript equivalent structure.
[ Наверх ]
quoteInput( $s );
Описание
string quoteInput(string $input)
Quote a string according to the input decoding mode. If entities are used (see setEncoding()), no '&' character is quoted, only '"', '>' and '<' (we presume that '&' is already quoted by an input reader function).
Use this function INSTEAD of htmlspecialchars() for $_GET data in your scripts.
Принимаемые параметры
$s
[ Наверх ]
setEncoding( $enc );
Описание
void setEncoding(string $encoding)
Set an active script encoding & correct QUERY_STRING according to it. Examples: "windows-1251" - set plain encoding (non-windows characters, e.g. hieroglyphs, are totally ignored) "windows-1251 entities" - set windows encoding, BUT additionally replace: "&" -> "&" hieroglyph -> &#XXXX; entity
Принимаемые параметры
$enc
[ Наверх ]
_correctSuperglobals( );
Описание
Parse & decode QUERY_STRING.
[ Наверх ]
_decUcs2Decode( $code, $toEnc );
Описание
Convert FROM UCS-2BE decimal to $toEnc.
Принимаемые параметры
$code
$toEnc
[ Наверх ]
_obHandler( $text );
Описание
Called in case of error too!
Принимаемые параметры
$text
[ Наверх ]
_toUtf8_callback( &$v, $k, $fromEnc );
Описание
Internal function, used in array_walk_recursive() before json_encode() call.
If a key contains non-ASCII characters, this function sets $this->_toUtfFailed = true, becaues array_walk_recursive() cannot modify array keys.
Принимаемые параметры
&$v
$k
$fromEnc
[ Наверх ]
_ucs2EntitiesDecode( $data );
Описание
Decode all %uXXXX entities in string or array (recurrent).
String must not contain %XX entities - they are ignored!
Принимаемые параметры
$data
[ Наверх ]
_ucs2EntitiesDecodeCallback( $p );
Описание
Decode one %uXXXX entity (RE callback).
Принимаемые параметры
$p
[ Наверх ]
_unicodeConv( $fromEnc, $toEnc, $v );
Описание
Wrapper for iconv() or mb_convert_encoding() functions.
This function will generate fatal error if none of these functons available!
Принимаемые параметры
$fromEnc
$toEnc
$v
see
[ Наверх ]
null [Строка 26]mixed null [Строка 25]mixed '' [Строка 24]mixed "UTF-8" [Строка 23]mixedarray(
"script" => "text/javascript",
"xml" => "text/plain", // In XMLHttpRequest mode we must return text/plain - stupid Opera 8.0. :(
"form" => "text/html",
"" => "text/plain", // for unknown loader
) [Строка 35]mixed null [Строка 48]mixedarray(
'windows-1251' => array(
0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
0x0098, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
),'koi8-r'=>array(0x2500,0x2502,0x250C,0x2510,0x2514,0x2518,0x251C,0x2524,0x252C,0x2534,0x253C,0x2580,0x2584,0x2588,0x258C,0x2590,0x2591,0x2592,0x2593,0x2320,0x25A0,0x2219,0x221A,0x2248,0x2264,0x2265,0x00A0,0x2321,0x00B0,0x00B2,0x00B7,0x00F7,0x2550,0x2551,0x2552,0x0451,0x2553,0x2554,0x2555,0x2556,0x2557,0x2558,0x2559,0x255A,0x255B,0x255C,0x255d,0x255E,0x255F,0x2560,0x2561,0x0401,0x2562,0x2563,0x2564,0x2565,0x2566,0x2567,0x2568,0x2569,0x256A,0x256B,0x256C,0x00A9,0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433,0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043d,0x043E,0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432,0x044C,0x044B,0x0437,0x0448,0x044d,0x0449,0x0447,0x044A,0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413,0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041d,0x041E,0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412,0x042C,0x042B,0x0417,0x0428,0x042d,0x0429,0x0427,0x042A),) [Строка 473]mixedОписание
UCS-2BE -> 1-byte encodings (from #128).
14623 [Строка 31]mixed '' [Строка 44]mixed null [Строка 33]mixed false [Строка 42]mixed null [Строка 46]mixed [Строка 29]mixed