1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
server.php
См. документацию.
1<?php
2
3namespace Bitrix\Main;
4
5use Bitrix\Main\Type\ParameterDictionary;
6
11{
17 public function __construct(array $arServer)
18 {
19 if (isset($arServer["DOCUMENT_ROOT"]))
20 $arServer["DOCUMENT_ROOT"] = rtrim($arServer["DOCUMENT_ROOT"], "/\\");
21
22 parent::__construct($arServer);
23 }
24
26 {
27 $filteredValues = $filter->filter($this->values);
28
29 if ($filteredValues != null)
30 $this->setValuesNoDemand($filteredValues);
31 }
32
38 public function getDocumentRoot()
39 {
40 return $this->get("DOCUMENT_ROOT");
41 }
42
49 public function getPersonalRoot()
50 {
51 $r = $this->get("BX_PERSONAL_ROOT");
52 if ($r == null || $r == "")
53 $r = "/bitrix";
54
55 return $r;
56 }
57
63 public function getHttpHost()
64 {
65 return $this->get("HTTP_HOST");
66 }
67
73 public function getServerName()
74 {
75 return $this->get("SERVER_NAME");
76 }
77
83 public function getServerAddr()
84 {
85 return $this->get("SERVER_ADDR");
86 }
87
92 public function getRemoteAddr()
93 {
94 return $this->get("REMOTE_ADDR");
95 }
96
101 public function getUserAgent()
102 {
103 return $this->get("HTTP_USER_AGENT");
104 }
105
111 public function getServerPort()
112 {
113 return $this->get("SERVER_PORT");
114 }
115
116 public function getRequestScheme()
117 {
118 return $this->get("REQUEST_SCHEME");
119 }
120
127 public function getRequestUri()
128 {
129 return $this->get("REQUEST_URI");
130 }
131
137 public function getRequestMethod()
138 {
139 return $this->get("REQUEST_METHOD");
140 }
141
148 public function getPhpSelf()
149 {
150 return $this->get("PHP_SELF");
151 }
152
159 public function getScriptName()
160 {
161 return $this->get("SCRIPT_NAME");
162 }
163
164 public function rewriteUri($url, $queryString, $redirectStatus = null)
165 {
166 $this->values["REQUEST_URI"] = $url;
167 $this->values["QUERY_STRING"] = $queryString;
168 if ($redirectStatus != null)
169 $this->values["REDIRECT_STATUS"] = $redirectStatus;
170 }
171
172 public function transferUri($url, $queryString = "")
173 {
174 $this->values["REAL_FILE_PATH"] = $url;
175 if ($queryString != "")
176 {
177 if (!isset($this->values["QUERY_STRING"]))
178 $this->values["QUERY_STRING"] = "";
179 if (isset($this->values["QUERY_STRING"]) && ($this->values["QUERY_STRING"] != ""))
180 $this->values["QUERY_STRING"] .= "&";
181 $this->values["QUERY_STRING"] .= $queryString;
182 }
183 }
184
188 public function parseAuthRequest()
189 {
190 $digest = '';
191
192 if ($this['PHP_AUTH_USER'] != '')
193 {
194 // Basic Authorization PHP module
195 return [
196 'basic' => [
197 'username' => $this['PHP_AUTH_USER'],
198 'password' => $this['PHP_AUTH_PW'],
199 ]
200 ];
201 }
202 elseif ($this['PHP_AUTH_DIGEST'] != '')
203 {
204 // Digest Authorization PHP module
205 $digest = $this['PHP_AUTH_DIGEST'];
206 }
207 else
208 {
209 if ($this['REDIRECT_REMOTE_USER'] !== null || $this['REMOTE_USER'] !== null)
210 {
211 $res = $this['REDIRECT_REMOTE_USER'] ?? $this['REMOTE_USER'];
212 if ($res != '')
213 {
214 if(preg_match('/^\x20*Basic\x20+([a-zA-Z0-9+\/=]+)\s*$/D', $res, $matches))
215 {
216 // Basic Authorization PHP FastCGI (CGI)
217 $res = trim($matches[1]);
218 $res = base64_decode($res);
219 [$user, $pass] = explode(':', $res, 2);
220 if (str_starts_with($user, $this['HTTP_HOST'] . "\\"))
221 {
222 $user = str_replace($this['HTTP_HOST']."\\", "", $user);
223 }
224 elseif (str_starts_with($user, $this['SERVER_NAME'] . "\\"))
225 {
226 $user = str_replace($this['SERVER_NAME']."\\", "", $user);
227 }
228
229 return [
230 'basic' => [
231 'username' => $user,
232 'password' => $pass,
233 ]
234 ];
235 }
236 elseif (preg_match('/^\x20*Digest\x20+(.*)$/sD', $res, $matches))
237 {
238 // Digest Authorization PHP FastCGI (CGI)
239 $digest = trim($matches[1]);
240 }
241 }
242 }
243 }
244
245 if($digest <> '' && ($data = static::parseDigest($digest)))
246 {
247 return ['digest' => $data];
248 }
249
250 return false;
251 }
252
253 protected static function parseDigest($digest)
254 {
255 $data = [];
256 $parts = ['nonce' => 1, 'username' => 1, 'uri' => 1, 'response' => 1];
257 $keys = implode('|', array_keys($parts));
258
259 //from php help
260 preg_match_all('@('.$keys.')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $digest, $matches, PREG_SET_ORDER);
261
262 foreach ($matches as $m)
263 {
264 $data[$m[1]] = ($m[3] ?: $m[4]);
265 unset($parts[$m[1]]);
266 }
267
268 return ($parts? false : $data);
269 }
270}
Определения server.php:11
getServerAddr()
Определения server.php:83
getPhpSelf()
Определения server.php:148
rewriteUri($url, $queryString, $redirectStatus=null)
Определения server.php:164
getServerPort()
Определения server.php:111
getRemoteAddr()
Определения server.php:92
addFilter(Type\IRequestFilter $filter)
Определения server.php:25
getUserAgent()
Определения server.php:101
getHttpHost()
Определения server.php:63
parseAuthRequest()
Определения server.php:188
getScriptName()
Определения server.php:159
static parseDigest($digest)
Определения server.php:253
transferUri($url, $queryString="")
Определения server.php:172
getRequestScheme()
Определения server.php:116
getPersonalRoot()
Определения server.php:49
getDocumentRoot()
Определения server.php:38
getRequestMethod()
Определения server.php:137
getServerName()
Определения server.php:73
getRequestUri()
Определения server.php:127
__construct(array $arServer)
Определения server.php:17
setValuesNoDemand(array $values)
Определения parameterdictionary.php:14
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$filter
Определения iblock_catalog_list.php:54
Определения collection.php:2
$user
Определения mysql_to_pgsql.php:33
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$pass
Определения result.php:5
$matches
Определения index.php:22
$url
Определения iframe.php:7