【发布时间】:2023-03-20 05:21:01
【问题描述】:
当我尝试重定向到其他网站时,我收到此错误:
遇到了 PHP 错误
严重性:警告
消息:parse_url(/%22**) [function.parse-url]: 无法解析 URL
文件名:core/URI.php
行号:219
遇到错误
您提交的 URI 包含不允许使用的字符。
这是我在 URI.php 中的所有代码
private function _detect_uri()
{
if ( ! isset($_SERVER['REQUEST_URI']) OR ! isset($_SERVER['SCRIPT_NAME']))
{
return '';
}
$uri = $_SERVER['REQUEST_URI'];
if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0)
{
$uri = substr($uri, strlen($_SERVER['SCRIPT_NAME']));
}
elseif (strpos($uri, dirname($_SERVER['SCRIPT_NAME'])) === 0)
{
$uri = substr($uri, strlen(dirname($_SERVER['SCRIPT_NAME'])));
}
// This section ensures that even on servers that require the URI to be in the query string (Nginx) a correct
// URI is found, and also fixes the QUERY_STRING server var and $_GET array.
if (strncmp($uri, '?/', 2) === 0)
{
$uri = substr($uri, 2);
}
$parts = preg_split('#\?#i', $uri, 2);
$uri = $parts[0];
if (isset($parts[1]))
{
$_SERVER['QUERY_STRING'] = $parts[1];
parse_str($_SERVER['QUERY_STRING'], $_GET);
}
else
{
$_SERVER['QUERY_STRING'] = '';
$_GET = array();
}
if ($uri == '/' || empty($uri))
{
return '/';
}
$uri = parse_url($uri, PHP_URL_PATH);
// Do some final cleaning of the URI and return it
return str_replace(array('//', '../'), '/', trim($uri, '/'));
}
【问题讨论】:
-
正是它所说的 - 您是否尝试在 CI 源代码中搜索该错误消息并按照其路径找到检查这些字符的正则表达式?我敢打赌,更改正则表达式将解决问题...
标签: php codeigniter