gpt4 book ai didi

php - Codeigniter 重定向——您提交的 URI 包含不允许的字符

转载 作者:IT王子 更新时间:2023-10-29 00:19:30 26 4
gpt4 key购买 nike

当我尝试重定向到其他网站时,我收到此错误:

遇到 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, '/'));
}

最佳答案

CodeIgniter 检查所有 URI 段是否有不允许的字符。这是通过将允许的字符列入白名单来实现的。可以在 /system/application/config/config.php$config['permitted_uri_chars'] 变量中检查哪些是允许的。 permitted_uri_chars 是 CodeIgniter 在您的 URI 中接受的字符。默认值设置为类似的内容。

$config['permitted_uri_chars'] = 'a-z 0-9~%.:&_\-'; 

默认只允许这些:a-z 0-9~%.:_-

留空以允许所有字符——但前提是你疯了。

%22 用于 "。您可以将其添加到 permitted_uri_chars 列表中。

关于php - Codeigniter 重定向——您提交的 URI 包含不允许的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19297433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com