Миграция некоторого кода из 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);
?>
Другие вопросы по тегам