Из http://us3.php.net/manual/en/function.parse-url.php#93983
по какой-то нечетной причине parse_url возвращает хост (пример example.com) в качестве пути, когда схема не указана во входном URL-адресе. Поэтому я написал быструю функцию для получения реального хоста:
blockquote>function getHost($Address) { $parseUrl = parse_url(trim($Address)); return trim($parseUrl['host'] ? $parseUrl['host'] : array_shift(explode('/', $parseUrl['path'], 2))); } getHost("example.com"); // Gives example.com getHost("http://example.com"); // Gives example.com getHost("www.example.com"); // Gives www.example.com getHost("http://example.com/xyz"); // Gives example.com
Вам не нужны ключи массива:
foreach ($session->vars as $key=>$sesion_var) {
if ($sesion_var == trim($var)) {
return true;
}
}
или более согласованы с остальной частью вашего кода:
foreach ($session->vars as $i=>$sesion_var) {
if ($session->vars[$i] == trim($var)) {
return true;
}
}
или, может быть, вы должны использовать array_search ( ) вместо этого кодового блока:
if(array_search(trim($var), $session->vars)) return true;
function session_unregister(string $var): void
{
global $session;
$var = trim($var);
if (isset($session->vars[$var])) {
unset($session->vars[$var]);
}
}
function session_is_registered(string $var): bool
{
global $session;
return isset($session->vars[trim($var)]);
}
Однако, если вы переписываете приложение, я бы рекомендовал также избавиться от этого global
и передать сессию в качестве аргумента для каждой функции.
$session_var
в первой строке, но не на второй строке, где сказано$session->vars
, в отличие от первого кода над ним. – CM 웃 13 July 2018 в 08:23