Tag: PHP

PHP 产生随机密码

很多时在广用程式需要产生随机密码, 在 PHP 产生随机密码有不同方法可以实现, 以下会介绍透过 str_shuffle() 实现的方法。str_shuffle() 的作用是随机打乱字串内字符的顺序, 然后再用 substr() 抽出想要随机密码的长度:

PHP 5.4 的 session 新写法

早前把 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 检查及过滤字符

如果应用程式是开放给公众使用, 过滤输入资料的字符十分重要, 在 PHP 可以透过正规表达式做特定字符的检查及过滤。 例如想将输入的资料里面全部非字母/数字的字符过滤可以这样做: 这样会印出: this is a teting 以上 preg_replace() 用的正规表达式会将英文字母, 数字及空格以外的其他字串过滤掉, 如果想将特别符号留下, 不想要字母, 数字及空格, 可以这样: 这样会印出: %%%&&&

PHP 锁定档案

锁定档案的目的是为了避免程式间的冲突,例如开启了一个档案要写入资料,但如果未写入时有另一个程式更新这个档案,便会出现问题,PHP 内建有 flock() 可以对档案锁定,操作如下: flock() 第二个参数是设定锁定或解锁, 详细可设定内容为: — LOCK_SH, 取得共享锁定, 读取用 — LOCK_EX, 取得独占锁定, 写入用 — LOCK_UN, 解除锁定 — LOCK_NB, 不要让 flock() 在锁定时堵塞

PHP 字串对齐函式: str_pad()

有时想几行字串看起来更整齐, 可以将短字串补上空白, 例如: Name:   My Name Tel:     1234 5678 Website: http://phpini.com/ 可以看到上面的 Name: 及 Tel: 后面被上空格, 看上去跟 Website: 对齐, 在 PHP 可以用 str_pad() 做. 例如上面的例子,字串最长的 Website: 有 …

PHP shell_exec() 及 system() 的分别

在 PHP shell_exec() 及 system 都可以执行外部指令, 使用上它们的分别主要来自回传及输出。 shell_exec(): 执行外部指令并回传执行结果, 但不会印出执行结果: 而执行 shell_exec() 另一种方法是用 “" 符号 (按住 Shift 再按 1 那个), 例如 ls -l` 跟 shell_exec(“ls -l”) 是一样的。 system(): 会执行外部指令并直接印出指令结果, …

PHP 分割中文字

PHP 内建的 substr 函式可以分割文字,但要分割的文字如果包括有中文字往往会遇到问题,这可以用 mb_substr() 来做。mb_substr() 的用法与 substr() 很相似,只是在 mb_substr() 最后要加入多一个参数,以设定字串的编码,但要先让 PHP 支援 mbstring 才可以。 在编译 PHP 时加入 –enable-mbstring 选择就可以加入 mbstring 模组了。以下是 mb_substr() 的使用方法: 以上的第三行要注意,将 BIG-5 修改成中文字所用的编码,例如 UTF-8。

PHP 加密在数据库的密码

当用户数量比较多时,用数据库储存用户名称及密码是很好的选择,但如果直接将用户的密码储存在数据库,即使数据库要密码才可以登入也有安全性的问题。例如系统管理员或者 Web Hosting 的员工便可以看到用户的密码,所以先将用户密码加密是必要的步骤。 PHP 内建了 MD5() 单向加密算法,即只可加密,而不可以反向解密,以下是利用 MD5() 函式的具体方法: 这里是将用户密码用 MD5() 加密后加插入数据库: 检查用户名称及密码: 用以上方法写出来的登入系统,只用用户是知道自己的密码,系统管理员最多只能够修改密码,而不能看到源始密码是什么。