Category: PHP
在 PHP 内有一个安全选项是 open_basedir,这个选项是限制 PHP 可以开启的目录,可以透过 php.ini 及 httpd.conf 设定,而我一直也有使用这个选项。 今天 server 要改一些设定,要将两个目录加入 open_basedir 内,发现用论用空格、逗号、分号来区隔两个目录都不行,而根据 PHP 官方网站的说法,这个选择是支援多个目录的。在 google 找了一下,原来要用冒号来区隔两个目录,例如: open_basedir “/path/dir1/:/var/tmp/”
如果发现某些 ip 的用户在网站上捣乱,可以将他/她的 ip 封杀,这不但可以停止捣乱行为,也可以减少主机的资源浪费及频宽,以下介绍透过 PHP 及 Apache 的 .htaccess 的实现方法。 PHP 如果要阻挡的 ip 不多,可以直接加上以下一行到程式顶端: 以上程式码很简单,只要检查访客的 ip 是否 192.168.1.101,如果正确则结束程式罢了,但这样的问题是当要阻挡的 ip 数量增多时,需要每次都在以上程式码上加上 ip,要维护很不方便。以下的方法是使用文字档储存了要阻挡的 ip,每一行一笔资料,档案为 ban_ip_list.dat,实现方法如下: 以上第一行是从 ban_ip_list.dat 读入每一行资料,并储存到 $banned 阵列内,然后用 …
要用 PHP 取得用户的 IP 十分容易,只要用 $_SERVER 变量就可以知道用户的 IP,但如果用户使用了 proxy server 上网的话,$_SERVER 只会得到 proxy 的 IP 地址。 以下方法会使用 $_SERVER 及 $_SERVER 解决这个问题:
PHP 的 is_file() 及 file_exists() 都是用作检查档案是否存在,它们的分别是 file_exists() 输入的参数是目录也会回传 TRUE,而 is_file() 则只会对档案回传 TRUE: 但如果用 is_file(),即使 /path/to/dir 目录存在,仍然会回传 FALSE:
很多情况下 PHP 需要定时自动执行,这个可以用 Crontab 排程定时执行实现,以下是几种实现方法: 方法一: 1. 在 PHP 程式的第一行加入: 请留意,我的 PHP 是路径在 /usr/bin/php,请根据你的 PHP 执行档位置作出修改。 2. 将 PHP 程式给予可执行权限: chmod +x testing.php 3. 执行 crontab -e,然后加入以下内容: 00 00 …
基于 HTTP 协定的限制,要实现统计线上人数会很困难。而现时大部份网站或论坛所使用的方法是,统计在过去某段时间内有所活动的访客,便计算为线上人数,本文会介绍使用 PHP + MySQL 制作一个线上人数计数器。 在开始前请先确定网页服务器支援 PHP,以及有一个可用的 MySQL 数据库,如果没有 MySQL 数据库,请向你的系统管理员或网页寄存供应商查询。 建立数据库 第一步需要先建立一个 MySQL 资料表,可以在文字模式或 phpmyadmin 下执行以下 SQL 语句: PHP 程式码 当建立以上资料表后,便可以编写 PHP 程式了,以下例子假设你的 MySQL 登入资料如下: Host: …
如果网站内有些网页只希望提供给管理员,那么便需设置一个密码认证功能。在 PHP 中制作密码认证的方法有好几种,以下介绍较为简单的 HTTP authentication。 需要 PHP 在 Apache module 下执行才有这功能,而在 IIS 及 PHP 使用 CGI Mode 安装则没有这个功能。 HTTP authentication PHP 内实现 HTTP authentication 的原理是使用 header() 传送一个 “Authentication Required” …
建文 HTML 表单 要制作用作上传档案的表单与传统的表单差不多,但必须将表单中的 enctype 属性设成 multipart/form-data。enctype 属性是指定浏览器对表单中的参数进行编码的方法,默认值为 application/x-www-form-urlencoded。 以下是建立表单的例子: upload.html 处理上传档案 建立了以上的 HTMl 表单后,下一步要做的就是后端的处理。在 PHP 中可以透过二维阵列 $HTTP_POST_FILES 或 $_FILES 来存取所上传的档案详细内容。就以以上表单为例,输入元素名为 userfile,各阵列元素为: $_FILES — 档案在客户端电脑上的档案名称 $_FILES — 档案的 MIME …
要用 PHP 自动创建一个图片的缩图,做法十分简单,因为 PHP 已内建了相关函式。本文将会介绍制作缩图的巨体做法。 (Web Server 需要 GD 支援) imagecopyresized PHP 已经内建了制作缩图的函式,它是 imagecopyresized,以下是 imagecopyresized 的语法: int imagecopyresized ( resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, …
有时需要将数据库内的资料或 PHP 的动态内容储存成 excel 档,本文会介绍一个概简单又实用的方法。 建立 Excel 档案 如果需要用 PHP 建立 Excel 档案,只需用一般的档案处理函式,而档案名称储存成 .xls 副档名即可,例如: 以上程式码会在 excel 目录建立一个名为 filename.xls 的档案,内容是在第一行写入一星期七天的英文简写,每一栏一天。 实际上与建立一般文字档的方法一样,只是如果要跳到下一个字段,就用 \t 字符,而要跳到下一行,则用 \n 字符。 显示下载窗口 如果电脑内有安装 Excel 的话,在默认情况下当在 …