2011年10月16日 星期日

PHP頁面中-CKeditor網頁編輯器與CKfinder上傳整合應用

編輯器:CKeditor
支援語法:PHP、ASP、ASP.NET、CF
檔案大小:1.99MB
元件版本:3.5.1
官方展示:http://ckeditor.com/demo
官方下載:http://ckeditor.com/download

上傳元件:CKfinder
檔案大小:1.01MB
支援語法:PHP、ASP、ASP.NET、CF
元件版本:2.0.1
官方展示:http://ckfinder.com/demo
官方下載:http://ckfinder.com/download

step1

下載完畢後,將二個元件放在同一目錄,並新增upload資料夾,用來存放上傳檔案。

step2

開啟ckeditor / config.js,分別新增以下語法,控制編輯器選項與啟用上傳功能。

開啟上傳功能:將下面內容加入ckeditor / config.js中

config.filebrowserBrowseUrl = 'ckfinder/ckfinder.html';
config.filebrowserImageBrowseUrl = 'ckfinder/ckfinder.html?Type=Images';
config.filebrowserFlashBrowseUrl = 'ckfinder/ckfinder.html?Type=Flash';
config.filebrowserUploadUrl = 'ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files'; //可上傳一般檔案
config.filebrowserImageUploadUrl = 'ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images';//可上傳圖檔
config.filebrowserFlashUploadUrl = 'ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash';//可上傳Flash檔案

而成為:

/*
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/

CKEDITOR.editorConfig = function( config )
{
    // Define changes to default configuration here. For example:
    // config.language = 'fr';
    // config.uiColor = '#AADC6E';
[
    ['Source','-','Templates','-','Cut','Copy','Paste'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Link','Unlink','Anchor'],
['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
'/', ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
['Format','FontSize','-','TextColor','BGColor']
];
config.filebrowserBrowseUrl = 'ckfinder/ckfinder.html';
config.filebrowserImageBrowseUrl = 'ckfinder/ckfinder.html?Type=Images';
config.filebrowserFlashBrowseUrl = 'ckfinder/ckfinder.html?Type=Flash';
config.filebrowserUploadUrl = 'ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files'; //可上傳一般檔案
config.filebrowserImageUploadUrl = 'ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images';//可上傳圖檔
config.filebrowserFlashUploadUrl = 'ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash';//可上傳Flash檔案

};

Step3
開啟ckfinder / config.php,找到33行將return false改成return true。

{
    // WARNING : DO NOT simply return "true". By doing so, you are allowing
    // "anyone" to upload and list the files in your server. You must implement
    // some kind of session validation here. Even something very simple as...

    // return isset($_SESSION['IsAuthorized']) && $_SESSION['IsAuthorized'];

    // ... where $_SESSION['IsAuthorized'] is set to "true" as soon as the
    // user logs in your system. To be able to use session variables don't
    // forget to add session_start() at the top of this file.
return true;
//    return false; <----註解掉改為上一行的
return true

}

// LicenseKey : Paste your license key here. If left blank, CKFinder will be
// fully functional, in demo mode.
$config['LicenseName'] = '';
$config['LicenseKey'] = '';

/*
Uncomment lines below to enable PHP error reporting and displaying PHP errors.
Do not do this on a production server. Might be helpful when debugging why CKFinder does not work as expected.
*/
// error_reporting(E_ALL);
// ini_set('display_errors', 1);

/*
To make it easy to configure CKFinder, the $baseUrl and $baseDir can be used.
Those are helper variables used later in this config file.
*/

Step4
接著到63行處,設定上傳的目錄位置。

Examples:
    $baseUrl = 'http://example.com/ckfinder/files/';
    $baseUrl = '/userfiles/';

ATTENTION: The trailing slash is required.
*/
// $baseUrl = '/ckfinder/userfiles/';註解掉改為下一行的$baseUrl = '/ckfinder/upload/';

