【问题标题】:urldecode() and rawurldecode() working locally but not on live serverurldecode() 和 rawurldecode() 在本地工作,但不在实时服务器上
【发布时间】:2012-09-20 10:00:06
【问题描述】:

在对照我的数据库检查 URL 之前,我有以下代码行来检索和解码 URL:

$urls = url_split(url_current());    

$url_page = (string)rawurldecode($url[0]);

使用以下函数将 URL 拆分并放入一个数组中:

function url_current () 
{
    // Check for HTTPS
    $http = 'http';

    if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") $http .= 's';

    $http .= '://';

    // Return URL
    return $http . $_SERVER['HTTP_HOST'] . $_SERVER["REQUEST_URI"];
}

function url_split ($url)
{    
    // Retrieve URLs - Remove URL and split into array
    $url = explode('/', str_replace('http://www.siteurl.com', '', $url));

    // Build new array, remove blanks
    $urls = array();

    for ($i = 0; $i < sizeof($url); $i++)
    {
        if ($url[$i] != '') $urls[] = $url[$i];
    }

    // Return array
    return $urls;
}

这在我的本地服务器上运行(使用 Zend),但在我的实时服务器上不起作用。这不应该是 $_SEVER 变量的问题,因为它们都返回了正确的数据。我不知道为什么与我的实时服务器相比,这在我的本地服务器上的表现会有所不同。 php ini 中是否有任何设置可能导致此问题?

在我的本地服务器上 yrj%C3%B6laitinen 产生 yrjölaitinen 但在我的实时服务器上产生 yrjölaitinen。

【问题讨论】:

  • 你试过调试这个吗?
  • 我已经更新了我的帖子,以展示正在制作的产品的示例。
  • 定义“在我的实时服务器上它产生”。发出的数据似乎是相同的;不同的是解释。所以我怀疑您的测试服务器宣传 Charset UTF8,而您的实时服务器宣传 ISO-8859-1 或 ISO-8859-15(又名 Latin1)。使用 Firebug 或其他 HTTP 通信检查工具检查服务器标头。
  • 我正在运行 Firebug,但我看不到任何有关服务器标头的信息。你能更具体地告诉我在哪里可以找到这些信息吗?
  • @chapmanio:打开“网络”面板,选择 HTML 过滤器并点击重新加载。您应该只收到一个请求,点击展开并查看 Headers 选项卡。

标签: php


【解决方案1】:

好的,问题解决了。恐怕这与我的 PDO 数据库连接有关。我没有更新代码来强制使用 UTF-8:

// Connect to database
$db = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8", DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

// Injection prevention
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

抱歉浪费任何人的时间看这个。这是我自己愚蠢的错!

【讨论】:

  • 两天不让我,诅咒你Stack Overflow! 握拳
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
  • 2019-03-16
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
相关资源
最近更新 更多