網絡技術日誌

關於 PHP, Linux, Open Source 及個人生活記載的網誌。

Entries for August, 2007

MySQL 編碼函式

MySQL 內建提供了一些編碼函式,以下會介紹 ENCODE() 及 DECODE() 的作用及用法: ENCODE(str,pass_str) 將字串 str 加密,並使用 "pass_str" 作為加密鑰匙,例如: mysql> select encode("testing string", "mykey"); + – – – – – – – – – – – – – – – – – + | encode(“testing string”, “mykey”) | + – – – – – – – – – – – – – [...]

Leave a Comment

限制 MySQL 只接受 localhost 連線

在預設的情況下 MySQL 接受所有連線,這個不是指 MySQL 的權限設定,而是 MySQL 有監聽它所使用的埠號。例如用 netstat 檢查會得出這個結果: # netstat -an | grep 3306 tcp4 0 0 *.3306 *.* LISTEN   以下是在 FreeBSD 設定只接受 localhost 連線的方法: 1. 開啟 /etc/rc.conf 2. 加入 mysql_args: mysql_enable="YES" mysql_args="–bind-address=127.0.0.1"   3. 重新啟動 mysql # /usr/local/etc/rc.d/mysql-server.sh restart   現在可以再用 netstat 檢查一下,可以見到 MySQL 只監聽 127.0.0.1 的 3306 埠號: # netstat -an [...]

Comments (1)

PHP 讀取多重選項清單

在製作 HTML 表單的清單時,可以用 multiple 屬性讓使用者透過 Ctrl 鍵一次過選擇多個選項,例如: PLAIN TEXT HTML: <form method="post"> <select name="box" multiple="multiple"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </form> 但上面的 HTML 碼所傳送的 value 不能給 PHP 正確讀取,因為當同時選擇多個選項時,PHP 只可以讀取一個 value。要修正可以更改 select 的名稱,例如: PLAIN TEXT HTML: <form method="post"> <select name="box[]" multiple="multiple"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </form> 當傳送給 PHP 後,使用者所選取的選擇會放到 $_POST['box'] 陣列內。

Leave a Comment

Freebsd 找出空密碼帳號

有些系統用戶並沒有設定密碼,基於安全考慮,最好找出所有空密碼的帳號並暫時禁止登入。在 FreeBSD 可以透過 awk 在檔案 /etc/master.password 找出空密碼帳號,切換到 root 並輸入以下指令: # awk -F: 'NF > 1 &&amp; $1 !~ /^[#+-]/ && $2=="" {print $0}' /etc/master.passwd   以上指令會用 awk 掃瞄 /etc/master.passwd,並以 : 作為分隔字串。並且找出 password 欄位 ($2) 空白的內容。如果系統內有空密碼帳號,便會用以下格式顯示: username::1099:1099::0:0:User &:/home/username:/bin/bash 當發現有空密碼帳號後,可以用以下指令進行 lock 及 unlock 的動作: lock user  # pw lock username   unlock user  # pw unlock username

Leave a Comment

PHP 檢查信用卡號碼

