PHP Programming Tutorials, Tips and Scripts
http://dev.fyicenter.com/faq/php/
標籤: PHP
感謝 DB Demo 順利
今天的大事,就是 DataBase 的期末專題 Demo。
因為我只會 PHP 所以寫小小的考古題系統,今天 Demo 還算順利只是網路很不穩定而已。雖然說小系統,不過我犧牲了一週的睡眠時間把操作和以前學到的技術放進去,目前做到檔案下載位置隱藏、Paros 測不到 SQL injection。不過搜尋功能作的自己很不滿意,之後可能在慢慢改吧。
Demo 後助教的評分是 8 + 10 + 9 + 9,辛苦總算沒有白費 ~”~
不過今天還是不能太早睡,人機介面還有二個 Demo,其中還有一個要做問卷調查,也就是說今年過年真的要守歲啦 XD
在網頁中嵌入 FCKeditor by PHP
網路上的所見即得編輯器真多,昨天為了讓使用者不用自己打 HTML 標籤,花了一些時間把 FCKeditor 嵌入網頁中使用,功能比我想像中的還要強大!不但基本該有的按鈕都有了,還支援復原、剪貼簿、圖片和檔案上傳、表格、排版,甚至還能編輯表單!連在網頁上面顯示的工具列也可以自訂按鈕功能和版面樣式!
功能強但是安裝卻很簡單,只要在 PHP 程式碼中也只要加入五行左右的程式碼就可以正常運作,不賴吧?
首先你必須先引用 FCKeditor 已經寫好的程式碼,裡面會宣告編輯器所用到的物件和物件屬性:require("fckeditor/fckeditor.php");
再來就可以宣告編輯器物件,並且對物件屬性做設定:
$oFCKeditor = new FCKeditor('FCKeditor1');
$oFCKeditor->BasePath = 'fckeditor/';
$oFCKeditor->Value = 'Default text in editor';
第一行 initialize 中的字串,是產生文字編輯區時編輯區的名稱,也就是 textarea 的 name 屬性,以上面的範例來說,後端要接收資料就要使用:$_POST[‘FCKeditor1’]。
第二行是設定 FCKeditor 程式所在位置,如果沒有設定好,會無法載入 Javascript 和 CSS 檔,到時候網頁會無法顯示。第三行則是文字編輯區預設會出現的文字。
最後在 <form></form> 中間加上:$oFCKeditor->Create();
這樣顯示出來大概會向這樣:
再來我們加入二個參數來設定編輯器預設的大小:
$oFCKeditor->Width = '100%';
$oFCKeditor->Height = '400';
如果你不喜歡預設的版面,FCKeditor 有提供 office2003 和 silver 的版面可以更換,只要加入版面路徑到參數裡面就可以了:$oFCKeditor->Config['SkinPath'] = 'skins/office2003/';
當然 FCKeditor 的功能不只如此,其他功能在官方的部落格都有詳細的說明。
PHP counter by file IO
PHP 計數器,使用檔案讀寫的方式實作。
counter.php:
<?php
$pt = @fopen("log","r");
if( $pt ){
$size = filesize("log")==0?1:filesize("log");
$num = fread($pt,$size);
fclose($pt);
if( !is_numeric($num) ){
$num = 0;
}
$num++;
$pt = fopen("log","w");
fwrite($pt,$num);
fclose($pt);
}else{
$num=1;
$pt = fopen("log","w");
fwrite($pt,$num);
fclose($pt);
}
echo $num." 人次";
?>
PHP avoid SQL injection 2
之前在網路上找到一個函式可以分辨 php.ini 是否有開啟 magic_quote 並且把傳入的字串做處理:
function quotes($content){
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}
不過因為一個表單的欄位絕對不只十幾個,有可能超過一百的欄位,所以每次用到一個欄位就要自己打一次 $variabal = quotes( $variable ) 實在很不方便。
我想偷懶,所以用 foreach 把 $_POST 和 $_GET 的值一次處理完丟到 $http_post 和 $http_get 中,只要程式執行前執行一次所有欄位就全部處理完了。
function quotes($content){
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}
foreach( $_POST as $key => $value ){
$http_post[$key] = quotes( $value );
}
foreach( $_GET as $key => $value ){
$http_get[$key] = quotes( $value );
}
