本校班級網頁系統移機記事

本校班級網頁系統:web.bhes.ntpc.edu.tw/ClassSystem

原本以php3程式碼建置在iChip nsp6 1.08 (教育版)上,FreeBSD+Apache+MySQL 5.045,php 的編碼為big5, MySQL伺服器連線編碼為latin1,班級網頁系統的MySQL資料庫及資料表的編碼為 latin1。

因為iChip系統安全漏洞太多,又無法修補,加上php 及MySQL 版本太舊,因而決定將原班級網頁系統移至 Windows Server 2012R2 + IIS 8 + PHP 5.6 + MySQL 5.6.22-log ,php 的編碼為utf8, MySQL伺服器連線編碼為big5,班級網頁系統的MySQL資料庫及資料表的編碼為 latin1。

105年1月1日開始移轉程式,挑戰開始…

  1. 程式碼竟然完全不能跑,所有程式碼直接顯示在網頁上:
    ⓪ 解決法:
    <? 全改成 <?php
  2. 網頁呈現出來的,全是utf8編碼,即使網頁設定
    <meta http-equiv="Content-Type" content="text/html; charset=big5″>
    依然以utf8編碼呈現:
    ⓪ 解決法:
    <?php header(“Content-Type:text/html; charset=big5″); ?>
  3. 網頁終於正常編碼為big5,但所有從MySQL資料庫中讀出來的資料仍以亂碼顯示。
    ⓪ 解決法:
    <?php
    $LINK = mysql_connect($DATABASE_URL, $DATABASE_USER, $DATABASE_PASSWORD);
    mysql_query(“SET NAMES ‘latin1′", $LINK);
    mysql_select_db($DATABASE_BASE, $LINK);
    ?>
  4. 所有get 或 post 的參數都無法正常運作。
    ⓪ 解決法:
    <?php
    $teacher_id = $_GET[“teacher_id"];
    $teacher_name = $_POST[“teacher_name"];
    ?>
  5. 部份從資料庫讀出來的資料仍無法顯示
    ⓪ 解決法:
    <?php =$teacher_id ?>
    改成
    <?php echo($teacher_id); ?> 或 <?php echo $teacher_id ?>

<?php
$document_title = htmlspecialchars($document_title);
?>
註解掉,改成
<?php
//$document_title = htmlspecialchars($document_title);
?>

  1. 部份網頁中文字如「許、功、蓋、會…」存入資料庫後會變成亂碼
    ⓪ 解決法:
    <?php
    $document_content = AddSlashes($document_content);
    ?>
  2. 網站加裝 phpMyAdmin 無法正常執行
    ⓪ 解決法:
    看官方網站說明,目前最新版的 phpMyAdmin 只支援到 php 5.3 版
    設定 phpMyAdmin 為應用程式,php 改用 php 5.3 版
  3. 留言版的ip欄位只支援IPv4,存入 IPv6 位址時會發生錯誤
    ⓪ 解決法:
    將 ip 欄位的長度改為 40
  4. 留言版功能,即使管理者將其關閉,仍能透過網址使用該功能。其實所有的功能都有這個問題,但因本校留言版曾被不當使用成援交留言網站,遭警察局來文調查,因而發現此問題。
    ⓪ 解決法:
    增加判斷管理者是否已開啟該功能
  5. 全網站每一個網頁檢查,修正原程式碼的錯誤。
  6. 105年1月5日上班,正式上線
  7. phpMyAdmin 最新版 4.3.5版釋出,下載,重安裝,已可以正常在php 5.6下執行

哈哈!我的假日就是這樣過的

補充:移至 Windows Server 2012R2 後,原本中文路徑的網頁不能顯示的問題,全都不藥而瘉,中文字顯示不必做任何處理,就可直接輸出。(處理反而會出問題)

Comments are closed.