[英]urldecode() and rawurldecode() working locally but not on live server
在對數據庫進行檢查之前,我具有以下代碼行來檢索和解碼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 。
好的問題解決了。 恐怕這已鏈接到我的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);
很抱歉浪費任何人在看這個。 這是我自己的愚蠢錯誤!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.