$baseUrl = '/ckfinder/upload/';
/*
$baseDir : the path to the local directory (in the server) which points to the
above $baseUrl URL. This is the path used by CKFinder to handle the files in
the server. Full write permissions must be granted to this directory.

step5

接著在你要使用文字區域的頁面裡加入導入CKEDITOR的核心。找到其<body>下插入下面一段文字串

<script src="ckeditor/ckeditor.js" type="text/javascript"><!--mce:2--></script>

body {
    background-color: #FFFBF0;
}
-->
</style></head>

<body>
<script src="ckeditor/ckeditor.js" type="text/javascript"><!--mce:2--></script>
<div align="center">
<h2><strong>寄信系統</strong>
</h2>
<form id="form1" name="form1" method="post" action="mail_message.php">

step6

找到你要使用CKEDITOR的文字區域的語法,加入class="ckeditor"

  <td bgcolor="#D4DFFF"><div align="right"><strong>內容:</strong></div></td>
  <td bgcolor="#D4DFFF"><div align="left">
      <textarea name="content" class="ckeditor" id="content" cols="50" rows="20"></textarea>
  </div></td>
</tr>
<tr>
  <td bgcolor="#D4DFFF"></td>
  <td bgcolor="#D4DFFF">

最後確認一下可否導入ckeditor?

image

再看可否上傳檔案?

image

一切測試正常!

2011年8月25日 星期四

dreamweaver的怪現象

用dreamweaver改寫php迴圈以達到一次更新多個資料,結果依書上的說明,直接將伺服器行為的更新記錄稍作改

主要加上:

$countNum=count($_POST['index']);
        for($i=0 ; $i<$countNum ; $i++){

$updateSQL = sprintf("UPDATE ``211`` SET sn=%s, `number`=%s, name_student=%s WHERE `index`=%s",
                       GetSQLValueString($_POST['test'][$i], "int"),
                       GetSQLValueString($_POST['test3'][$i], "int"),
                       GetSQLValueString($_POST['test2'][$i], "text"),
                       GetSQLValueString($_POST['Index'][$i], "int"));

  mysql_select_db($database_load, $load);
  $Result1 = mysql_query($updateSQL, $load) or die(mysql_error());

}

結果依書上的邏輯更改後,在更新時卻會出現

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '211`` SET sn=980801, `number`=1, name_student='方發' WHERE `index`=1' at line 1

後來發現問題在如下圖所指的,多了兩個單引號

image

將其刪除後,就可以了!

image

2011年8月24日 星期三

Dreamweaver欄位驗證之中文化

在你有要證證欄位的檔案找到如下程式碼,並將其中之相關文字內容中文化即可!

function MM_validateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
        } else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
    } if (errors) alert('The following error(s) occurred:\n'+errors);
    document.MM_returnValue = (errors == '');
} }

function MM_validateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- '+nm+' 必須是Email位址.\n';
        } else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' 必須包含一個數字\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' 必須要為數字介於 '+min+' 到 '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' 是必須有資料的.\n'; }
    } if (errors) alert('The following error(s) occurred:\n'+errors);
    document.MM_returnValue = (errors == '');
} }

 

之檔案裡,找到以下字串

2011年8月14日 星期日

連羽毛球拍(鈦10),都有假的!不可不慎!

YY的球拍,我用的最順的是鈦10,這支拍子在一般有用過的球友口中評價都很高,由於已停產,所以想說能否上網買得庫存貨,果然在雅虎拍裡,打入關鍵字後,有找到幾支,其中有一個賣家標榜是全新,且價格是1050起標,於是我就大概問一問狀況之後,出價下標,結果沒想到兩天後就收到結標通知,得標價為1050,於是我看了看該賣家的評語,看起來也都還好,雖然評語只有3,於是也就不疑有他的付款取貨,沒想到貨到時,打開,還真令人失望,竟然是一支山寨拍,話說山寨也不太對,應說是仿冒拍!因為它廠牌型號與用原廠的,而唯一與原廠不同的是它的材質,一看就是差很大,即沒有鈦合金的金屬段,其它部分的材質也是看起來沒有原廠堅固耐用,加上其表面拷漆之脆弱,拍子一端原本在地面,另一端不小心輕輕掉落地面,結果拷漆就掉了!

這次只能說一分錢一分貨!價差過大的就要小心,再者這個賣家還算有良心的是,他沒有標價3、4仟元,因為同樣的東西,網路上我還真看到有人標價3、4仟元!

這次網購的經驗特地寫出供參考,只能說自己下標前沒先與賣家多做溝通,然而賣家似乎也有意要欺騙買家,因為有其他買家就提出相關的問題問賣家,而賣家的回覆是庫存貨、直接與日本工廠拿,所以價錢才這麼底!網購最好是選擇賣家有實體店面,可以現場看貨再決定要不要買!

2011年7月26日 星期二

如何將excel資料匯入成為mysql的資料的方法!

如何將excel資料匯入成為mysql的資料,底下是一段示範影片!

vosonic vp2160 升級解決2g限制的問題,真高興!

在相機記憶卡還算貴的年代裡,喜歡拍照的人都會因為動不動記憶卡就裝滿而不能拍照。所以若到出國時常會向親友借記憶卡(同格式的)或帶notebook(可以將裝滿照片的記憶卡資料,拷備到notebook,以便清空記憶卡後繼續拍),然而當時的notebook整體而言,也都滿重的(約3公斤上下),所以出國若要拍照拍的過隱,就必須要有負重的心理準備,後來有一種2.5吋的隨身碟(專有名詞已忘了),他除了同一般隨身碟一樣,可以usb介面外接之外,他本身附有各種記憶卡的讀記插槽,可以將你記憶卡上的資料,在插上該插槽之後,按一個鍵就可以把其中的資料全部拷備到該隨身碟裡了,

P1190496

而當時的2.5吋隨身碟最大容量還約40g左石,有這樣的容量大小,一次夠一個喜好攝影的人拍攝約半個月,是綽綽有餘的!所以我也買了一個,然而過一段時間之後,隨著數位像機的解析度越來越高,加上記憶卡、2.5吋硬碟容量也都越來越大,慢慢的記憶卡不僅會用來拍照,也用做錄影的儲存工具(因為4g的記憶卡,就可以錄一段頗長時間的影片了),而只要2.5吋的硬碟容量換大一點的,這樣出國不僅拍照或錄影,只要有一台數位相機(具錄影功能的),有一個大容量的記憶卡(>4g的),配合我的具讀卡功能的隨身碟就可以非常痛快的拍照與錄影了,不用擔心記憶卡容量不足的問題!

然而這一切看似美好的事情,就是這麼不如人意,該機器的讀卡功能竟也受到2g的限制,也就是你帶著大容量的記憶卡拍照或錄影,容量滿了之後,插在該機子的讀卡槽裡,它是讀不到的,當時我曾想過,會不會網路上可以找到升級的韌體來解決此一問題?可是令我感到遺憾的是,當時我並沒法找到相關的資料或檔案,於是該機子,慢慢的也就被我冷落在一旁,而我也就把它拿來做為一般的2.5吋隨身碟使用了(為此我還將其格式化為ntfs,因為原機要能做到可讀卡拷備的功能必須是fat32的格式,但因為我已不再使用2g以下的記憶卡了,所以該機的讀卡功能幾乎無用武之地,加上fat32有單一檔案4g的限制,所以我在決定將它變純粹的隨身碟使用後,就斷然將其格式化成NTFS格式了)。

直到今日,我心血來潮,心想;「會不會已可以升級解決2g限制的問題了?」,於是我在瀏覽器打入vosonic vp2160,結果我在網路上看到這樣的資料

2011年7月22日 星期五

ostube開放註冊,在中文化介面裡收到註冊信的問題!

ostube開放註冊,在中文化介面裡註冊,按下註冊鈕之後

image

接著會跳出這個畫面

image

到自己註冊的信箱裡收信,很高興的看到寄來了一封信

image

滑鼠點了一下看啟動連結,發現如下圖,空空如也!

image

造成這樣的原因是目的流傳在坊間的中文化版本在所有相關的語言檔都己中文化,然而卻少了一個部份的中文化,那就是在/ostube/templates/default/mail/裡面,打開資料夾來看,發現只有兩個子資料夾,分別是english與german。

這時只要我們將english資料夾拷備一份並更名為tw,然後將其內的所有檔案(如下圖)中文化即可(務必要將每個中文化的檔案之編號改為utf8,否則會是亂碼!)

image

當然這邊若你只想要解決註冊信的問題,你也可以只中文化signup.tpl這個檔案即可(甚至不中文化也可,只是寄出去的註冊信內容會是英文而已!)

image

接著再做一次註冊動作,然後再到信箱裡收信,這次果然看到有內容的信了!

image

點選該連結,果然如下圖可以完成註冊登入的動作。

image

2011年4月2日 星期六

轉換合併字幕影片檔的軟體

1.mp4與sub字幕的合併可用KMPlayer來合併,用法如下:

一般mp4的字幕檔包含兩個格式.sub與.idx兩部份。可用KMPlayer將同檔名的.mp4播放,KMPlayer會自動掛載字幕檔,在影片裡看到字幕檔後

image

image

做好設定之後再按下「開始」即開始擷取,然後回到KMPlayer按「播放」鈕播放,

image

待播放完即完成擷取合併工作了!

2.內含字幕的mkv可用superOK去轉出含字幕的avi檔

2011年3月16日 星期三

我透過windows client端,透過事件控制,windows自動發布一個指令連上B linux伺服主機,並利用B linux伺服主機關閉A linux伺服主機的方法

由於有些ups不斷電系統支援斷電時,自動關閉伺服器的功能,我手邊就有這樣一個ups,然而它雖說有支援linux,實際上我雖將它的控制程式安裝起來了,也捉的到該ups卻真的遇到停電時,它卻無法真的做到自動關機與重開機。

所以我現在只好做另一種嘗試,那就是在該ups上接兩台pc,一台是A linux server,一台是windows client,然後透過windows client端,當斷電事件發生時,windows client會自動發布一個指令連上B linux伺服主機(windows client能直接透過ssh連線),並利用B linux伺服主機關閉A linux伺服主機(與B linux伺服主機同一個網段裡,但被router限制,所以雖與windows client接在同一個ups上,卻不能被windows client直接透過ssh連線)。

為了達到這個目的,我做了如下動作:

windows client安裝ups for windows的控製程式,並設定當斷電時,自動執行這個程式指令:

plink -P 端口 用戶帳號@B主機IP –pw 密碼 sh halt204

2011年3月12日 星期六

我的linux系統硬碟掛載方式

檔案系統               1K-區段      已用     可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol00
                     113410608  12249788  95306820  12% /
/dev/sda1             19919336    235208  18654668   2% /boot
tmpfs                  1553280         0   1553280   0% /dev/shm
/dev/sdb1  /var/www/g2data  ext3  nosuid,noexec,nodev  0  0
/dev/sdc1  /var/www/html  ext4  nosuid,noexec,nodev  0  1

有黃色底色者為另外兩顆獨立硬碟,用以放置網路應用之系統及其資料
擴充資料碟空間時,先準備兩顆大容量硬碟,分別mount到任意路徑位置,在此先假設分別為/dev/dirk1,及/dev/dirk2兩個目錄,接著分別將/var/www/g2data的所有資料(含目錄結構及檔案屬性)完整拷備到到/dev/dirk1這個目錄(以cp –a /var/www/g2data/* /dev/dirk1/),及/var/www/html的所有資料(含目錄結構及檔案屬性)完整拷備到到/dev/dirk2這個目錄(以cp –a /var/www/html* /dev/dirk2/),若系統碟重灌,還必須將mysql的所有資料拷備(因為資料庫資料是放在系統碟裡)到手邊的其他資料庫備份碟裡(此硬碟也必須掛載到某個目錄裡,然後執行指令 cp –a /var/lib/mysql/* 掛載的目錄/ 完成資料庫備份工作),接著再將/dev/sdc1及/dev/sdb1分別解載,這時原來系統碟仍然會有/var/www/g2data及/var/www/html這兩個目錄,只是其中沒有任何檔案,若移機(即系統碟重灌)在新的主機上將linux系統灌起,而後再將兩顆新的大容量硬碟依原資料位置分別掛載到/var/www/g2data及/var/www/html這兩個目錄裡,備份的資料庫複製回/var/lib/mysql這個目錄裡(cp –a 掛載的目錄/* /var/lib/mysql/ )原則上只要是系統碟的主要程式與原系統碟安裝的相同,應該就可以運作了。若只是擴充資料碟空間,則資料庫的動作就不必做了!