現在網上購物越來越普及,所以對信用卡號碼的檢查也變得重要。要檢查信用卡號碼,一般可以用 LUHN 演算法來實現。現在大部份的主要信用卡也是使用 LUHN 演算法,包括 Visa, Master Card, American Express 及 Discover 等。LUHN 演算法只可以檢查信用卡號碼的合法性,而不會檢查信用卡其他資訊,包括是否過期。使用方法為: 1. 檢查信用卡號碼是否 16 位。 2. 將信用卡號碼切割成 16 個個別數字。 3. 將上面切割得的所有數字,由左至右起計,每逄單數位置的數值乘 2。 4. 將加總後所有結果都切割成個別數字再相加。 5. 將上面求得的總數求出 10 的餘數,如果餘數是 0 便表示信用卡號碼正確,否則便是錯誤。 以下是 PHP 使用 LUHN 演算法檢查信用卡號碼的函式: PLAIN TEXT PHP: <?php /* luhn_checker(): This is a small PHP function for checking valid * * [...]

Leave a Comment

PHP 列出目錄內容

以下是用 PHP 列出目錄內容的方法,當然也可以略為修改以程式碼改為 function 使用: PLAIN TEXT PHP: <?php // 定義要開啟的目錄 $dir = "/var/www/vhosts/dir";   // 用 opendir() 開啟目錄,開啟失敗終止程式 $handle = @opendir($dir) or die("Cannot open " . $dir);   echo "<b>Files in " . $dir . ":</b><br/>";   // 用 readdir 讀取檔案內容 while($file = readdir($handle)){     // 將 "." 及 ".." 排除不顯示     [...]

Leave a Comment

匯豐以股代息

買入匯豐後,第一次收到銀行寄來的以股代息意向書,我選擇了全數以股票方式收取股息。股息要在 10 月 4 日才收到,要等到收到股息後才知道換股價。說實在的,現在匯豐的市價真的十分抵買,PE 及 PB 均明顯偏低,以現價計算,明年的股息率最少有 5 厘。

Leave a Comment

在 Linux 變更多個檔案副檔名

假如想變改當前目錄下所有檔案的副檔名,可以用一個 loop 完成:   for old in *.php5; do mv $old `basename $old .php5`.php; done   上面指令會在當前目錄裡面搜索所有 ".php5" 副檔名的檔案,然後逐一用 mv 變更為 ".php" 副檔名。

Comments (3)

Python 連接 MySQL

MySQL 是十分流行的開源資料庫系統,很多網站也是使用 MySQL 作為後台資料儲存,而 Python 要連接 MySQL 可以使用 MySQL 模組。MySQLdb 模組可以讓 Python 程式連線到 MySQL server, 執行 SQL 語句及擷取資料等。 開始前要確定系統內的 Python 有安裝 MySQLdb 模式,你可以 Python command line interpreter 檢查,在指令模式輸入 python,然後便可以開始檢查: Python 2.5.1 (r251:54863, May 2 2007, 16:56:35) [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import MySQLdb Traceback [...]

Comments (2)

PHP 透過 SMTP 發送郵件

PHPMailer 是一個功能豐富的函式庫,以下是用 PHPMailer 通過遠端 SMTP 認證發送郵件的例子: PLAIN TEXT PHP: <?php // 建立 PHPMailer 物件及設定 SMTP 登入資訊 require("../phpMailer/class.phpmailer.php"); $mail = new PHPMailer(); $mail->IsSMTP(); // send via SMTP $mail->Host = "remote.smtp.server"; // SMTP servers $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Username = "me@localhost"; // SMTP username $mail->Password = "123456"; // SMTP password   $mail->From = [...]

Comments (2)

開發 PHP5 的多工應用

一直我也以為 PHP 沒有支援像 Java 或 C++ 的 threading 的功能,所以不可以寫到 multi-task (多工) 的應用程式。例如當應用程式需要擷取其他網站的內容,應用程式會延遲執行,直至完成擷取遠端的資料為止。原來現在已經可以用 stream_select 及 stream_socket_client 實現 PHP multitasking。 這篇在 developerWorks 的文章介紹了在 PHP 的 multitasking 及 threading: Develop multitasking applications with PHP V5 昨天的股市真的如坐過山車,我只在收市看見點數跌二百多點,那時以為跌得不多,誰知原來曾跌過 1285 點。無論如何,自己也沒有在這次調整估貨,反而會看看星期一有沒有買貨的機會。我的兩隻千里馬招商銀行 (3968) 及平安保險 (2318) 公佈了中期業績,也交出了理想的成績單,對於有實質盈利支持的股份,在跌市時才也會較有信心。

Comments (1)

讓 crontab 自動排程執行 php

要用 crontab 自動執行 php 程式,可以這樣做: 方法一 1. 在 php 程式的第一行加入: #!/usr/local/php/bin/php -q 例如: PLAIN TEXT PHP: #!/usr/local/php/bin/php -q <?php $foo = 123; ?> 請留意,我的 php 是安裝在 /usr/local/php,請根據你的 php 執行檔位置作出修改。 2. 將 php 程式給予可執行權限: chmod +x testing.php 3. 執行 crontab -e,然後加入以下內容: 00 00 * * * /path/to/testing.php > /dev/null 2>&2 以上語法會在每天的零時零分執行 /path/to/testing.php 方法二 另一個方法是不用在 php 程式的第一行加入 [...]

Comments (2)

開始了月供股票計劃

比較過幾間銀行的月供股票計劃後,覺得中銀的計劃最適合自己,星期五登記了計劃,今個月十號開始扣數。 股票選擇了 <2318> 平安保險及 <3968> 招商銀行。媽媽問為何股市升到這麼高點還要供款,這就是月供股票的優點。因為每月固定供款是使用了平均成本法,當股價下調時便買入較多股數;當股價上升便買入較少股數。這樣就無需在乎股價的短線波動,只要供款的股票長線上升就可以了,而且什麼時候開始也沒問題。 個人認為收費十分便宜,每月收取供款額的 0.25%,或者最低 $50 的收費,當中已包括佣金、印花稅、交易徵費及交易處理費。而且供款十分靈活,可以隨時暫停供款及重新開始。這個費用已經比起很多基金的 5% 認購費 + 每年 1% 至 2.5% 的管理費便宜。 現時自己的基金不會斷供,如果中途斷供會被徵收費用,只是往後自己想增加投資儲蓄時,會偏向月供股票的形式。因為我覺得如果連同交易費用一同計算,自己選股取得的回報率不會比基金低,且看看這決定是否正確。

Comments (2)

跌市沒什麼好怕

今日恆指最多跌過 975 點,收市跌幅收窄為跌 729 點。可能有些人很怕股市下調,但我已經開始沒什麼感覺,因為自己沒有打算沽貨,所以早前股市創新高也只不過是 "紙上富貴"。而自己心目中的優質股裡面,除了匯豐外,其他也升到一個不合理的水平,如果可以調整一下,反而給予自己買入的機會。至於自己的理財目標,就是 40 歲達致財務自由,即靠股息/利息收入足夠支付自己的生活費。 昨天減持手上的中石油,原因很簡單,股神巴菲特減持對我的心理影響頗大。正因如此,今天剛好有一點資金買貨,將原本沽出中石油的錢以 $63.2 增持了平保。

Leave a Comment