Tag: PHP
很多時在廣用程式需要產生隨機密碼, 在 PHP 產生隨機密碼有不同方法可以實現, 以下會介紹透過 str_shuffle() 實現的方法。str_shuffle() 的作用是隨機打亂字串內字符的順序, 然後再用 substr() 抽出想要隨機密碼的長度:
LAMP 是 Linux + Apache + MySQL + PHP 的縮寫, 但從 RHEL / CentOS 7 開始已經不會內置 MySQL, 改為使用 MariaDB, MariaDB 使用上與 MySQL 相同, 舊有的 MySQL 資料庫也可以直接升級使用, 這裡也會介紹安裝 Apache + …
早前把 PHP 升級到 5.4, 發現原來可以正常運作的 PHP 程式出現以下 error: Fatal error: Call to undefined function session_register() 這個 error 就是用了未定義的函式 session_register(), 原本這個應該是 PHP 內建的,查看一下官方網站,原來 PHP 5.4 開始取消了 session_register(), session_unregister() 及 session_is_registered() …
如果應用程式是開放給公眾使用, 過濾輸入資料的字元十分重要, 在 PHP 可以透過正規表達式做特定字元的檢查及過濾。 例如想將輸入的資料裡面全部非字母/數字的字元過濾可以這樣做: 這樣會印出: this is a teting 以上 preg_replace() 用的正規表達式會將英文字母, 數字及空格以外的其他字串過濾掉, 如果想將特別符號留下, 不想要字母, 數字及空格, 可以這樣: 這樣會印出: %%%&&&
RHEL / CentOS 4 預設的 PHP 版本是 5.3, 以下會介紹在 CentOS 6 透過 Yum 安裝 PHP 5.4 的方法: 1. 安裝 SCL repo # yum install centos-release-SCL 2. 安裝 php 5.4 …
鎖定檔案的目的是為了避免程式間的沖突,例如開啟了一個檔案要寫入資料,但如果未寫入時有另一個程式更新這個檔案,便會出現問題,PHP 內建有 flock() 可以對檔案鎖定,操作如下: flock() 第二個參數是設定鎖定或解鎖, 詳細可設定內容為: — LOCK_SH, 取得共享鎖定, 讀取用 — LOCK_EX, 取得獨佔鎖定, 寫入用 — LOCK_UN, 解除鎖定 — LOCK_NB, 不要讓 flock() 在鎖定時堵塞
有時想幾行字串看起來更整齊, 可以將短字串補上空白, 例如: Name: My Name Tel: 1234 5678 Website: http://phpini.com/ 可以看到上面的 Name: 及 Tel: 後面被上空格, 看上去跟 Website: 對齊, 在 PHP 可以用 str_pad() 做. 例如上面的例子,字串最長的 Website: 有 …
在 PHP shell_exec() 及 system 都可以執行外部指令, 使用上它們的分別主要來自回傳及輸出。 shell_exec(): 執行外部指令並回傳執行結果, 但不會印出執行結果: 而執行 shell_exec() 另一種方法是用 “" 符號 (按住 Shift 再按 1 那個), 例如 ls -l` 跟 shell_exec(“ls -l”) 是一樣的。 system(): 會執行外部指令並直接印出指令結果, …
PHP 內建的 substr 函式可以分割文字,但要分割的文字如果包括有中文字往往會遇到問題,這可以用 mb_substr() 來做。mb_substr() 的用法與 substr() 很相似,只是在 mb_substr() 最後要加入多一個參數,以設定字串的編碼,但要先讓 PHP 支援 mbstring 才可以。 在編譯 PHP 時加入 –enable-mbstring 選擇就可以加入 mbstring 模組了。以下是 mb_substr() 的使用方法: 以上的第三行要注意,將 BIG-5 修改成中文字所用的編碼,例如 UTF-8。
當用戶數量比較多時,用資料庫儲存用戶名稱及密碼是很好的選擇,但如果直接將用戶的密碼儲存在資料庫,即使資料庫要密碼才可以登入也有安全性的問題。例如系統管理員或者 Web Hosting 的員工便可以看到用戶的密碼,所以先將用戶密碼加密是必要的步驟。 PHP 內建了 MD5() 單向加密演算法,即只可加密,而不可以反向解密,以下是利用 MD5() 函式的具體方法: 這裡是將用戶密碼用 MD5() 加密後加插入資料庫: 檢查用戶名稱及密碼: 用以上方法寫出來的登入系統,只用用戶是知道自己的密碼,系統管理員最多只能夠修改密碼,而不能看到源始密碼是什麼。