最近在用「網樂通」跑伺服器,發現坊間常用的Joomlawordpress都太吃資源了,但有兩款部落格軟體還滿適合的,都是大陸製作的開放原碼軟體,分別是Bo-blogTypechoBo-blog的功能還算滿齊全,比較適合一般使用者。

至於Typecho還滿清爽的,什麼都沒有,資源也相對較少,大多都要自己寫,很有挑戰性。像我剛開始使用Typecho就遇到一個問題,一開始設定網站跟目錄的時候用內網IP比較方便,但這個資訊是寫死在資料庫上面,對外連線時,他不會自行修改。如我用127.0.0.1,從外面連進來的時候仍然是127.0.0.1,這樣就會抓不到版模格式等等,而且如果原本的圖片、附件路徑用內網IP,到時候也要手動更改。所以我乾脆寫一個程式,讓他一鍵修改原始設定、網誌與附件的IP

這個程式需要兩個php程式,雖然也可以寫在一起,但是為了以後的擴充性,我還是分開寫,首先要寫一個登入資訊,這個大同小異,我直接到網路上抓別人寫好的,只需要修改「資料庫設定」的那四行即可,寫完後儲存檔名成mysqlinc.php,程式碼如下:

<?php
//資料庫設定
$dbServer="localhost";//資料庫位置
$dbName="typecho";//資料庫名稱
$dbUser="root";//帳號
$dbPass="86888";//密碼

//連線資料庫伺服器
if (!@mysql_connect($dbServer,$dbUser,$dbPass))
  die ("無法連線資料庫伺服器");
 
//設定語系
mb_internal_encoding('utf8');
mysql_query("SET CHARACTER SET 'utf8'");
mysql_query("SET NAMES 'utf8'");
 
//選擇資料庫
if (!@mysql_select_db($dbName))
  die ("無法使用資料庫");
?>

 

接下來就是修改IPphp,檔名隨便取都沒差,如果你也是用Typecho,就不用修改。如果是用其他架站軟體,相信你知道要把$sql改成什麼,這裡就不說了,程式碼如下:

<?php
include("mysqlinc.php");//呼叫登入資訊
$newip=$_POST['newip'];//傳過來的IP

$res=mysql_query("SELECT * FROM `typecho_options` WHERE  name='siteUrl'");//IP的資料欄位
$row=mysql_fetch_array($res);
$oldip=$row['value'];
$oldip=substr($oldip,7,-8);//去頭去尾
if($newip=="")
 	echo"原本的IP:".$oldip;
else
{
$sql="UPDATE `typecho_options` SET  `value` = REPLACE (`value`, '".$oldip."', '".$newip."') WHERE `value` LIKE '%".$oldip."%' ";
mysql_query($sql);//option的資料
$sql2="UPDATE `typecho_contents` SET  `text` = REPLACE (`text`, '".$oldip."', '".$newip."') WHERE `text` LIKE '%".$oldip."%' ";
mysql_query($sql2);//網誌上的資料
echo"修改完成。新的IP:".$newip;
}
?>

 

還沒結束,在底下還要寫一個html的輸入框,程式碼如下:

<form action="" method="post" name="form1">
要修改的IP(只需填數字)
<input name="newip" type="text" id="newip" size="40" />
<input name="submit" type="submit" value="修改">
</form>

 

這個程式的原理是這樣的,先讀出原本在資料庫內的IP,當你給他一個新的IP,他就去取代舊的IP,就是這麼簡單。

okplaymayday 發表在 痞客邦 PIXNET 留言(0) 人氣()