Миграция некоторого кода из PHP 5.2 в 5.4 - кодировка символов в заголовке?
У меня есть старый сценарий, который я не написал. Я начинающий программист PHP, так что если кто-нибудь может помочь мне с этой проблемой. Сценарий прекрасно работает в PHP 5.2, но ошибка в 5.4 Я получаю эту ошибку:
"Кодировка символов документа HTML не была объявлена. Документ будет отображаться с искаженным текстом в некоторых конфигурациях браузера, если документ содержит символы вне диапазона US-ASCII. Кодировка символов страницы должна быть объявлена в документе или в протокол передачи ".
это только часть скрипта functions.php, но я думаю, что это функциональные области, дающие мне ошибку заголовка html. Если мне нужно опубликовать весь скрипт functions.php, пожалуйста, скажите мне.
function standardheader($title,$normalpage=true,$idlang=0) {
global $CURUSER, $SITENAME, $STYLEPATH, $USERLANG,$time_start, $gzip, $GZIP_ENABLED,$err_msg_install;
$time_start = get_microtime();
// default settings for blocks/menu
if (!isset($GLOBALS["charset"]))
$GLOBALS["charset"] = "iso-8859-1";
// controll if client can handle gzip
if ($GZIP_ENABLED)
{
if (stristr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip") && extension_loaded('zlib') && ini_get("zlib.output_compression") == 0)
{
if (ini_get('output_handler')!='ob_gzhandler')
{
ob_start("ob_gzhandler");
$gzip='enabled';
}
else
{
ob_start();
$gzip='enabled';
}
}
else
{
ob_start();
$gzip='disabled';
}
}
else
$gzip='disabled';
header("Content-Type: text/html; charset=".$GLOBALS["charset"]);
if ($title == "")
$title = unesc($SITENAME);
else
$title = unesc($SITENAME) . " - " . htmlspecialchars($title);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<title><?php echo $title; ?></title>
<?php
// get user's style
$resheet=mysql_query("SELECT * FROM style where id=".$CURUSER["style"]."");
if (!$resheet)
{
$STYLEPATH="./style/base";
$style="./style/base/torrent.css";
}
else
{
$resstyle=mysql_fetch_array($resheet);
$STYLEPATH=$resstyle["style_url"];
$style=$resstyle["style_url"]."/torrent.css";
}
print("<link rel=\"stylesheet\" href=$style type=\"text/css\" />");
?>
</head>
<body>
<?php
// getting user language
if ($idlang==0)
$reslang=mysql_query("SELECT * FROM language WHERE id=".$CURUSER["language"]);
else
$reslang=mysql_query("SELECT * FROM language WHERE id=$idlang");
if (!$reslang)
{
$USERLANG="language/english.php";
}
else
{
$rlang=mysql_fetch_array($reslang);
$USERLANG="".$rlang["language_url"];
}
clearstatcache();
if (!file_exists($USERLANG))
{
err_msg("Error!","Missing Language!");
print_version();
print("</body>\n</html>\n");
die;
}
require_once($USERLANG);
if (!file_exists($style))
{
err_msg("Error!","Missing Style!");
print_version();
print("</body>\n</html>\n");
die;
}
if ($normalpage)
require_once($STYLEPATH."/header.php");
echo $err_msg_install;
}
function err_msg($heading="Error!",$string)
{
// just in case not found the language
if (!defined("BACK"))
define("BACK","Back");
print("<div align=\"center\"><br /><table border=\"0\" width=\"500\" cellspacing=\"0\" cellpadding=\"0\"><tr>\n");
print("<td bgcolor=\"#FFFFFF\" align=\"center\" style=\"border-style: dotted; border-width: 1px\" bordercolor=\"#CC0000\">\n");
print("<font color=\"#CC0000\"><b>$heading</b><br />$string<br /></font></td>\n");
print("</tr></table></div><br />\n");
print("<center><a href=javascript:history.go(-1)>".BACK."</a></center>");
}
1 ответ
У меня получилось, убрав gzip, не очень, но работает
function standardheader($title,$normalpage=true,$idlang=0) {
global $CURUSER, $SITENAME, $STYLEPATH, $USERLANG, $time_start, $gzip, $GZIP_ENABLED, $err_msg_install;
$time_start = get_microtime();
// default settings for blocks/menu
if (!isset($GLOBALS["charset"]))
$GLOBALS["charset"] = "utf-8";
// controll if client can handle gzip
$gzip='disabled';
header("Content-Type: text/html; charset=".$GLOBALS["charset"]);
if ($title == "")
$title = unesc($SITENAME);
else
$title = unesc($SITENAME) . " - " . htmlsafechars($title);
?>