2007年11月9日 星期五

PHP源碼-利用 QQWry.Dat 實現 IP 地址高效檢索

根據 LumaQQ 開發者文檔中的純真 IP 數據庫格式詳解,我編寫了一個 PHP 的查詢 IP 所在地區信息的類。在編寫過程中發現純真 IP 數據庫格式詳解中關於記錄區的描述不是很全面,不過出入也不是很大,所以我沒必要再寫一份純真 IP 數據庫的格式說明了,大家感興趣的話,讀一讀下面的代碼應該就能看出來了。代碼中加了很詳細的註釋,應該很容易讀懂的。

在創建這個類的一個實例後,實例中就保存了打開的文件指針和一些查詢需要的信息,每次查詢時不需要重新打開文件,直到頁面執行結束後,打開的文件才會自動關閉。這樣。在一個頁面內進行多次查詢時,效率是很高的。並且此類不僅可以直接查詢 IP,還可以自動將域名解析為 IP 進行查詢。

下面是程序代碼:


--------------------------------------------------------------------------------

/**
* IP 地理位置查詢類
*
* @author 馬秉堯
* @version 1.5
* @copyright 2005 CoolCode.CN
*/
class IpLocation {
/**
* QQWry.Dat文件指針
*
* @var resource
*/
var $fp;

/**
* 第一條IP記錄的偏移地址
*
* @var int
*/
var $firstip;

/**
* 最後一條IP記錄的偏移地址
*
* @var int
*/
var $lastip;

/**
* IP記錄的總條數(不包含版本信息記錄)
*
* @var int
*/
var $totalip;

/**
* 返回讀取的長整型數
*
* @access private
* @return int
*/
function getlong() {
//將讀取的little-endian編碼的4個字節轉化為長整型數
$result = unpack('Vlong', fread($this->fp, 4));
return $result['long'];
}

/**
* 返回讀取的3個字節的長整型數
*
* @access private
* @return int
*/
function getlong3() {
//將讀取的little-endian編碼的3個字節轉化為長整型數
$result = unpack('Vlong', fread($this->fp, 3).chr(0));
return $result['long'];
}

/**
* 返回壓縮後可進行比較的IP地址
*
* @access private
* @param string $ip
* @return string
*/
function packip($ip) {
// 將IP地址轉化為長整型數,如果在PHP5中,IP地址錯誤,則返回False,
// 這時intval將Flase轉化為整數-1,之後壓縮成big-endian編碼的字符串
return pack('N', intval(ip2long($ip)));
}

/**
* 返回讀取的字符串
*
* @access private
* @param string $data
* @return string
*/
function getstring($data = "") {
$char = fread($this->fp, 1);
while (ord($char) > 0) { // 字符串按照C格式保存,以\0結束
$data .= $char; // 將讀取的字符連接到給定字符串之後
$char = fread($this->fp, 1);
}
return $data;
}

/**
* 返回地區信息
*
* @access private
* @return string
*/
function getarea() {
$byte = fread($this->fp, 1); // 標誌字節
switch (ord($byte)) {
case 0: // 沒有區域信息
$area = "";
break;
case 1:
case 2: // 標誌字節為1或2,表示區域信息被重定向
fseek($this->fp, $this->getlong3());
$area = $this->getstring();
break;
default: // 否則,表示區域信息沒有被重定向
$area = $this->getstring($byte);
break;
}
return $area;
}

/**
* 根據所給 IP 地址或域名返回所在地區信息
*
* @access public
* @param string $ip
* @return array
*/
function getlocation($ip) {
if (!$this->fp) return null; // 如果數據文件沒有被正確打開,則直接返回空
$location['ip'] = gethostbyname($ip); // 將輸入的域名轉化為IP地址
$ip = $this->packip($location['ip']); // 將輸入的IP地址轉化為可比較的IP地址
// 不合法的IP地址會被轉化為255.255.255.255
// 對分搜索
$l = 0; // 搜索的下邊界
$u = $this->totalip; // 搜索的上邊界
$findip = $this->lastip; // 如果沒有找到就返回最後一條IP記錄(QQWry.Dat的版本信息)
while ($l <= $u) { // 當上邊界小於下邊界時,查找失敗
$i = floor(($l + $u) / 2); // 計算近似中間記錄
fseek($this->fp, $this->firstip + $i * 7);
$beginip = strrev(fread($this->fp, 4)); // 獲取中間記錄的開始IP地址
// strrev函數在這裡的作用是將little-endian的壓縮IP地址轉化為big-endian的格式
// 以便用於比較,後面相同。
if ($ip < $beginip) { // 用戶的IP小於中間記錄的開始IP地址時
$u = $i - 1; // 將搜索的上邊界修改為中間記錄減一
}
else {
fseek($this->fp, $this->getlong3());
$endip = strrev(fread($this->fp, 4)); // 獲取中間記錄的結束IP地址
if ($ip > $endip) { // 用戶的IP大於中間記錄的結束IP地址時
$l = $i + 1; // 將搜索的下邊界修改為中間記錄加一
}
else { // 用戶的IP在中間記錄的IP範圍內時
$findip = $this->firstip + $i * 7;
break; // 則表示找到結果,退出循環
}
}
}

//獲取查找到的IP地理位置信息
fseek($this->fp, $findip);
$location['beginip'] = long2ip($this->getlong()); // 用戶IP所在範圍的開始地址
$offset = $this->getlong3();
fseek($this->fp, $offset);
$location['endip'] = long2ip($this->getlong()); // 用戶IP所在範圍的結束地址
$byte = fread($this->fp, 1); // 標誌字節
switch (ord($byte)) {
case 1: // 標誌字節為1,表示國家和區域信息都被同時重定向
$countryOffset = $this->getlong3(); // 重定向地址
fseek($this->fp, $countryOffset);
$byte = fread($this->fp, 1); // 標誌字節
switch (ord($byte)) {
case 2: // 標誌字節為2,表示國家信息又被重定向
fseek($this->fp, $this->getlong3());
$location['country'] = $this->getstring();
fseek($this->fp, $countryOffset + 4);
$location['area'] = $this->getarea();
break;
default: // 否則,表示國家信息沒有被重定向
$location['country'] = $this->getstring($byte);
$location['area'] = $this->getarea();
break;
}
break;
case 2: // 標誌字節為2,表示國家信息被重定向
fseek($this->fp, $this->getlong3());
$location['country'] = $this->getstring();
fseek($this->fp, $offset + 8);
$location['area'] = $this->getarea();
break;
default: // 否則,表示國家信息沒有被重定向
$location['country'] = $this->getstring($byte);
$location['area'] = $this->getarea();
break;
}
if ($location['country'] == " CZ88.NET") { // CZ88.NET表示沒有有效信息
$location['country'] = "未知";
}
if ($location['area'] == " CZ88.NET") {
$location['area'] = "";
}
return $location;
}

/**
* 構造函數,打開 QQWry.Dat 文件並初始化類中的信息
*
* @param string $filename
* @return IpLocation
*/
function IpLocation($filename = "QQWry.Dat") {
if (($this->fp = @fopen($filename, 'rb')) !== false) {
$this->firstip = $this->getlong();
$this->lastip = $this->getlong();
$this->totalip = ($this->lastip - $this->firstip) / 7;
//註冊析構函數,使其在程序執行結束時執行
register_shutdown_function(array(&$this, '_IpLocation'));
}
}

/**
* 析構函數,用於在頁面執行結束後自動關閉打開的文件。
*
*/
function _IpLocation() {
fclose($this->fp);
}
}
?>

讀取漢字點陣數據

/**
* 讀取漢字點陣數據
*
* @author legend
* @link http://www.ugia.cn/?p=82
* @Copyright www.ugia.cn
*/

$str = "中華人民共和國";

$font_file_name = "mingliu12.fon"; // 點陣字庫文件名
$font_width = 12; // 單字寬度
$font_height = 12; // 單字高度
$start_offset = 0; // 偏移

$fp = fopen($font_file_name, "rb");

$offset_size = $font_width * $font_height / 8;
$string_size = $font_width * $font_height;
$dot_string = "";

for ($i = 0; $i < strlen($str); $i ++)
{
if (ord($str{$i}) > 160)
{
// 先求區位碼,然後再計算其在區位碼二維表中的位置,進而得出此字符在文件中的偏移
$offset = ((ord($str{$i}) - 0xa1) * 94 + ord($str{$i + 1}) - 0xa1) * $offset_size;
$i ++;
}
else
{
$offset = (ord($str{$i}) + 156 - 1) * $offset_size;
}

// 讀取其點陣數據
fseek($fp, $start_offset + $offset, SEEK_SET);
$bindot = fread($fp, $offset_size);

for ($j = 0; $j < $offset_size; $j ++)
{
// 將二進制點陣數據轉化為字符串
$dot_string .= sprintf("%08b", ord($bindot{$j}));
}
}

fclose($fp);

echo $dot_string;
?>

免費防毒軟件介紹及下載

Avast! 4 Home(有中文版)http://www.avast.com/eng/download-avast-home.html
功能強大的掃毒除毒防間諜軟體,可以掃瞄多種檔案,支援多國語言(含繁簡中英文),具實時監察及自動更新功能,能用於各MS Window上,限個人家用及非商業使用,付費版會提供進階功能。

Avira AntiVir 7.0(傳聞比卡巴斯基更強)http://www.free-av.com/antivirus/allinonen.html
功能不錯的掃毒除毒軟體,可用於Window、Linux、BSD及Solaris,具實時監察及自動更新功能,但只有付費版本才提供比較完善的防間諜軟體功能,限個人非商業使用。

AOL Active Virus Shield(免費版卡巴斯基)http://www.activevirusshield.com/antivirus/freeav/index.adp?
功能強大的掃毒除毒防間諜軟體,具實時監察及自動更新功能, 能用於各MS Window上,任何人皆可免費使用,需要輸入自己的電郵以取得啟動碼。

AVG Anti-Virus Free & AVG Anti-Spyware Free 7.5
http://free.grisoft.com/doc/2/lng/us/tpl/v5
功能強大的掃毒除毒防間諜軟體,可用於Window及Linux,具實時監察功能,限非商業使用。此外這家公司又出了ewido anti-spyware Free,可以用來掃間諜軟體,但卻不具實時監察功能及自動更新功能,可用於Window2000/XP,限非商業使用。

Comodo AntiVirus 1.1 beta
http://www.antivirus.comodo.com/overview.html?currency=USDRion=Asia%20%26%20Pacific&country=HK
功能強大的掃毒除毒防間諜軟體,具實時監察及自動更新功能,能用於MS window xp(sp2)、window 2000(sp4)或以上的系統(不能用於98/me),無任何個人商用的使用限制。

BitDefender 8 Free Edition(收費版防毒能力2006年世界第一)
http://www.bitdefender.com/PRODUCT-14-en--BitDefender-8-Free-Edition.html
功能強大的掃毒除毒防間諜軟體,個人認為它的掃毒功能比上述三個都要強一點,具自動更新功能,可是只有付費版才有實時監察功能(只好裝了上述一個軟體之後再安這個), 可用於Window及Linux。(看不到有任何用途限制)

a-squared Free & a-squared HiJackFree
http://www.emsisoft.com/en/software/free/
功能不錯的掃毒除毒防間諜軟體,可是只有付費版才有實時監察功能及自動更新功能,該公司也推出了a-squared HiJackFree,一個為對電腦系統有探入認識的專業家而設,提供調節系統,控制及移除間諜軟體等功能,以上兩者能用於各MS Window上,但只限於個人使用。

ClamWin Free Antivirus
http://www.clamwin.com/content/view/18/46/
功能強大的掃毒除毒防間諜軟體,能用於各MS Window上,具自動更新功能,但卻沒有實時監察病毒間諜軟體的安全功能,它是開發自ClamAV,同樣是掃毒除毒防間諜軟體(用於Linux/BSD/UNIX-like OSes)。

CA Internet Security Suite 2007
http://home3.ca.com/Microsoft/Default.aspx?sc_lang=en-US
可試用整整一年。須再官方網頁註冊,以EMAIL換取一個試用序號,會不會寄垃圾信?不知道,還沒收過。

Norton AntiVirus 2005 Special Edition - 防毒公用程式
http://pack.google.com/intl/zh-tw/installer_eula.html?cinst=on&ci_symantec=on
這是Google軟體集裡面的其中一個免費坊毒軟體,雖然是舊版,還勉強可用,還信得過諾頓的,可以試試看。此軟體可免費使用6個月。

Windows Defender(微軟官方出品)http://www.microsoft.com/taiwan/athome/security/spyware/software/default.mspx
Windows Defender (Beta 2) 是一個免費的程式,可協助您的電腦避免由間諜軟體及其他有害軟體所帶來的快顯視窗、效能低落及安全性威脅等侵擾。 Windows Defender (Beta 2) 目前僅提供英文版、德文版及日文版,在 Beta 版之後將會陸續提供其他語言版本。

F-Secure Anti-Vires 2007
http://www.f-secure.com
這是來自於Kaspersky的緝毒引擎,F-Secure主要是以KAV的引擎為主其它引擎為輔,軟體在官網有在送正式版序號。

VCatch
http://www.vcatch.com/download.html
VCatch同樣也是一個全面完整功能的防毒軟件,可惜的是,VCatch本身是帶有adware的,安裝了它不時會彈出廣告。

SpyDefense
http://www.everestlabs.com/antispyware-download/
SpyDefense 是一個免費的反間,反惡意木馬軟件。

SpywareGuard 2.2
http://www.javacoolsoftware.com/spywareguard.html
SpywareGuard提供即時的反間保護,可配合SpywareBlaster使用。

SpywareBlaster 3.5.1
http://www.javacoolsoftware.com/spywareblaster.html
SpywareBlaster可以在你瀏覽網頁時,防止不良網站在你的電腦內安裝不良的程式。而這個軟件跟其他的不同,就是只針對網頁,而且不會在關閉後仍在背後運行省下記憶體。

Spybot - Search & Destroy(有中文版)http://www.spybot.com/ct/download/index.html
掃瞄並清除間諜程式、廣告軟體、劫持作業系統設定的元件,與其他惡意的軟體。

PC Tools AntiVirus 3.1 Free Edition
http://www.pctools.com/free-antivirus/
PC Tools AntiVirus是PCTools公司出品的一款可以防殺計算機病毒的計算機防衛工具軟件。為個人電腦提供世界一流的保護,利用快速更新和OnGuard技術攔截網絡病毒,蠕蟲和特洛伊。

360 安全衛士
http://360safe.com/
與卡巴斯基攜手打造病毒查殺模組,用戶在使用360安全衛士同時即可免費使用最新版卡巴斯基反病毒軟體。

PHP中在字符串中查找某個字符

PHP中查找字符有substr()和strstr兩個函數來處理,我沒事情自己想寫個簡單的算法,能夠從一個字符串中找出一個字符是否存在.

代碼如下:

$str = "aaa";
$substr = "a";

function check_str($str, $substr)
{
for ( $i=0; $i {
if ($substr == $str[$i])
{
return true;
}
else
{
return false;
}
}
}
?>

算法簡單,不能保證沒錯誤,只是娛樂....

令 BT 和 eD2k 達到最快下載速度

Windows XP 有開防火牆的才需要看

照以下步驟設定即可(不用重新開機,馬上就有效用)
1. 控制台
2. 網路連線 > 寬頻連線 及 區域連線
3. 內容
4. 進階
5. 設定 > 服務 > 新增
6. 服務描述 輸入 如 BT-6881,電腦名稱輸入 localhost
「 內部連接埠號碼 」與「 外部連接埠號碼 」設為目前 BT 和 eD2k 正在使用的連接埠( Port ) 如 6881
「 BT 沒變更過的話是 6881 - 6889 」
「 eD2k 沒變更過的話是 4662 」
7. 選 TCP
8. 完成按 [確定]
9. 最後!將這新增的服務勾選起來

隱藏副檔名

第一步 :

建立 : .hatccess 檔


第二步 抄下這二個指令

RewriteEngine on
RewriteRule ^twbb$ index.php $T=application/x-httpd-php]
第三步 丟到目前正在執行的目錄

檢查字串為繁體的函數

function isBig5($c="")
{
//is_big5
if($c=="")return false; //空字串
$len_of_c=strlen($c);

if($len_of_c%2==1)return false; //長度非偶數
for($ii=0;$ii<$len_of_c;$ii+=2){
$chk_c=substr($c,$ii,2);
$bc = hexdec(bin2hex($chk_c));
if(($bc>=0xa440 && $bc<= 0xc67e) || ($bc>=0xc940 && $bc<= 0xf9fe) || ($bc>=0xa140 && $bc<= 0xa3fe) ||
($bc>=0xc6a1 && $bc<= 0xc8fe))$nothing=true;
else return false;
}

return true;

}
?>

php數位補零


for ($i=0; $i<100; $i++) {
echo $i;
}

for ($i=0; $i<100; $i++) {
echo sprintf("%02d", $i);
}
?>

網頁提取

/*
夜之戀綜合社區 Nightly-Love.net

檔案名稱: test.php
檔案版本: 1.0.0.0
建立時間: 17:01 18/4/2007
*/
//getdata('域名', '路徑');
function getdata($host, $path = ''){
$fp = fsockopen($host, 80);
if (!$fp) return 'Error';
fputs($fp, "GET $path HTTP/1.1\n");
fputs($fp, "Host: $host\n");
fputs($fp, "Content-Type: application/x-www-form-urlencoded\n");
fputs($fp, "Connection: close\n\n");
while (!feof($fp)) {
$response .= fgets($fp, 1024);
}
fclose($fp);
return $response;
}

//---------------------------氣溫 = $temperature 紫外線指數 = $index 相對濕度 = $humidity
$data = getdata('www.hko.gov.hk', '/textonly/forecast/englishwx.htm');
if($data != 'Error') {
// 搜尋目前溫度數據
if(eregi('TEMPERATURE :(.*)DEGREES CELSIUS',$data,$wtmp)){
//過濾空白字元及確定數據為 INT
$dtmp = intval(trim($wtmp[1]));
$temperature = "現時氣溫 $dtmp 度";
unset($wtmp, $dtmp);
}
//---------------------------
//搜尋紫外線指數數據
if(eregi("KING'S PARK :(.*).",$data,$wtmp)){
//過濾空白字元及確定數據為 INT
$dtmp = intval(trim($wtmp[1]));
$index = ", 紫外線指數 $dtmp ";
//等級定義
if($dtmp > 0 && $dtmp <= 2) {
$index .= "(低)";
} elseif($dtmp > 2 && $dtmp <= 5) {
$index .= "(中等)";
} elseif($dtmp > 5 && $dtmp <= 7) {
$index .= "(高)";
} elseif($dtmp > 7 && $dtmp <= 10) {
$index .= "(甚高)";
} elseif($dtmp > 11){
$index .= "(極高)";
}
unset($wtmp, $dtmp);
}
//---------------------------
//搜尋濕度數據
if(eregi('HUMIDITY :(.*)PER CENT',$data,$wtmp)){
//過濾空白字元及確定數據為 INT
$dtmp = intval(trim($wtmp[1]));
$humidity = ", 相對濕度 $dtmp %";
unset($wtmp, $dtmp);
}
} else {
$temperature = $index = $humidity = '';
}

//---------------------------數據排列
$woutput = $temperature . $index . $humidity;

//---------------------------輸出 UTF-8 HTML
header('Content-Type: text/html; charset=utf-8');
echo $woutput;
//---------------------------
?>

偵測來源url

$domain = array('nightly-love.net','lcfangel.net');
$chkdomain = explode('/',preg_replace("#http://(?:www\.)?#","",$_SERVER['HTTP_REFERER']));

if(!in_array($chkdomain[0],$domain)) {
echo 'document.write("天氣簡報由 正仔網頁 提供");';
}



你係想偵測來源 url ?
係的話用 parse_url() + $_SERVER['HTTP_REFERER']
定係點

使用snoopy提交數據實現登陸

模擬登陸可以用curl或者socket來實現,當curl需要服務器相應的啟用curl module,自己socket實現相對比較麻煩,使用snoopy就簡單了很多啦。

首先,我們要獲取到登陸需要發送什麼字段,目標地址是什麼。這裡我們使用snoopy的fetchform來實現。

include "Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetchform("http://www.xxx.com/logging.php?action=login");
print $snoopy->results;
?>

當然你也可以直接查看源代碼來實現,不過這樣更加方便把。這裡,我們獲取到目標和提交的數據,下一步就可以實現模擬登陸了。代碼如下:

include "Snoopy.class.php";
$snoopy = new Snoopy;
$submit_url = "http://www.xxx.com/logging.php?action=login";

$submit_vars["loginmode"] = "normal";
$submit_vars["styleid"] = "1";
$submit_vars["cookietime"] = "315360000";
$submit_vars["loginfield"] = "username";
$submit_vars["username"] = "********"; //你的用戶名
$submit_vars["password"] = "*******"; //你的密碼
$submit_vars["questionid"] = "0";
$submit_vars["answer"] = "";
$submit_vars["loginsubmit"] = "提   交";
$snoopy->submit($submit_url,$submit_vars);
print $snoopy->results;

?>

使用 PHP 去 Upload 的上限

使用 PHP 去 Upload 的上限

原來使用網頁寄存商的網頁寄存服務都幾多限制的,例如使用 PHP 程式作上存檔案時只可以上存到 2M 的,如果是自已的 Server 就很容易解決,修改 /etc/php.ini 便可以。

但是,使用網頁寄存服務就沒可能修改到 php.ini 了‧‧‧

找了很久,終於找到方法了,就是修改 .htaccess 了,只需要加入以下設定即可:

php_value upload_max_filesize 12M
可以說,在我使用的主機上可以用得上,希望你們也可以!

如何刪除 FTP 無法刪除的檔案

如發現在 FTP 中有某些檔案無法刪除,主要成因是那些檔案是由網頁程式自行建立,故造成擁有權的問題。


但您可透過以下方法刪除那些頑固檔案:

例子. 欲刪除? http://yourdomain.com/dir/delme??整個資料夾

1, 下載 http://www.gvt.hk/scripts/del.zip

2, 解壓後把 del.php 上傳至與欲刪除的檔案 / 資料夾之同一位置 (此例: ./dir)

3, 把上一次資料夾 (此例 ./dir) 權限設為 777 (chmod)

4, 執行 del.php (此例: http://yourdomain.com/dir/del.php),並按指示輸入欲刪除的檔案 / 資料夾 (此例: delme),然後按確認按鈕

5, 如無意外該檔案 / 資料夾可以被成尼R除。刪除後請緊記把 del.php 刪除,及把上級資料夾設回舊有的權限 (通惇O 755)

用 PHP 監察伺服器狀態

用 PHP 監察伺服器狀態
要用 PHP 監察伺服器的是否在線十分簡單,可以單純呼叫系統指令並用 ping 指令便可以,但缺點是主機會不回應 ping 請求。

而另一個方法則是用 fsockopen() 函式來做,而 fsockopen() 的功能是開啟 Internet 或 Unix domain socket 連線,以下是具體實現方法:


$fp = fsockopen("www.example.com", 80, $errno, $errstr, 10);
if (!$fp) {
echo "ERROR: $errno - $errstr
\n";
} else {
echo 'Server is online';
}
?>

php限制只能用英文數字

if(!ereg("^[a-zA-Z0-9]+$",$ID)){
die("您的ID格式不正確 只能使用英文與數字(標點符號空格也不行喔)");
}

php文件操作

  PHP中對各類數據庫的操作有著支持,對文件的操作也同樣有著很豐富的操作方法,很多朋友現在的操作還是基於文件操作可是有的時候在操作文件的時候還存在不少的困惑和疑點,以下是我在日常編寫過程中碰到的以及壇上朋友所碰到的關於文件操作的一些問題收藏吧。

  問:如何新建一個文件?

  答:

  1、使用fopen("要建立的文件名","參數"),參數可選w,w+,a,a+

  2、使用exec("echo '' > 要建立的文件名");這樣是使用系統方式建立這個文件,你還可以使用touch這個linux命令來建立

  問:為什麼我無法建立文件?

  答:

  1、如果你使用了fopen建立文件,是否正確的使用了參數

  2、系統權限問題,請詢問你的WEBMASTER你的FTP目錄是否有寫的權限

  3、FTP權限問題,你要確認你的PHP文件所要寫文件所在目錄要有寫的權限,也就是你的FTP軟件登陸後other組要有寫這個權限,
如果沒有請修改權限後嘗試

  問:如何將文件讀入數組?

  答:使用file函數

  問:如何將文件全部讀出?

  答:
 
  1、使用fread($fp);

  2、如果你的PHP版本>=4.3.0的話可以使用file_get_contents();

  問:如何判斷文件是否存在?

  答:使用file_exists();

  再問:為什麼不使用fopen()來判斷呢?

  答:原因是有時候是因為權限問題導致fopen返回的數據引導我們錯誤的判斷

  問:為什麼當我讀取一個WEB頁面的時候出錯?

  答:

  1、可能是你的傳遞參數錯,當讀取WEB頁面的時候你只可以使用r方式讀取頁面

  2、確保你要讀取的WEB頁面可以訪問

  問:我如何才能獲得文件的相關屬性?

  答:PHP提供了一組獲得文件屬性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...詳細的使用請參閱手冊。

  問:PHP打開文件後是否可以像C一樣進行文件「游標」的定位呢?

  答:可以的,使用fseek();

  問:我想在訪問文件的時候不允許其他人也訪問此文件,怎麼辦?

  答:

  1、你可以採用其他方面程序限制用戶接入文件操作的頁面

  2、使用flock();詳細的參數以及使用方法請參閱手冊

  問:如何刪除文件內第一行,或指定一行數據?

  答:

  PHP並沒有提供這樣的操作方法,不過我們可以通過組合使用,以下代碼演示我們將刪除文件"test.dat"中的第三行數據(test.dat 文件中數據不止三行)

<?php
 $filename="test.dat";//定義操作文件
 $delline=3; //要刪除的行數
 if(!file_exsits($filename)){
  die("指定文件未發現!操作中斷!");
 }
 $farray=file($filename);//讀取文件數據到數組中
 for($tmpa=0;$Tmpa  if(strcmp($Tmpa+1,$delline)==0){
   //判斷刪除的行
   continue;
  }
  //重新整理後的數據
  $newfp.=$farray[$Tmpa]."\r\n";
 }
 $fp=@fopen($filename,"a") or die("寫方式打開文件 $filename 失敗");//我們以寫的方式打開文件
 @fputs($fp,$newfp) or die("文件寫入失敗");
 @fclose($fp);
?>

  以上代碼演示的是刪除一行文件,不過你如果仔細的看的話,其實也給你提供了其他的文件操作的相關提醒~

  問:當我試圖打開一個不存在的文件的時候,我如何不讓錯誤顯示出來以避免我的路徑洩露!!

  答:在你要打開文件的方法前增加@符號用來屏蔽錯誤,@是PHP提供的錯誤信息屏蔽的專用符號或您可以在這個要操作的步驟前增加(通常是在頁首)error_reporting(0);用來屏蔽頁面內所有錯誤信息的顯示一個不推薦的方法就是去修改php.ini(ISP除外)。

  問:我使用的是虛擬主機,我如何防止其他用戶竊取我的數據?

  答:建議ISP修改php.ini中的open_basedir進行限制,不推薦的ISP設置是將fopen,file等文件操作加入disable_function中。

  問:為什麼我用PHP建立文件後我FTP登陸要刪除這些文件無法刪除??

  答:主要是因為PHP建立的文件歸屬WEB用戶組,也就是建立的文件,並非是你FTP用戶的!!!這個問題的解決就是,使用PHP程序的chmod,unlink等方式進行處理,建議用戶在使用PHP建立文件的時候記得chmod文件權限,建議為777

  問:如何使用文本文件作為數據倉庫?有的留言本,論壇之類的都是使用這個的啊!

  答:其實這個主要還是使用了file,結合explode進行數據讀取與分割的典型範例而已。

  問:如何更改文件名?

  答:rename();

  問:如何刪除文件?

  答:unlink(); exec("del(rm -vf) filename");

  注:rm -vf為linux下使用

  問:如何清空文件?

  答:使用fopen(filename,"w");或exec("echo '' > filename");

  問:如何編輯文件內容?

  答:我記得我以前回答過一個刪除文件內容的,其實編輯內容在刪除內容的基礎上,進行變量替換就可以了。希望你可以向上找找,將我上面的continue修改為替換變量數據就可以了

sql小教學

我們將語法中最常用的部份取出,可以簡化成為以下這種形式:
SELECT column_list  要檢索哪些欄位
FROM table_list  要以哪些資料表為目標
WHERE primary_constraint  必須滿足哪些條件
GROUP BY grouping_columns  如何產生 group
ORDER BY sorting_columns  如何對結果排序
HAVING secondary_constraint  其次要滿足哪些條件
LIMIT count  限制資料輸出的筆數

 以實例來看:
例一,讀取所有資料,但不設定條件:
SELECT * FROM friend
例二,讀取部份欄位的資料,且指定條件:
SELECT realname, address FROM friend WHERE age > 20

SELECT 進階
ORDER BY
 如果我們希望查詢所得的資料能依序排列的話,可以使用 ORDER BY 來達成目的。
例一,升冪排序(這是預設的排列方式,因此 ASC 可以省略不寫):
SELECT first_name, address FROM friend ORDER BY city ASC
例二,降冪排序:
SELECT first_name, address FROM friend ORDER BY city DESC
例三,同時對兩個欄位排序(前者優先):
SELECT first_name, address FROM friend ORDER BY city DESC, age

GROUP BY
 我們可以使用 GROUP BY 來指定某個特定欄位,以便將查詢結區分為若干個群組,然後對這些群組進行計算。
例一,從通訊錄中列出所有親友居住的縣市名稱,並求出各地居住的人數:
SELECT city, COUNT(*) FROM friend GROUP BY city
例二,依親友所居住的縣市來區分,並求出各地親友的平均年齡:
SELECT city, AVG(age) FROM friend GROUP BY city
例三,依親友所居住的縣市來區分,並求出各地親友家中成員的總數:
SELECT city, SUM(member) FROM friend GROUP BY city

HAVING
 HAVING 的功能類似於 WHERE,可以用來規範資料被讀取的條件,但它必須與 GROUP BY 搭配,不能用來取代 WHERE。而且 HAVING 是在資料被取出之後,才再次進行篩選的動作。
例如,以學生的分組為單位,列出測驗平均成績高於 60 分的各組與其成績:
SELECT group_num, AVG(score) FROM exam
GROUP BY group_num HAVING AVG(score) > 60

DISTINCT
 假如我們在意的是「某個欄位裡是否有某些特定的值」,而不在乎它出現多少次的話,我們可以使用 DISTINCT 來剔除欄位中重複的值。
例如,從通訊錄中列出所有親友居住的縣市名稱:
SELECT DISTINCT city FROM friend

LIMIT
 如果在某項查詢結果中,我們想要的僅是其中一部份時,可以使用 LIMIT 來限制資料被讀取的筆數。
例如,找出座號最前面的五位學生姓名:
SELECT realname FROM student ORDER BY num LIMIT 0, 5
 在此例中,LIMIT 後方的 0 代表「從第 0 筆資料開始」,5 表示「取出 5 筆資料」。

php模擬post

$URL=‘http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "????";
$referrer="";
// parsing the given URL
$URL_Info=parse_url($URL);
// Building referrer
if($referrer=="") // if not given use this script as referrer
$referrer=$_SERVER["SCRIPT_URI"];

// making string from $data
foreach($post_data as $key=>$value)
$values[]="$key=".urlencode($value);

$data_string=implode("&",$values);
// Find out which port is needed - if not given use standard (=80)
if(!isset($URL_Info["port"]))
$URL_Info["port"]=80;
// building POST-request:
$request.="POST ".$URL_Info["path"]." HTTP/1.1\n";
$request.="Host: ".$URL_Info["host"]."\n";
$request.="Referer: $referrer\n";
$request.="Content-type: application/x-www-form-urlencoded\n";
$request.="Content-length: ".strlen($data_string)."\n";
$request.="Connection: close\n";
$request.="\n";
$request.=$data_string."\n";
$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
fputs($fp, $request);
while(!feof($fp)) {
$result .= fgets($fp, 128);
}
fclose($fp);

PHP對數據庫操作的例子

$conn = mysql_connect('localhost','root','root');//連接數據庫
mysql_select_db('database'); // 選擇數據庫
$sql = 'select field_name_1 from table_name'; // sql語句
$result = mysql_query($sql); // 執行查詢

// 以下是把查詢結果生成一個數組,方便操作
$i = 0;
while($row = mysql_fetch_array($result))
{
$r[$i]['field_name_1'] = $row['field_name_1'];
$i++;
}
// $r便是數組了,裡面有你查詢的數據

PHP音樂採集程序代碼

set_time_limit(0);
mysql_connect("localhost","root","");
mysql_select_Db("music_36g");

$ip = '127.0.0.1';

function _GetIP()
{
$ip = getenv("REMOTE_ADDR");
$ip1 = getenv("HTTP_X_FORWARDED_FOR");
$ip2 = getenv("HTTP_CLIENT_IP");
($ip1) ? $ip = $ip1 : null ;
($ip2) ? $ip = $ip2 : null ;
return $ip;
}
function MakePassword($length=10)
{
$password = '';
$chars =
array
(
"1","2","3","4","5","6","7","8","9","0",
"a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J",
"k","K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T",
"u","U","v","V","w","W","x","X","y","Y","z","Z"
);

$count = count($chars) - 1;
srand((double)microtime()*1000000);

for($i = 0; $i < $length; $i++)
{
$password .= $chars[rand(0, $count)];
}
return($password);
}

if ( _GetIP() != $ip )
{
exit("Can't Run!");
}


for ( $i=2;$i<5769;$i++)//52738
{
$url = "http://music.36g.net/SpecialInfo/showspecial".$i.".htm";

$File = @fopen($url,'rb');
if ( $File )
{
$makeFile = $buffer = "";
$buffer = "";
while ($buffer = fread($File,4096))
{
$makeFile = $makeFile.$buffer;
}
@fclose($File);


preg_match("/src=\/uppic\/(.*) width=135/",$makeFile,$pic);#圖片
#下載圖片
if ( $pic[1]!='es/Nophoto.gif' )
{
$p_url = "http://music.36g.net/uppic/".$pic[1];

$File2 = fopen($p_url,'rb');
if ( $File2 )
{
$Buffer2 = $makeFile2 = "";
while ($Buffer2 = fread($File2,4096))
{
$makeFile2 = $makeFile2.$Buffer2;
}
fclose($File2);


$Filename2 = './pic/'.$pic[1];
$Fp2 = fopen ($Filename2,'w+');
fwrite($Fp2,$makeFile2);
fclose($Fp2);
}
}
else
{
$pic[1] = '';
}

preg_match("/專輯:<\/strong>(.*)<\/td> $name = addslashes($name[1]);

preg_match("/歌手:<\/strong>(.*)<\/td><\/tr>/",$makeFile,$songer);#歌手名稱
preg_match("/(.*)<\/td><\/tr>/",$songer[1],$songer_name);#歌手名稱
preg_match("/發行公司:<\/strong>(.*)/",$songer[1],$company);#發行公司

preg_match("/發行時間<\/strong>:(.*)<\/td> <\/tr>/",$makeFile,$date);#發行時間
preg_match("/(.*)<\/td>/",$date[1],$date2);#發行時間
preg_match("/<\/strong>(.*)/",$date[1],$language);#發行語言


preg_match("/專輯簡介:<\/strong><\/td> (.*)<\/td><\/tr><\/table>
/",$makeFile,$descript);#專輯簡介


$songer_name = addslashes($songer_name[1]);
$company= addslashes($company[1]);

$descript= addslashes($descript[1]);

#取得歌曲ID
preg_match_all("/download1\.asp\?id=(\d+)&which=BakDownUrl1/",$makeFile,$id2);#歌曲ID

$num = count($id2[1]);
for ($jj=0;$jj<$num;$jj++)
{
$sql = " insert into tx_music set musicID='".$id2[1][$jj]."',specialID='$i',specialName='$name',songerName='$songer_name',orderByID='".$id2[1][$jj]."' ";
//echo $id2[1][$jj]."
";
mysql_query($sql);
}

//echo $descript."

";

$sql = " insert into tx_special set orderByID='$i',specialID='$i',specialName='$name',songerName='$songer_name',company='$company',date='$date2[1]',language='$language[1]',picture='$pic[1]',musicNum='$num',createDate='".time()."',description='$descript' ";
echo $sql;
mysql_query($sql);

}
}


?>

PHP函數索引

Abs: 取得絕對值。 `&Lo>
Acos: 取得反余弦值。 Za/[s
ada_afetch: 取得數據庫的返回列。 }r!U+
ada_autocommit: 開關自動改動功\能。 SG*OZ
ada_close: 關閉 Adabas D 鏈接。 'cCwi
ada_commit: 改動 Adabas D 數據庫。 e!g'w
ada_connect: 鏈接至 Adabas D 數據庫。 d3`v!
ada_exec: 執行 SQL 指令。 k#(
ada_fetchrow: 取得返回一列。 m+s
ada_fieldname: 取得字段名稱。 @,i)
ada_fieldtype: 取得字段資料類型。 r
ada_freeresult: 釋出返回資料的內存。 YKjA
ada_numfields: 取得字段數目。 j7KB%,
ada_numrows: 取得返回列數目。 51K:
ada_result: 取得返回資料。 D*GL
ada_resultall: 返回 HTML 表格資料。 30ZJ
ada_rollback: 撤消當前交易。 5
AddSlashes: 字符串加入斜線。 ~x
apache_lookup_uri: 獲得所有的 URI 相關資料。 C}'
apache_note: 獲得及配置apache服務器的請求紀錄。 6
array: 建立一個新的數組。 'L1
array_walk: 讓使用者自訂函數能處理數組中的每一個元素。 TOb
arsort: 將數組的值由大到小排序。 c
Asin: 取得反正弦值。 S5Z\|
asort: 將數組的值由小到大排序。 ;QAZ
aspell_check: 檢查一個單字。 /
aspell_check-raw: 檢查一個單字,即使拼錯也不改變或修正。 +$y
aspell_new: 載入一個新的字典。 7w%TL
aspell_suggest: 檢查一個單字,並提供拼寫建議。 k5
Atan: 取得反正切值。 q`
Atan2: 計算二數的反正切值。 v4E
base64_decode: 將 BASE64 編碼字符串解碼。 _9D@={
base64_encode: 將字符串以 BASE64 編碼。 y1N9
basename: 返回不含路徑的文件字符串。 ?wUru
base_convert: 轉換數字的進位方式。 5EP
bcadd: 將二個高精確度數字相加。 v4P
bccomp: 比較二個高精確度數字。 D7R2=Z
bcdiv: 將二個高精確度數字相除。 \/a
bcmod: 取得高精確度數字的餘數。 NvJ_bP
bcmul: 將二個高精確度數字相乘。 Lai
bcpow: 求一高精確度數字次方值。 1.t
bcscale: 配置程序中所有 BC 函數庫的默認小數點位數。 E6g<.
bcsqrt: 求一高精確度數字的平方根。 0(kM-/
bcsub: 將二個高精確度數字相減。 b7
bin2hex: 二進位轉成十六進位。 Z?+X
BinDec: 二進位轉成十進位。 xOXYM#
Ceil: 計算大於指定數的最小整數。 h[<
chdir: 改變目錄。 Ux-c
checkdate: 驗證日期的正確性。 8W
checkdnsrr: 檢查指定網址的 DNS 記錄。 M<
chgrp: 改變文件所屬的群組。 y2H:=
chmod: 改變文件的屬性。 ,]'
Chop: 去除連續空白。 W^
chown: 改變文件的擁有者。 v&(<
Chr: 返回序數值的□字符。 m-bf5
chunk_split: 將字符串分成小段。 9
clearstatcache: 清除文件狀態快取。 &k$
closedir: 關閉目錄 handle。 M
closelog: 關閉系統紀錄。 yn6k
connection_aborted: 若鏈接中斷則返回 true。 Fn|q{*
connection_status: 取得連接狀態。 eV6;
connection_timeout: 若超過 PHP 程序執行時間則返回 true。 5cG`
convert_cyr_string: 轉換古斯拉夫字符串成其它字符串。 K*
copy: 複製文件。 !e+-Ri
Cos: 余弦計算。 %YGE97
count: 計算變量或數組中的元素個數。 "_cc
crypt: 將字符串用 DES 編碼加密。 =9k
current: 返回數組中目前的元素。 Cn{
date: 將服務器的時間格式化。 TbIB
dbase_add_record: 加入資料到 dBase 資料表。 [&^|/
dbase_close: 關閉 dBase 資料表。 D
dbase_create: 建立 dBase 資料表。 =
dbase_delete_record: 刪除 dBase 資料表的資料。 ,
dbase_get_record: 取得 dBase 資料表的資料。 _Ffq;
dbase_numfields: 取得 dBase 資料表的字段數。 y
dbase_numrecords: 取得 dBase 資料表的列數。 !
dbase_open: 打開 dBase 資料表。 O]sN=]
dbase_pack: 清理 dBase 資料表。 V
dba_close: 關閉數據庫。 fGdh9Z
dba_delete: 刪除指定資料。 j`~\dy
dba_exists: 檢查鍵是否存在。 3bY>oS
dba_fetch: 取回指定資料。 4NaWi8
dba_firstkey: 取回首筆鍵值。 BJM
dba_insert: 加入資料。 5*
dba_nextkey: 取回下筆鍵值。 v6
dba_open: 打開數據庫鏈接。 iK=
dba_optimize: 最佳化數據庫。 +>m
dba_popen: 打開並保持數據庫鏈接。 r\?}
dba_replace: 改動或加入資料。 b'
dba_sync: 數據庫同步化。 rP#
dblist: 取得 DBM 的資料。 6*Hm'
dbmclose: 關閉 DBM 數據庫。 aD
dbmdelete: 刪除指定資料。 B)Bbf
dbmexists: 檢查鍵是否存在。 `f&dm
dbmfetch: 取回指定資料。 G^/MJ
dbmfirstkey: 取回首筆鍵名。 p
dbminsert: 加入資料。 acE
dbmnextkey: 取回下筆鍵值。 t{E[|C
dbmopen: 打開 DBM 數據庫鏈接。 T6Vv`
dbmreplace: 改動或加入資料。 S
debugger_off: 關閉內建的 PHP 除錯器。 WfvJ_
debugger_on: 使用內建的 PHP 除錯器。 p
DecBin: 十進位轉二進位。 "g%P-
DecHex: 十進位轉十六進位。 5vNYDecOct: 十進位轉八進位。 -
delete: 無用的項目。 lZaX
die: 輸出資料並中斷 PHP 程序。 ajnC[#
dir: 目錄類別類。 s
dirname: 取得路徑中的目錄名。 p4&c
diskfreespace: 取得目錄所在的剩餘可用空間。 [
dl: 載入 PHP 擴充模塊。 *UG1
doubleval: 變量轉成倍浮點數類型。 _
each: 返回數組中下一個元素的索引及值。 hdL1
easter_date: 計算復活節日期。 U
easter_days: 計算復活節與三月廿一日之間日期數。 s5D&2
echo: 輸出字符串。 q2F
empty: 判斷變量是否已配置。 k4/dt)
end: 將數組的內部指針指到最後的元素。 :^
ereg: 字符串比對解析。 <"f`O
eregi: 字符串比對解析,與大小寫無關。 =1LvC
eregi_replace: 字符串比對解析並取代,與大小寫無關。 yl?v~#
ereg_replace: 字符串比對解析並取代。 error_log: 送出一個錯誤資料。 qBS.
error_reporting: 配置錯誤資料回報的等級。 t/
escapeshellcmd: 除去字符串中的特殊符號。 {#!
eval: 將值代入字符串之中。 0yJ
exec: 執行外部程序。 z3nT
exit: 結束 PHP 程序。 ,9
Exp: 自然對數 e 的次方值。 xn!l
explode: 切開字符串。 X
extract: 匯入數組到符號表。 8]6
fclose: 關閉已打開的文件。 Z
FDF_close: 關閉 FDF 文件。 |?Wv
FDF_create: 建立新的 FDF 文件。 y
FDF_get_file: 取得 /F 鍵的值。 u
FDF_get_status: 取得 /STATUS 鍵的值。 R
FDF_get_value: 取得字段的值。 (
FDF_next_field_name: 下一字段的名稱。 ;=x
FDF_open: 打開 FDF 文件。 L
FDF_save: 將 FDF 文件存文件。 g}E{=
FDF_set_ap: 配置顯示字段。 }:D
FDF_set_file: 配置 /F 鍵。 d;gX'(
FDF_set_status: 配置 /STATUS 鍵。 :NB5i
FDF_set_value: 配置字段的值。 )IM
feof: 測試文件指針是否指到文件尾。 ZZ'dZ
fgetc: 取得文件指針所指的字符。 2qo
fgetcsv: 取得文件指針所指行,並解析 CSV 字段。 Cj=uR
fgets: 取得文件指針所指的行。 $R(8
fgetss: 取得文件指針所指的行,並去掉 HTML 語言標記。 F
file: 將文件全部讀入數組變量中。 }`6C
fileatime: 取得文件最後的存取時間。 Mu
filectime: 取得文件最後的改變時間。 c\Zx
filegroup: 取得文件所屬的群組。 _{EgZO
fileinode: 取得文件的 inode 值。 wU$?j8
filemtime: 取得文件最後的修改時間。 &}
fileowner: 取得文件的擁有者。 c(7xO
fileperms: 取得文件的權限配置。 BIy\
filepro: 讀取 FilePro Map 文件。 ;H%'J
filepro_fieldcount: 取得字段數目。 TobD
filepro_fieldname: 取得字段名稱。 hv/!*X
filepro_fieldtype: 取得字段類型。 Y+
filepro_fieldwidth: 取得字段寬度。 E
filepro_retrieve: 取得指定儲存格資料。 >zJ
filepro_rowcount: 取得列數目。 p
filesize: 獲得文件的大小。 DiLIM_
filetype: 獲得文件的類型。 b
file_exists: 檢查文件是否存在。 tc$
flock: 鎖住文件。 pZW8
Floor: 計算小於指定數的最大整數。 k*
flush: 清出輸出緩衝區。 XfYQE
fopen: 打開文件或者 URL。 VnV8J
fpassthru: 輸出所有剩餘資料。 O
fputs: 寫到文件指針。 A{
fread: 位組的方式讀取文件。 >"=F;
FrenchToJD: 將法國共和曆法轉換成為凱撒日計數。 hs}I
fseek: 移動文件指針。 =;m
fsockopen: 打開網絡的 Socket 鏈接。 kL(C
ftell: 取得文件讀寫指針位置。 6t@]
ftp_cdup: 回上層目錄。 G
ftp_chdir: 改變路徑。 8
ftp_connect: 打開 FTP 鏈接。 .&Z
ftp_delete: 將文件刪除。 j@
ftp_fget: 下載文件,並存在已開的文件中。 [
ftp_fput: 上傳已打開文件。 R~pneE
ftp_get: 下載文件。 PC
ftp_login: 登入 FTP 服務器。 i
ftp_mdtm: 獲得指定文件的最後修改時間。 .
ftp_mkdir: 建新目錄。 yE
ftp_nlist: 列出指定目錄中所有文件。 }P
ftp_pasv: 切換主被動傳輸模式。 oz!
ftp_put: 上傳文件。 8\ h
ftp_pwd: 取得目前所在路徑。 @
ftp_quit: 關閉 FTP 連接。 j5qR}j
ftp_rawlist: 詳細列出指定目錄中所有文件。 2h%'
ftp_rename: 將文件改名。 yn">Z.
ftp_rmdir: 刪除目錄。 gKG"\)
ftp_size: 獲得指定文件的大小。 |xp:N\
ftp_systype: 顯示服務器系統。 *U,
function_exists: 檢查函數是否已定義。 fe]
fwrite: 二進位位方式寫入文件。 _
getallheaders: 獲得所有 HTTP 變量值。 @X7uhW
getdate: 獲得時間及日期資料。 t
getenv: 取得系統的環境變量 NX
gethostbyaddr: 返回機器名稱。 q|2]!
gethostbyname: 返回 IP 網址。 $am=
gethostbynamel: 返回機器名稱的所有 IP。 %|d1{
GetImageSize: 取得圖片的長寬。 4FrYm
getlastmod: 返回該網頁的最後修改時間。 d*7
getmxrr: 取得指定網址 DNS 記錄之 MX 字段。 7o_mm
getmyinode: 返回該網頁的 inode 值。 I
getmypid: 返回 PHP 的行程代號。 k
getmyuid: 返回 PHP 的使用者代碼。 >+
getrandmax: 隨機數的最大值。 5
getrusage: 返回系統資源使用率。 j0}B3
gettimeofday: 取得目前時間。 K[LM9
gettype: 取得變量的類型。 d
get_cfg_var: 取得 PHP 的配置選項值。 /H~:
get_current_user: 取得 PHP 行程的擁有者名稱。 p[
get_magic_quotes_gpc: 取得 PHP 環境變量 magic_quotes_gpc 的值。 }LB?hb
get_magic_quotes_runtime: 取得 PHP 環境變量 magic_quotes_runtime 的值。 hCCZ
get_meta_tags: 抽出文件所有 meta 標記的資料。 &
gmdate: 取得目前與 GMT 差後的時間。 $
gmmktime: 取得 UNIX 時間戳記的格林威治時間。 T(<
GregorianToJD: 將格裡高裡曆法轉換成為凱撒日計數。 !
gzclose: 關閉壓縮文件。 l#
gzeof: 判斷是否在壓縮文件尾。 79*.
gzfile: 讀壓縮文件到數組中。 m/
gzgetc: 讀壓縮文件中的字符。 :L
gzgets: 讀壓縮文件中的字符串。 ?
gzgetss: 讀壓縮文件中的字符串,並去掉 HTML 指令。 U
gzopen: 打開壓縮文件。 q-$&"Z
gzpassthru: 解壓縮指針後全部資料。 ?)=D
gzputs: 資料寫入壓縮文件。 ici#
gzread: 壓縮文件讀出指定長度字符串。 R?
gzrewind: 重設壓縮文件指針。 ]`}]/
gzseek: 設壓縮文件指針至指定處。 %
gztell: 取得壓縮文件指針處。 ]{.T
gzwrite: 資料寫入壓縮文件。 I,p>`x
header: 送出 HTTP 協議的標頭到瀏覽器 TA]fv
HexDec: 十六進位轉十進位。 N
htmlentities: 將所有的字符都轉成 HTML 字符串。 UQ?D
htmlspecialchars: 將特殊字符轉成 HTML 格式。 B
hw_Children: 取得子類代碼。 JS
hw_ChildrenObj: 取得子類的類記錄。 (hv2
hw_Close: 關閉 Hyperwave 連接。 +PG+Fj
hw_Connect: 連上 Hyperwave 服務器。 VNa
hw_Cp: 複製類。 (JoX)Q
hw_Deleteobject: 刪除類。 TP,%
hw_DocByAnchor: 取得指定錨的文件類代碼。 j66
hw_DocByAnchorObj: 取得指定錨的文件類。 RZ,?Jx
hw_DocumentAttributes: 取得指定文件類屬性。 :]
hw_DocumentBodyTag: 取得指定文件類的文件主體標記。 P-QJ.V
hw_DocumentContent: 取得指定文件類的內容。 B
hw_DocumentSetContent: 重設指定文件類的內容。 Yu4l
hw_DocumentSize: 取得文件大小。 D
hw_EditText: 改動文字檔寧。 xvfx
hw_Error: 取得錯誤代碼。 yr
hw_ErrorMsg: 取得錯誤資料。 X
hw_Free_Document: 釋放文件使用的內存。 cJC(F
hw_GetAnchors: 取得文件的鏈接錨。 e
hw_GetAnchorsObj: 取得文件的鏈接錨記錄。 y
hw_GetAndLock: 取得並鎖住類。 4Vsna
hw_GetChildColl: 取得子類們的 ID。 ;:
hw_GetChildCollObj: 取得子類們的資料。 L[)
hw_GetChildDocColl: 取得全部子文件聚集。 "t9
hw_GetChildDocCollObj: 取得全部子文件聚集記錄。 O.G%/0
hw_GetObject: 取得類。 cq
hw_GetObjectByQuery: 搜尋類。 iqm%E0
hw_GetObjectByQueryColl: 搜尋聚集類。 [oM:.
hw_GetObjectByQueryCollObj: 搜尋聚集類。 k
hw_GetObjectByQueryObj: 搜尋類。 7^<
hw_GetParents: 取得父類的 ID。 H_o
hw_GetParentsObj: 取得父類的資料。 tB
hw_GetRemote: 取得遠端文件。 W
hw_GetRemoteChildren: 取得遠端的子文件。 xH.i
hw_GetSrcByDestObj: 取得指定目的的文件內容。 PX6
hw_GetText: 取得純文字檔寧。 m4mI2m
hw_GetUsername: 目前使用者名字。 ;`
hw_Identify: 使用者身份確認。 X
hw_InCollections: 檢查類聚集。 tCt"
hw_Info: 連接資料。 hCb?I*
hw_InsColl: 插入聚集。 q
hw_InsDoc: 插入文件。 !am%(L
hw_InsertDocument: 上傳文件。 U5\T
hw_InsertObject: 插入類記錄。 3t Bc[
hw_Modifyobject: 修改類記錄。 5~iQ:
hw_Mv: 移動類。 QT5qV5
hw_New_Document: 建立新文件。 "fNDl
hw_Objrec2Array: 類記錄轉為數組。 1C
hw_OutputDocument: 輸出文件。 W
hw_pConnect: 連上 Hyperwave 服務器。 r+?/
hw_PipeDocument: 取得文件。 DO@P1
hw_Root: 取得根類代碼。 rauVu5
hw_Unlock: 取消鎖定。 xEeJo
hw_Who: 列出目前使用者。 eH
ibase_bind: 鏈接 PHP 變量到 InterBase 參數。 u
ibase_close: 關閉 InterBase 服務器連接。 "<:!
ibase_connect: 打開 InterBase 服務器連接。 %\
ibase_execute: 執行 SQL 的指令部分。 V-DS3
ibase_fetch_row: 返回單列的各字段。 Kk]S#d
ibase_free_query: 釋放查詢指令佔用內存。 ,|6b
ibase_free_result: 釋放返回佔用內存。 KC
ibase_pconnect: 保持 InterBase 服務器連接。 >?w
ibase_prepare: 分析 SQL 語法。 _2e{@G
ibase_query: 送出一個 query 字符串。 [9fIF
ibase_timefmt: 配置時間格式。 k`6i
ifxus_close_slob: 刪除 slob 類。 G
ifxus_create_slob: 建立 slob 類。 G\MP}%
ifxus_open_slob: 打開 slob 類。 =?q1T$
ifxus_read_slob: 讀取指定數目的 slob 類。 @)
ifxus_seek_slob: 配置目前文件或找尋位置。 _oi
ifxus_tell_slob: 返回目前文件或找尋位置。 mg}$M
ifxus_write_slob: 將字符串寫入 slob 類中。 %wU>
ifx_affected_rows: 得到 Informix 最後操作影響的列數目。 (
ifx_blobinfile_mode: 配置長位類模式。 =!Wcd
ifx_byteasvarchar: 配置位組模式默認值。 MS
ifx_close: 關閉 Informix 服務器連接。 v y(<
ifx_connect: 打開 Informix 服務器連接。 0(J?@!
ifx_copy_blob: 複製長位類。 s
ifx_create_blob: 建立長位類。 KB{e
ifx_create_char: 建立字符類。 )HLAx
ifx_do: 執行已準備 query 字符串。 4ifx_error: 取得 Informix 最後的錯誤。 6i
ifx_errormsg: 取得 Informix 最後錯誤資料。 6R
ifx_fetch_row: 返回單列的各字段。 &Uqlte
ifx_fieldproperties: 列出 Informix 的 SQL 字段屬性。 @|{O
ifx_fieldtypes: 列出 Informix 的 SQL 字段。 *
ifx_free_blob: 刪除長位類。 n{FZ2
ifx_free_char: 刪除字符類。 8|['S
ifx_free_result: 釋放返回佔用內存。
ifx_free_slob: 刪除 slob 類。 M1FN9W
ifx_getsqlca: 取得 query 後的 sqlca 資料。 67
ifx_get_blob: 取得長位類。 U}.
ifx_get_char: 取得字符類。 EPs[s
ifx_htmltbl_result: 將 query 返回資料轉成 HTML 表格。 @hb;
ifx_nullformat: 配置空字符模式默認值。 &"Y1
ifx_num_fields: 取得返回字段的數目。 6j
ifx_num_rows: 取得返回列的數目。 vE=?^
ifx_pconnect: 打開 Informix 服務器持續連接。 P
ifx_prepare: 準備 query 字符串。 L
ifx_query: 送出一個 query 字符串。 #`uM
ifx_textasvarchar: 配置文字模式默認值。 @_ieHt
ifx_update_blob: 更改長位類。 BIh
ifx_update_char: 更改字符類。 &73kz:
ignore_user_abort: 連接中斷後程序是否執行。 bh
ImageArc: 畫弧線。 4X
ImageChar: 寫出橫向字符。 Xb
ImageCharUp: 寫出直式字符。 TYOlE
ImageColorAllocate: 匹配顏色。 *
ImageColorAt: 取得圖中指定點顏色的索引值。 _ N
ImageColorClosest: 計算色表中與指定顏色最接近者。 7~,W
ImageColorExact: 計算色表上指定顏色索引值。 pOIi3j
ImageColorResolve: 計算色表上指定或最接近顏色的索引值。 +y5S/
ImageColorSet: 配置色表上指定索引的顏色。 E
ImageColorsForIndex: 取得色表上指定索引的顏色。 uf
ImageColorsTotal: 計算圖的顏色數。 uGv}p
ImageColorTransparent: 指定透明背景色。 ]
ImageCopyResized: 複製新圖並調整大小。 i
ImageCreate: 建立新圖。 m&
ImageCreateFromGIF: 取出 GIF 圖型。 KVY
ImageCreateFromPNG: 取出 PNG 圖型。 y8
ImageDashedLine: 繪虛線。 I<_Yex
ImageDestroy: 結束圖形。 BpY!x
ImageFill: 圖形著色。 &xF}
ImageFilledPolygon: 多邊形區域著色。 ^Iry
ImageFilledRectangle: 矩形區域著色。 ;1
ImageFillToBorder: 指定顏色區域內著色。 \yC~
ImageFontHeight: 取得字型的高度。 N
ImageFontWidth: 取得字型的寬度。 M`&/X
ImageGIF: 建立 GIF 圖型。 -zS
ImageInterlace: 使用交錯式顯示與否。 "EN
ImageLine: 繪實線。 Ppf
ImageLoadFont: 載入點陣字型。 d
ImagePNG: 建立 PNG 圖型。 J*(r
ImagePolygon: 繪多邊形。 ,.4WX
ImagePSBBox: 計算 PostScript 文字所佔區域。 %
ImagePSEncodeFont: PostScript 字型轉成向量字。 m|~i
ImagePSFreeFont: 卸下 PostScript 字型。 ~Pc6iL
ImagePSLoadFont: 載入 PostScript 字型。 WLlbD`
ImagePSText: 寫 PostScript 文字到圖中。 .z)V]
ImageRectangle: 繪矩形。 {
ImageSetPixel: 繪點。 r~QoqT
ImageString: 繪橫式字符串。 m
ImageStringUp: 繪直式字符串。 e\(
ImageSX: 取得圖片的寬度。 I-!|}i
ImageSY: 取得圖片的高度。 YjImageTTFBBox: 計算 TTF 文字所佔區域。 ZtT%O
ImageTTFText: 寫 TTF 文字到圖中。 =~l=[i
imap_8bit: 將八位轉成 qp 編碼。 V_9imap_alerts: 所有的警告資料。 GJ7
imap_append: 附加字符串到指定的郵箱中。 s6Fb
imap_base64: 解 BASE64 編碼。 CR
imap_binary: 將八位轉成 base64 編碼。 Xln2
imap_body: 讀信的內文。 V~%
imap_check: 返回郵箱資料。 GWl6
imap_clearflag_full: 清除信件標誌。 ?[`]
imap_close: 關閉 IMAP 鏈接。 hWa!V
imap_createmailbox: 建立新的信箱。 <=!;
imap_delete: 標記欲刪除郵件。 fQPf<%
imap_deletemailbox: 刪除既有信箱。 ='
imap_errors: 所有的錯誤資料。 8`4
imap_expunge: 刪除已標記的郵件。 *jd=5x
imap_fetchbody: 從信件內文取出指定部分。 {^?(%
imap_fetchheader: 取得原始標頭。 |)Sn:
imap_fetchstructure: 獲取某信件的結構資料。 -X
imap_getmailboxes: 取得全部信件詳細資料。 JZ
imap_getsubscribed: 列出所有訂閱郵箱。 (;X+t
imap_header: 獲取某信件的標頭資料。 R.,M
imap_headers: 獲取全部信件的標頭資料。 D
imap_last_error: 最後的錯誤資料。 wAvR?
imap_listmailbox: 獲取郵箱列示。 ij0gC
imap_listsubscribed: 獲取訂閱郵箱列示。 !rC
imap_mailboxmsginfo: 取得目前郵箱的資料。 !0@5|
imap_mail_copy: 複製指定信件到它處郵箱。 5C
imap_mail_move: 移動指定信件到它處郵箱。 )JO"r
imap_msgno: 列出 UID 的連續信件。 {
imap_num_msg: 取得信件數。 .(Ac
imap_num_recent: 取得新進信件數。 Pimap_open: 打開 IMAP 鏈接。 a ks
imap_ping: 檢查 IMAP 是否連接。 G(GU.
imap_qprint: 將 qp 編碼轉成八位。 gQIu
imap_renamemailbox: 更改郵箱名字。 oBYa
imap_reopen: 重開 IMAP 鏈接。 vl.e,
imap_rfc822_parse_adrlist: 解析電子郵件位址。 ?
imap_rfc822_write_address: 電子郵件位址標準化。 '
imap_scanmailbox: 尋找信件有無特定字符串。 efJ ee
imap_search: 搜尋指定標準的信件。 +G0q*
imap_setflag_full: 配置信件標誌。 M(x
imap_sort: 將信件標頭排序。 ^J
imap_status: 目前的狀態資料。 4y2oZ
imap_subscribe: 訂閱郵箱。 9`Vd
imap_uid: 取得信件 UID。 imap_undelete: 取消刪除郵件標記。 CP
imap_unsubscribe: 取消訂閱郵箱。 ;=
implode: 將數組變成字符串。 E_!
intval: 變量轉成整數類型。 GP
iptcparse: 使用 IPTC 模塊解析位資料。 2U~}P4
isset: 判斷變量是否已配置。 zr
is_array: 判斷變量類型是否為數組類型。 W`u+
is_dir: 測試文件是否為目錄。 25")E
is_double: 判斷變量類型是否為倍浮點數類型。 &f
is_executable: 測試文件是否為可執行文件。 ug,)H
is_file: 測試文件是否為正常文件。 og|Mj
is_float: 判斷變量類型是否為浮點數類型。 bpqxV
is_int: 判斷變量類型是否為整數類型。 F8MZ
is_integer: 判斷變量類型是否為長整數類型。 +
is_link: 測試文件是否為鏈接文件。 !9g
is_long: 判斷變量類型是否為長整數類型。 _A?L#
is_object: 判斷變量類型是否為類類型。 78PT
is_readable: 測試文件是否可讀取。 K\A5
is_real: 判斷變量類型是否為實數類型。 c~
is_string: 判斷變量類型是否為字符串類型。 0
is_writeable: 測試文件是否可寫入。 qPJ.?4
JDDayOfWeek: 返回日期在周幾。 E55:
JDMonthName: 返回月份名。 FFg8
JDToFrench: 將凱撒日計數轉換成為法國共和曆法。 Zcj
JDToGregorian: 將凱撒日計數 (Julian Day Count) 轉換成為格裡高裡曆法 (Gregorian date)。 "|ing
JDToJewish: 將凱撒日計數轉換成為猶太曆法。 7..F{
JDToJulian: 將凱撒日計數轉換成為凱撒曆法。 JewishToJD: 將猶太曆法轉換成為凱撒日計數。 =U'LB
join: 將數組變成字符串。 m<
JulianToJD: 將凱撒曆法轉換成為凱撒日計數。 EVcf29
key: 取得數組中的索引資料。 zE~Y
ksort: 將數組的元素依索引排序。 'CrJ@&
ldap_add: 增加 LDAP 名錄的條目。 '-D!h|
ldap_bind: 繫住 LDAP 目錄。 n$
ldap_close: 結束 LDAP 鏈接。 BS~qfi
ldap_connect: 連上 LDAP 服務器。 VW5
ldap_count_entries: 搜尋結果的數目。 s
ldap_delete: 刪除指定資源。 F
ldap_dn2ufn: 將 dn 轉成易讀的名字。 $
ldap_explode_dn: 切開 dn 的字段。 G>Q
ldap_first_attribute: 取得第一筆資源的屬性。 N^+u
ldap_first_entry: 取得第一筆結果代號。 Um
ldap_free_result: 釋放返回資料內存。
ldap_get_attributes: 取得返回資料的屬性。 3P#
ldap_get_dn: 取得 DN 值。 d%THuE
ldap_get_entries: 取得全部返回資料。 [aC
ldap_get_values: 取得全部返回值。 2GM
ldap_list: 列出簡表。 ,cf
ldap_modify: 改變 LDAP 名錄的屬性。 Ob/Q
ldap_mod_add: 增加 LDAP 名錄的屬性。 KB4Owa
ldap_mod_del: 刪除 LDAP 名錄的屬性。 Y>
ldap_mod_replace: 新的 LDAP 名錄取代舊屬性。 qN~
ldap_next_attribute: 取得返回資料的下筆屬性。 Y`k0
ldap_next_entry: 取得下一筆結果代號。 4G
ldap_read: 取得目前的資料屬性。 1~PxK
ldap_search: 列出樹狀簡表。 +}q<
ldap_unbind: 結束 LDAP 鏈接。 ?)3P
leak: 洩出內存。 c
link: 建立硬式鏈接。 {
linkinfo: 取得鏈接資料。 VUD
list: 列出數組中元素的值。 5a_
Log: 自然對數值。 P
Log10: 10 基底的對數值。 6.
lstat: 取得鏈接文件相關資料。 s6
ltrim: 去除連續空白。 gZqtO
mail: 寄出電子郵件。 !g;
max: 取得最大值。 H
mcrypt_cbc: 使用 CBC 將資料加/解密。 3Gf9Y
mcrypt_cfb: 使用 CFB 將資料加/解密。 Z(+v$
mcrypt_create_iv: 從隨機源將向量初始化。 CO
mcrypt_ecb: 使用 ECB 將資料加/解密。 z`6H
mcrypt_get_block_size: 取得編碼方式的區塊大小。 mm6gc
mcrypt_get_cipher_name: 取得編碼方式的名稱。 G#=yW
mcrypt_get_key_size: 取得編碼鑰匙大小。 ;E
mcrypt_ofb: 使用 OFB 將資料加/解密。 Q81@
md5: 計算字符串的 MD5 哈稀。 DwS
mhash: 計算哈稀值。 Msu
mhash_count: 取得哈稀 ID 的最大值。 l
mhash_get_block_size: 取得哈稀方式的區塊大小。 i(
mhash_get_hash_name: 取得哈稀演算法名稱。 {U]
microtime: 取得目前時間的 UNIX 時間戳記的百萬分之一秒值。 %DQ"
min: 取得最小值。 E
mkdir: 建立目錄。 ^S~/*y
mktime: 取得 UNIX 時間戳記。 ~
msql: 送出 query 字符串。 Z3^N
msql_affected_rows: 得到 mSQL 最後操作影響的列數目。 #uq
msql_close: 關閉 mSQL 數據庫連接。 ~+
msql_connect: 打開 mSQL 數據庫連接。 Cs
msql_createdb: 建立一個新的 mSQL 數據庫。 ?Mf
msql_create_db: 建立一個新的 mSQL 數據庫。 EPWb
msql_data_seek: 移動內部返回指針。 HF
msql_dbname: 取得目前所在數據庫名稱。 N
msql_dropdb: 刪除指定的 mSQL 數據庫。 n1LrX
msql_drop_db: 刪除指定的 mSQL 數據庫。 m,;g
msql_error: 取得最後錯誤資料。 FeH
msql_fetch_array: 返回數組資料。 h^Ym&l
msql_fetch_field: 取得字段資料。 /
msql_fetch_object: 返回類資料。 ^+
msql_fetch_row: 返回單列的各字段。 {
msql_fieldflags: 獲得字段的標誌。 2%
msql_fieldlen: 獲得字段的長度。 1L_msql_fieldname: 返回指定字段的名稱。 ~P(
msql_fieldtable: 獲得字段的資料表 (table) 名稱。 &
msql_fieldtype: 獲得字段的類型。 oG+,8
msql_field_seek: 配置指針到返回值的□某字段。 m(X
msql_freeresult: 釋放返回佔用內存。 7\M}t
msql_free_result: 釋放返回佔用內存。 bf&n
msql_listdbs: 列出可用數據庫 (database)。 lmV&
msql_listfields: 列出指定資料表的字段 (field)。 %;u
msql_listtables: 列出指定數據庫的資料表 (table)。 AX-
msql_list_dbs: 列出可用數據庫 (database)。 8O
msql_list_fields: 列出指定資料表的字段 (field)。 IK+0[n
msql_list_tables: 列出指定數據庫的資料表 (table)。 y
msql_numfields: 取得返回字段的數目。 -
msql_numrows: 取得返回列的數目。 4GX1K
msql_num_fields: 取得返回字段的數目。 `7IY`
msql_num_rows: 取得返回列的數目。 sQ
msql_pconnect: 打開 mSQL 服務器持續連接。 ZQ5 bS
msql_query: 送出一個 query 字符串。 u_
msql_regcase: 將字符串逐字返回大小寫字符。 z
msql_result: 取得查詢 (query) 的結果。 tX"k^
msql_selectdb: 選擇一個數據庫。 SQ~1c0
msql_select_db: 選擇一個數據庫。 ]
msql_tablename: 返回指定資料表的名稱。 r
mssql_affected_rows: 取得最後 query 影響的列數。 ,i
mssql_close: 關閉與數據庫的連接。 B`p
mssql_connect: 連上數據庫。 flc
mssql_data_seek: 移動列指針。 lq.
mssql_fetch_array: 返回數組資料。 :mx%vk
mssql_fetch_field: 取得字段資料。 R$93
mssql_fetch_object: 返回類資料。 a$
mssql_fetch_row: 返回單列的各字段。 >*[`*T
mssql_field_seek: 配置指針到返回值的□某字段。 ROw;'
mssql_free_result: 釋放返回佔用內存。 /4 +
mssql_num_fields: 取得返回字段的數目。 y$
mssql_num_rows: 取得返回列的數目。 )Hw]N%
mssql_pconnect: 打開 MS SQL 服務器持續連接。 Pry-
mssql_query: 送出一個 query 字符串。 + ^
mssql_result: 取得查詢 (query) 的結果。 |A<
mssql_select_db: 選擇一個數據庫。 &Bn
mt_getrandmax: 隨機數的最大值。 c"iU}
mt_rand: 取得隨機數值。 50
mt_srand: 配置隨機數種子。 QTR
mysql_affected_rows: 得到 MySQL 最後操作影響的列數目。 'Bt#
mysql_close: 關閉 MySQL 服務器連接。 N0S6]
mysql_connect: 打開 MySQL 服務器連接。 2wbaS
mysql_create_db: 建立一個 MySQL 新數據庫。 !PU
mysql_data_seek: 移動內部返回指針。 '|~
mysql_db_query: 送查詢字符串 (query) 到 MySQL 數據庫。 e96\
mysql_drop_db: 移除數據庫。 ~
mysql_errno: 返回錯誤資料代碼。 LEe~
mysql_error: 返回錯誤資料。 0{dA
mysql_fetch_array: 返回數組資料。 p8|6ML
mysql_fetch_field: 取得字段資料。 )jQ8qd
mysql_fetch_lengths: 返回單列各欄資料最大長度。 _mY
mysql_fetch_object: 返回類資料。 (F
mysql_fetch_row: 返回單列的各字段。 t2^"3
mysql_field_flags: 獲得目前字段的標誌。 &
mysql_field_len: 獲得目前字段的長度。 i.s
mysql_field_name: 返回指定字段的名稱。 v
mysql_field_seek: 配置指針到返回值的□某字段。 wf<1w
mysql_field_table: 獲得目前字段的資料表 (table) 名稱。 e)
mysql_field_type: 獲得目前字段的類型。 7'r
mysql_free_result: 釋放返回佔用內存。 LZ2{+
mysql_insert_id: 返回最後一次使用 INSERT 指令的 ID。 )YE
mysql_list_dbs: 列出 MySQL 服務器可用的數據庫 (database)。 Iim
mysql_list_fields: 列出指定資料表的字段 (field)。 #`1T]
mysql_list_tables: 列出指定數據庫的資料表 (table)。 9k
mysql_num_fields: 取得返回字段的數目。 z`^,
mysql_num_rows: 取得返回列的數目。 (O
mysql_pconnect: 打開 MySQL 服務器持續連接。 Rz
mysql_query: 送出一個 query 字符串。 F
mysql_result: 取得查詢 (query) 的結果。 hF\/
mysql_select_db: 選擇一個數據庫。 Ebn
mysql_tablename: 取得資料表名稱。 o
next: 將數組的內部指針向後移動。 .\P~XR
nl2br: 將換行字符轉成
。 d
number_format: 格式化數字字符串。 o
OCIBindByName: 讓動態 SQL 可使用 PHP 變量。 6
OCIColumnIsNULL: 測試返回行是否為空的。 Y
OCIColumnSize: 取得字段類型的大小。 ;
OCICommit: 將 Oracle 的交易處理付諸實行。 5)HV
OCIDefineByName: 讓 SELECT 指令可使用 PHP 變量。 SHU@Te
OCIExecute: 執行 Oracle 的指令部分。 ain
OCIFetch: 取得返回資料的一列 (row)。 ,5&CpL
OCIFetchInto: 取回 Oracle 資料放入數組。 bbNlm
OCILogOff: 關閉與 Oracle 的鏈接。
OCILogon: 打開與 Oracle 的鏈接。 -jt;I
OCINewDescriptor: 初始新的 LOB/FILE 描述。 JH
OCINumRows: 取得受影響字段的數目。 _~~FQ
OCIParse: 分析 SQL 語法。 YA
OCIResult: 從目前列 (row) 的資料取得一欄 (column)。 [
OCIRollback: 撤消當前交易。 JlTeLM
OctDec: 八進位轉十進位。 D
odbc_autocommit: 開關自動改動功\能。 g+`kV
odbc_binmode: 配置二進位資料處理方式。 0}~
odbc_close: 關閉 ODBC 鏈接。 D]F{
odbc_close_all: 關閉所有 ODBC 鏈接。 T
odbc_commit: 改動 ODBC 數據庫。 $V
odbc_connect: 鏈接至 ODBC 數據庫。 hLLg
odbc_cursor: 取得游標名。 90
odbc_do: 執行 SQL 指令。 S}!l@
odbc_exec: 執行 SQL 指令。 s|
odbc_execute: 執行預置 SQL 指令。 4
odbc_fetch_into: 取得返回的指定列。 JnQOs
odbc_fetch_row: 取得返回一列。 !T|IZ<
odbc_field_len: 取得字段資料長度。 }M!A;
odbc_field_name: 取得字段名稱。 2EUDZ
odbc_field_type: 取得字段資料類型。 @g$xJ7
odbc_free_result: 釋出返回資料的內存。 UbX
odbc_longreadlen: 配置返回欄的最大值。 t+|@d
odbc_num_fields: 取得字段數目。 iPP>
odbc_num_rows: 取得返回列數目。 %
odbc_pconnect: 長期鏈接至 ODBC 數據庫。 m)T
odbc_prepare: 預置 SQL 指令。 4V[
odbc_result: 取得返回資料。 */vmo
odbc_result_all: 返回 HTML 表格資料。 hj
odbc_rollback: 撤消當前交易。 FHl
odbc_setoption: 調整 ODBC 配置。 R$@r
opendir: 打開目錄 handle。 0}openlog: 打開系統紀錄。 d
Ora_Bind: 鏈接 PHP 變量到 Oracle 參數。 :]XiF
Ora_Close: 關閉一個 Oracle 的 cursor。 Y5
Ora_ColumnName: 得到 Oracle 返回列 (Column) 的名稱。 pQg
Ora_ColumnSize: 取得字段類型的大小。 q;ct
Ora_ColumnType: 得到 Oracle 返回列 (Column) 的類型。 0
Ora_Commit: 將 Oracle 的交易處理付諸實行。 vTacfW
Ora_CommitOff: 關閉自動執行 Oracle 交易改動的功\能。 1{XmD
Ora_CommitOn: 打開自動執行 Oracle 交易改動的功\能。 o.yN
Ora_Do: 快速的 SQL 查詢。 &9eBVL
Ora_Error: 獲得 Oracle 錯誤資料。 7c >,
Ora_ErrorCode: 獲得 Oracle 錯誤代碼。 ~0
Ora_Exec: 執行 Oracle 的指令部分。 ?
Ora_Fetch: 取得返回資料的一列 (row)。 `U03!
Ora_FetchInto: 取回 Oracle 資料放入數組。 (
Ora_GetColumn: 從返回列 (row) 的資料取得一欄 (column)。 jq/yd
Ora_Logoff: 結束與 Oracle 的鏈接。 Lr#
Ora_Logon: 打開與 Oracle 的鏈接。 J26!
Ora_Numcols: 取得字段的數目。 #}9'-
Ora_Open: 打開 Oracle 的 cursor。 '
Ora_Parse: 分析 SQL 語法。 $
Ora_PLogon: 打開與 Oracle 的長期鏈接。 ts,
Ora_Rollback: 撤消當前交易。 H
Ord: 返回字符的序數值。 .{[&x
pack: 壓縮資料到位字符串之中。 SF%fZ
parse_str: 解析 query 字符串成變量。 fYuDb
parse_url: 解析 URL 字符串。 >
passthru: 執行外部程序並不加處理輸出資料。 H,~
pclose: 關閉文件。 0Dar
PDF_add_annotation: 加入註釋。 S:$C
PDF_add_outline: 目前頁面加入書籤。 ECb
PDF_arc: 繪弧。 Wy>
PDF_begin_page: 啟始 PDF 文件頁面。 9
PDF_circle: 繪圓。 &HK|g
PDF_clip: 組合所有向量。 =B-G
PDF_close: 關閉 PDF 文件。 [
PDF_closepath: 形成封閉的向量形狀。 4j@N
PDF_closepath_fill_stroke: 形成封閉的向量形狀沿向量繪線並填滿。 qo~#~
PDF_closepath_stroke: 形成封閉的向量形狀並沿向量繪線。 h
PDF_close_image: 關閉圖文件。 Y9JV
PDF_continue_text: 輸出文字。 6JIL19
PDF_curveto: 繪貝氏曲線。 g$+
PDF_endpath: 關閉目前向量。 WiAO
PDF_end_page: 關閉 PDF 文件頁面。 3N{^
PDF_execute_image: 放置 PDF 文件中圖片到指定位置。 byq
PDF_fill: 填滿目前的向量。 )
PDF_fill_stroke: 填滿目前的向量並沿向量繪線。 ",m!3
PDF_get_info: 返回文件資料。 WKPDF_lineto: 繪直線。 y7
PDF_moveto: 配置處理的坐標點。 Ol{
PDF_open: 建立新的 PDF 文件。 3pPDF_open_gif: 打開 GIF 圖文件。 YfO\w
PDF_open_jpeg: 打開 JPEG 圖文件。 n
PDF_open_memory_image: 打開內存圖文件。 W=K;a
PDF_place_image: 放置圖片到 PDF 文件指定位置。 .*W4d
PDF_put_image: 放置圖片到 PDF 文件。 0,I'
PDF_rect: 繪長方形。 p+[(PA
PDF_restore: 還原環境變量。 p0eKE
PDF_rotate: 旋轉類。 JtN
PDF_save: 儲存環境變量。 Tn;,y|
PDF_scale: 縮放類。 h
PDF_setdash: 配置虛線樣式。 1C75s
PDF_setflat: 配置平滑值。 CD
PDF_setgray: 指定繪圖的顏色為灰階並填入。 O4TE;t
PDF_setgray_fill: 指定填入的顏色為灰階。 *{7"WW
PDF_setgray_stroke: 指定繪圖的顏色為灰階。 `ATGQ
PDF_setlinecap: 配置 linecap 參數。 &3r~
PDF_setlinejoin: 配置連接參數。 Q
PDF_setlinewidth: 配置線寬。 Xc\l
PDF_setmiterlimit: 配置斜邊界限。 62
PDF_setrgbcolor: 指定繪圖的顏色為彩色並填入。 X
PDF_setrgbcolor_fill: 指定填入的顏色為彩色。 =o'e:
PDF_setrgbcolor_stroke: 指定繪圖的顏色為彩色。 09y6
PDF_set_char_spacing: 配置字符間距。 '
PDF_set_duration: 配置二頁的切換時間。 =b/
PDF_set_font: 配置使用的字型及大小。 w&m
PDF_set_horiz_scaling: 配置文字水平間距。 ^'
PDF_set_info_author: 配置文件作者。 Qk(
PDF_set_info_creator: 配置建文件者字符串。 -
PDF_set_info_keywords: 配置文件的關鍵字。 #ikL
PDF_set_info_subject: 配置文件主題。 m/Gc^Y
PDF_set_info_title: 配置文件標題。 E7p
PDF_set_leading: 配置行距。 vJ
PDF_set_text_matrix: 配置文字矩陣。 a
PDF_set_text_pos: 配置文字位置。 Dt
PDF_set_text_rendering: 配置文字表現方式。 mDM1
PDF_set_text_rise: 配置文字高度。 8EmS"
PDF_set_transition: 配置頁的轉換。 nL0a
PDF_set_word_spacing: 配置字間距。 E.y^
PDF_show: 輸出字符串到 PDF 文件。 w8GXc
PDF_show_xy: 輸出字符串到指定坐標。 7U
PDF_stringwidth: 計算字符串的寬度。 .[QF$i
PDF_stroke: 沿向量繪線。 2R1H
PDF_translate: 移動原點。 ybZ6
pfsockopen: 打開網絡的 Socket 持續鏈接。 C=2
pg_Close: 關閉 PostgreSQL 服務器連接。 gW
pg_cmdTuples: 取得被 SQL 指令影響的資料筆數。 <\5a
pg_Connect: 打開 PostgreSQL 服務器連接。 N4
pg_DBname: 取得目前的數據庫名稱。 A3/&O
pg_ErrorMessage: 返回錯誤資料。 LT$DS3
pg_Exec: 執行 query 指令。 C'fJh{
pg_Fetch_Array: 返回數組資料。 UCN'
pg_Fetch_Object: 返回類資料。 gx
pg_Fetch_Row: 返回單列的各字段。 vHRv
pg_FieldIsNull: 檢查字段是否有資料。 r
pg_FieldName: 返回指定字段的名稱。 c
pg_FieldNum: 取得指定字段的行數。 ?C
pg_FieldPrtLen: 計算可列示的長度。 z
pg_FieldSize: 計算指定字段的長度。 K0Y
pg_FieldType: 獲得目前字段的類型。 pK
pg_FreeResult: 釋放返回佔用內存。 %(xX55
pg_GetLastOid: 取得最後的類代碼。 =aT
pg_Host: 取得連接機器名稱。 4cS
pg_loclose: 關閉大型類。 S|a-
pg_locreate: 建立大型類。 m}&
pg_loopen: 打開大型類。 u@NV
pg_loread: 讀取大型類。 N&OX
pg_loreadall: 讀取大型類並輸出。 M(
pg_lounlink: 刪除大型類。 +@EeJ
pg_lowrite: 讀取大型類。 (
pg_NumFields: 取得返回字段的數目。 ,n$"(G
pg_NumRows: 取得返回列的數目。 ECimSz
pg_Options: 取得連接機器選項。 eC5
pg_pConnect: 打開 PostgreSQL 服務器持續連接。 F9o=A2
pg_Port: 取得連接機器埠號。 rQ1pX
pg_Result: 取得查詢 (query) 的結果。 {-@
pg_tty: 取得連接機器終端機。 +
phpinfo: 返回 PHP 所有相關資料。 nF
phpversion: 返回 PHP 版本資料。 eu
pi: 圓周率。 XBHu
popen: 打開文件。 4f=GKz
pos: 返回數組目前的元素。 0Y"e
pow: 次方。 zQsR"0
preg_match: 字符串比對解析。 qYk`z]
preg_match_all: 字符串整體比對解析。 GP
preg_replace: 字符串比對解析並取代。 [*8Uq
preg_split: 將字符串依指定的規則切開。 M
prev: 將數組的內部指針往前移動。 &n
print: 輸出字符串。 J5c
printf: 輸出格式化字符串。 _phA
putenv: 配置系統環境變量。 blA
quoted_printable_decode: 將 qp 編碼字符串轉成 8 位字符串。 '
QuoteMeta: 加入引用符號。 mL'8
rand: 取得隨機數值。 v|+F
range: 建立一個整數範圍的數組。 dX|:
rawurldecode: 從 URL 專用格式字符串還原成普通字符串。 cp m
rawurlencode: 將字符串編碼成 URL 專用格式。 !4KT~[
readdir: 讀取目錄 handle。 h
readfile: 輸出文件。 kz<@D6
readgzfile: 讀出壓縮文件。 z
readlink: 返回符號鏈接 (symbolic link) 目標文件。 p
recode_file: 記錄文件或文件請求到記錄中。 k
recode_string: 記錄字符串到記錄中。 54z"&
register_shutdown_function: 定義 PHP 程序執行完成後執行的函數。 45r
rename: 更改文件名。 r
reset: 將數組的指針指到數組第一個元素。 "o(Ew6
rewind: 重置開文件的讀寫位置指針。 LJ8ao
rewinddir: 重設目錄 handle。 Xj%X!-
rmdir: 刪除目錄。 GK
round: 四捨五入。 1e;4
rsort: 將數組的值由大到小排序。 U{g]
sem_acquire: 捕獲信號。 X3/N\
sem_get: 取得信號代碼。 bftF
sem_release: 釋出信號。 [_x$C
serialize: 儲存資料到系統中。 7
session_decode: Session 資料解碼。 (3]C
session_destroy: 結束 session。 >NllE
session_encode: Session 資料編碼。 z(lf*C
session_id: 存取目前 session 代號。 L
session_is_registered: 檢查變量是否註冊。 ]7v
session_module_name: 存取目前 session 模塊。 %jt_D:
session_name: 存取目前 session 名稱。 M%
session_register: 註冊新的變量。 6~W9r{
session_save_path: 存取目前 session 路徑。 wb
session_start: 初始 session。 7OF3&
session_unregister: 刪除已註冊變量。 ]1Qj
setcookie: 送出 Cookie 資料到瀏覽器。 bJN7
setlocale: 配置地域化資料。 oC
settype: 配置變量類型。 {
set_file_buffer: 配置文件緩衝區大小。 *U=R
set_magic_quotes_runtime: 配置 magic_quotes_runtime 值。 suMlb!
set_socket_blocking: 切換擱置與無擱置模式。 t`i=p4
set_time_limit: 配置該頁最久執行時間。 (
shm_attach: 打開建立共享內存空間。 RF
shm_detach: 中止共享內存空間鏈接。 u5%mnb
shm_get_var: 取得內存空間中指定的變量。 6_nw_?
shm_put_var: 加入或更新內存空間中的變量。 %SoM
shm_remove: 清除內存空間。 O7Ad-R
shm_remove_var: 刪除內存空間中指定的變量。 \>x
shuffle: 將數組的順序弄混。 gvxa/
similar_text: 計算字符串相似度。 !xFJ
Sin: 正弦計算。 N1c
sizeof: 獲知數組的大小。 i
sleep: 暫停執行。 HjF8o
snmpget: 取得指定類識別碼。 S:
snmpwalk: 取得所有類。 &b
snmpwalkoid: 取得網絡本體樹狀資料。 Zs
snmp_get_quick_print: 取得 UCD 函數庫中的 quick_print 值。 s_2
snmp_set_quick_print: 配置 UCD 函數庫中的 quick_print 值。 UV
solid_close: 關閉 solid 鏈接。 x.5
solid_connect: 鏈接至 solid 數據庫。 L*v?k
solid_exec: 執行 SQL 指令。 79g;
solid_fetchrow: 取得返回一列。 .G|]
solid_fieldname: 取得字段名稱。 h*S
solid_fieldnum: 取得字段數目。 l[Q
solid_freeresult: 釋出返回資料的內存。 TN&
solid_numfields: 取得字段數目。 VY
solid_numrows: 取得返回列數目。 F
solid_result: 取得返回資料。 t
sort: 將數組排序。 {
soundex: 計算字符串的讀音值 I
split: 將字符串依指定的規則切開。 aM@
sprintf: 將字符串格式化。 #
sql_regcase: 將字符串逐字返回大小寫字符。 *Ii;
Sqrt: 開平方根。 O+Ej&
srand: 配置隨機數種子。 i:'^D
stat: 取得文件相關資料。 >()_
strchr: 尋找第一個出現的字符。 (n
strcmp: 字符串比較。 9pDm|
strcspn: 不同字符串的長度。 o%"+KD
strftime: 將服務器的時間本地格式化。 w
StripSlashes: 去掉反斜線字符。 LY
strip_tags: 去掉 HTML 及 PHP 的標記。 7|
strlen: 取得字符串長度。 s\fh
strpos: 尋找字符串中某字符最先出現處。 p^
strrchr: 取得某字符最後出現處起的字符串。 /b
strrev: 顛倒字符串。 "$#4r?
strrpos: 尋找字符串中某字符最後出現處。 0!wIa
strspn: 找出某字符串落在另一字符串遮罩的數目。 $kcq
strstr: 返回字符串中某字符串開始處至結束的字符串。 \Fq0UH
strtok: 切開字符串。 qCz
strtolower: 字符串全轉為小寫。 M
strtoupper: 字符串全轉為大寫。 $ K$E
strtr: 轉換某些字符。 *%TmB
strval: 將變量轉成字符串類型。 -
str_replace: 字符串取代。 7pA{6K
substr: 取部份字符串。 ,zhy2k
sybase_affected_rows: 取得最後 query 影響的列數。 Nuq
sybase_close: 關閉與數據庫的連接。 BHw
sybase_connect: 連上數據庫。 K_Ksybase_data_seek: 移動列指針。 ,e
sybase_fetch_array: 返回數組資料。 }>0
sybase_fetch_field: 取得字段資料。 [BxJ
sybase_fetch_object: 返回類資料。 {ZC6a
sybase_fetch_row: 返回單列的各字段。 >8F
sybase_field_seek: 配置指針到返回值的□某字段。 v
sybase_free_result: 釋放返回佔用內存。 xtO4V
sybase_num_fields: 取得返回字段的數目。 d,/
sybase_num_rows: 取得返回列的數目。 u%rsybase_pconnect: 打開服務器持續連接。 R
sybase_query: 送出一個 query 字符串。 O^
sybase_result: 取得查詢 (query) 的結果。 3D5
sybase_select_db: 選擇一個數據庫。 s.
symlink: 建立符號鏈接 (symbolic link)。 Lgr
syslog: 紀錄至系統紀錄。 ndyvD
system: 執行外部程序並顯示輸出資料。 iiix{
Tan: 正切計算。 D94
tempnam: 建立只一的臨時文件。 P={:r
time: 取得目前時間的 UNIX 時間戳記。 -<
touch: 配置最後修改時間。 u87<
trim: 截去字符串首尾的空格。 |lJ,p
uasort: 將數組依使用者自定的函數排序。 },D0
ucfirst: 將字符串第一個字符改大寫。 a[}[7
ucwords: 將字符串每個字第一個字母改大寫。 "/[
uksort: 將數組的索引依使用者自定的函數排序。 gga
umask: 改變目前的文件屬性遮罩 umask。 *
uniqid: 產生只一的值。 1T)`I
unlink: 刪除文件。 2|\Qi\
unpack: 解壓縮位字符串資料。 v]%0
unserialize: 取出系統資料。 U
unset: 刪除變量。 L|@`a=
urldecode: 還原 URL 編碼字符串。 9YA
urlencode: 將字符串以 URL 編碼。 2W3SeG
usleep: 暫停執行。 |
usort: 將數組的值依使用者自定的函數排序。 6{;}|"
utf8_decode: 將 UTF-8 碼轉成 ISO-8859-1 碼。 i{QnQ
utf8_encode: 將 ISO-8859-1 碼轉成 UTF-8 碼。 IWmvIl
virtual: 完成apache服務器的子請求 (sub-request)。 9$Jl$S
vm_addalias: 加入新別名。 >2f
vm_adduser: 加入新使用者。 A V5
vm_delalias: 刪除別名。 f
vm_deluser: 刪除使用者。 /b
vm_passwd: 改變使用者密碼。 2xUt$N
wddx_add_vars: 將 WDDX 封包連續化。 ,%
wddx_deserialize: 將 WDDX 封包解連續化。 paCS
wddx_packet_end: 結束的 WDDX 封包。 [fIO5
wddx_packet_start: 開始新的 WDDX 封包。 !1
wddx_serialize_value: 將單一值連續化。 z;0o4
wddx_serialize_vars: 將多值連續化。 #nU^w
xml_error_string: 取得 XML 錯誤字符串。 7
xml_get_current_byte_index: 取得目前解析為第幾個位組。 kc
xml_get_current_column_number: 獲知目前解析的第幾字段。 ]Al1u
xml_get_current_line_number: 取得目前解析的行號。 K3p[$Z
xml_get_error_code: 取得 XML 錯誤碼。 J0
xml_parse: 解析 XML 文件。 {6
xml_parser_create: 初始 XML 解析器。 xml_parser_free: 釋放解析佔用的內存。 '>.g
xml_parser_get_option: 取得解析使用的選項。 _4T
xml_parser_set_option: 配置解析使用的選項。 2c@2@[
xml_set_character_data_handler: 建立字符資料標頭。 +]R
xml_set_default_handler: 建立默認標頭。 J
xml_set_element_handler: 配置元素的標頭。 P)&MR
xml_set_external_entity_ref_handler: 配置外部實體參引的標頭。 TLfDJ8
xml_set_notation_decl_handler: 配置記法宣告的標頭。 tuepT
xml_set_object: 使 XML 解析器用類。 u<{[
xml_set_processing_instruction_handler: 建立處理指令標頭。 %F)H3}
xml_set_unparsed_entity_decl_handler: 配置未解析實體宣告的標頭。 j
yp_errno: 取得先前 YP 操作的錯誤碼。 Y&8"<.
yp_err_string: 取得先前 YP 操作的錯誤字符串。 X
yp_first: 返回 map 上第一筆符合的資料。 !(T
yp_get_default_domain: 取得機器的 Domain。 f?
yp_master: 取得 NIS 的 Master。 &wE5Qj
yp_match: 取得指定資料。 0^6
yp_next: 指定 map 的下筆資料。 q)}eK
yp_order: 返回 map 的序數。 Q

PHP中檢查字串是否含有非中文字

function chinese_only($arg_strContent)
{
$blnChineseOnly= true;
$intLoopCount = 0;
$intContentLength = strlen($arg_strContent);
while ($intLoopCount < $intContentLength)
{
$chrSingle = substr($arg_strContent,$intLoopCount,1);
if(ord($chrSingle) > 0x80)
{
$chrSingle = substr($arg_strContent,$intLoopCount,2);
$intLoopCount++;
if(!isBig5($chrSingle))
{
$blnChineseOnly = false;
break;
}
}
else
{
$blnChineseOnly = false;
break;
}
$intLoopCount++;

}
return !$blnChineseOnly;
}
function isBig5($char="")
{
$bc = hexdec(bin2hex($char));
if(($bc>=0xa440 && $bc<= 0xc67e)||($bc>=0xc940 && $bc<= 0xf9dc))
{
return true;
}
else
{
return false;
}
}

PHP中對文本文件操作很好的類

class CtbClass {

var $file;
var $index;

//建立一個文件並寫入輸入
function null_write($new)
{
$f=fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$new);
fclose($f);
}
// 添加數據記錄到文件末端
function add_write($new) {
$f=fopen($this->file,"a");
flock($f,LOCK_EX);
fputs($f,$new);
fclose($f);
}
// 配合readfile()的返回一起使用,把一行數據轉換為一維數組
function make_array($line) {
$array = explode("\x0E",$line);
return $array;
}

//把為一維數組轉換一行數據
function join_array($line) {
$array = join("\x0E",$line);
return $array;
}
// 返回數據文件的總行數
function getlines() {
$f=file($this->file);
return count($f);
}
// 返回下一行的數據記錄(備用)
function next_line() {
$this->index=$this->index++;
return $this->get();
}

// 返回上一行的數據記錄(備用)
function prev_line() {
$this->index=$this->index--;
return $this->get();
}
// 返回當前行的數據記錄數據較小
function get() {
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for($i=0;$i<=$this->index;$i++) {
$rec=fgets($f,1024);
}
$line=explode("\x0E",$rec);
fclose($f);
return $line;
}
// 返回當前行的數據記錄數據較大
function get_big_file() {
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for($i=0;$i<=$this->index;$i++) {
$rec=fgets($f,1024*5);
}
$line=explode("\x0E",$rec);
fclose($f);
return $line;
}
// 打開數據文件---以一維數組返回文件內容
function read_file() {
if (file_exists($this->file)) {
$line =file($this->file);
}
return $line;
}
// 打開數據文件---以二維數組返回文件內容
function openFile() {
if (file_exists($this->file)) {
$f =file($this->file);
$lines = array();
foreach ($f as $rawline) {
$tmpline = explode("\x0E",$rawline);
array_push($lines, $tmpline);
}
}
return $lines;
}
// 傳入一個數組,合併成一行數據,重寫整個文件
function overwrite($array){
$newline = implode("\x0E",$array);
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newline);
fclose($f);
}

// 添加一行數據記錄到文件末端
function add_line($array,$check_n=1) {
$s=implode("\x0E",$array);
$f=fopen($this->file,"a");
flock($f,LOCK_EX);
fputs($f,$s);
if ($check_n==1) fputs($f,"\n");
fclose($f);
}

// 插入一行數據記錄到文件最前面
function insert_line($array) {
$newfile = implode("\x0E",$array);
$f = fopen($this->file,"r");
flock($f,LOCK_SH);
while ($line = fgets($f,1024)) {
$newfile .= $line;
}
fclose($f);
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}

// 更新所有符合條件的數據記錄,適用於每行字節數據較大的情況
function update($column,$query_string,$update_array) {
$update_string = implode("\x0E",$update_array);
$newfile = "";
$fc=file($this->file);
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for ($i=0;$i $list = explode("\x0E",$fc[$i]);
if ($list[$column] != $query_string) {
$newfile = $newfile.chop($fc[$i])."\n";
} else {
$newfile = $newfile.$update_string;
}
}
fclose($f);
$f=fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}

// 更新所有符合條件的數據記錄,適用於每行字節數據較小的情況
function update2($column,$query_string,$update_array) {
$newline = implode("\x0E",$update_array);
$newfile = "";
$f = fopen($this->file,"r");
flock($f,LOCK_SH);
while ($line = fgets($f,1024)) {
$tmpLine = explode("\x0E",$line);
if ($tmpLine[$column] == $query_string) {
$newfile .= $newline;
} else {
$newfile .= $line;
}
}
fclose($f);
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}

// 刪除所有符合條件的數據記錄,適用於每行字節數據較大的情況
function delete($column,$query_string) {
$newfile = "";
$fc=file($this->file);
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for ($i=0;$i $list = explode("\x0E",$fc[$i]);
if ($list[$column] != $query_string) {
$newfile = $newfile.chop($fc[$i])."\n";
}
}
fclose($f);
$f=fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}

// 刪除所有符合條件的數據記錄,適用於每行字節數據較小的情況
function delete2($column,$query_string){
$newfile = "";
$f = fopen($this->file,"r");
flock($f,LOCK_SH);
while ($line = fgets($f,1024)) {
$tmpLine = explode("\x0E",$line);
if ($tmpLine[$column] != $query_string) {
$newfile .= $line;
}
}
fclose($f);
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}

//取得一個文件裡某個字段的最大值
function get_max_value($column) {
$tlines = file($this->file);
for ($i=0;$i<=count($tlines);$i++) {
$line=explode("\x0E",$tlines[$i]);
$get_value[]=$line[$column];
}
$get_max_value = max($get_value);
return $get_max_value;
}


// 根據數據文件的某個字段是否包含$query_string進行查詢,以二維數組返回所有符合條件的數據
function select($column, $query_string) {
$tline = $this->openfile();
$lines = array();
foreach ($tline as $line) {
if ($line[$column] == $query_string) {
array_push($lines, $line);
}
}

return $lines;
}

// 功能與function select()一樣,速度可能略有提升
function select2($column, $query_string) {
if (file_exists($this->file)) {
$tline = $this->read_file();
foreach ($tline as $tmpLine) {
$line = $this->make_array($tmpLine);
if ($line[$column] == $query_string) {
$lines[]=$tmpLine;
}
}
}

return $lines;
}

// 根據數據文件的某個字段是否包含$query_string進行查詢,以一維數組返回第一個符合條件的數據
function select_line($column, $query_string) {
$tline = $this->read_file();
foreach ($tline as $tmpLine) {
$line = $this->make_array($tmpLine);
if ($line[$column] == $query_string) {
return $line;
break;
}
}
}
// select next/prev line(next_prev ==> 1/next, 2/prev) by cx
function select_next_prev_line($column, $query_string, $next_prev) {
$tline = $this->read_file();
$line_key_end = count($tline) - 1;
$line_key = -1;
foreach ($tline as $tmpLine) {
$line_key++;
$line = $this->make_array($tmpLine);
if ($next_prev == 1) { // next?
if ($line[$column] == $query_string) {
if ($line_key == 0) {
return 0;
} else {
$line_key_up = $line_key - 1;
return $up_line;
}
} else {
$up_line = $line;
}
} elseif ($next_prev == 2) { // prev?
if ($line[$column] == $query_string) {
if ($line_key == $line_key_end) {
return 0;
} else {
$line_key_down = $line_key + 1;
break;
}
}
} else {
return 0;
}
}
$down_line = $this->make_array($tline[$line_key_down]);
return $down_line;
}



}

PHP上傳實例

上傳檔案的網頁





Send this file:



接收參數陣列
檔案名稱
$_FILES['userfile']['name']

檔案格式(image/jpeg)
$_FILES['userfile']['type']

檔案大小
$_FILES['userfile']['size']

檔案暫存的位置(伺服器上暫存的位置,必須要移動到正確的位置)
$_FILES['userfile']['tmp_name']

錯誤訊息
$_FILES['userfile']['error']

語法例:


--------------------------------------------------------------------------------

// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '
';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\\\\n";
} else {
echo "Possible file upload attack!\\\\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "
";

?>

--------------------------------------------------------------------------------

多檔同時傳送陣列實例

Pictures:

foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
move_uploaded_file($tmp_name, "data/$name");
}
}
?>

php基本教學

1. General
// include tag, ; to separate command
phpinfo(); // return php setting info
print("hello"); // print
print "hello"; // print, without ()
\" // \ is escape code
\n\r\t // new line, return, tab
(\r\n) // line change character
// # // comment
/* */ // multiple line comment
c:\windows\php.ini // configuration
c:\php\php.ini-dist // original config

2. Variable
$name // variable name start with $, case sensitive
// no initialize nor declare
// number, string, array and object
string // "$name" translate, '$name' not
$variable="happy"; // assignment
$number=(integer) 5; // casting
HOSTNAME // predefined environmental variables,
check phpinfo() for the list

3. Forms

form_variable // parsed to $form_variable, no decode needed
// when same variable is assigned in php,
form_variable with same name is discarded
4. Numbers

printf ("%01.2f",$amount); // formatted print a number. 0-place holder
1-digit to left of decimal point
2-digit to right of decimal point
sprintf // formatted print to a variable, not screen
$number++; // increment
round($amount); // built-in functions, round to integer (4~5)
round($amount,1); // round to 1 d.p.
ceil(),floor() // integer
abs() // absolute
srand((double) microtime()*1000000); // seed the rand() function
$randnum=rand(); // run srand() first to ensure randum
$randnum=rand(0,10); // random number with limits

5. Strings
$string=trim($string); // trim space at begin and end
ltrim(), rtrim() // trim either end
$str1.$str2 // . concatenation
urlencode($str); // encode string for url, %20 for space
urldecode();
addslashes($str); // encode string for database, escape
addcslashes($str,"\^$?.+*[|]{}"); // encode string for certain characters
stripslashes($str);
stripcslashes($str);
crypt($str); // encrypt, cannot be decrypt for password store
encrypt(); // encrypt, can be decrypt
decrypt(); // decrypt
md5(); // similar to crypt
strtok($str,"\t"); // substr token, until tab
substr($str,0,10); // substr by position
strlen($str); // string length

6. control structure
if () statement; // single statement
if () {}; // multiple statement
if ($str) // if $str exist and not zero
if (isset($str)) // if $str exist, zero also return true
== != <= >= // comparison operator
AND && OR || NOT XOR // logical operator
if () {} elseif () {} else {} // else and else if
date("A") date("H") // return server datetime - AM, hour
switch ($str) { // switch conditional
case "val1":
statements1;
break;
case "Val2":
statements2;
break;
default:
statements3;
break;
}
while () {} // while loop
do {} while () // do first while loop
for ($i=0; $i<10; $i++) {} // for loop

7. Array
$list=array("apple","orange"); // simple array with index
$list[0]; // call first item
$list=array(1=>"apple",2=>"oragne"); // array with index assignment
$list=array("mon"=>"apple,
"tue"=>"orange"); // array with key is string
$list["mon"]; // call item with key
print $list // return a word "array" to know existence
$list[]="mango"; // append new item to end of array
count($list) // return number of items
$newarray=merge($list1,$list2) // merge two arrays

$line=each($list) // array with key = "key" and "value" for each item in a loop
$line["key"] $line["value"] // call key and value of that item in a loop

sort($list) rsort($list) // sort values in ascend and descend
ksort($list) krsort($list) // sort keys in ascend and descend keeping values correlated
asort($list) arsort($list) // sort values in ascend and descend order keeping keys correlated
reset($list); // reset pointer to top in an array after sorting

$array=explode("\t",$str); // get array from tab separated line (split)
$str=implode("\t",$array); // get string from array with tab between (join)

$list=array($array1,$array2,$var1,30); // array can have different element include other array
$list[0][2]; // call an multi-D element
print "happy {$list[0][2]}"; // multi-D element need {} when print

8. Regex
\ // escape
. // match any single char
a{3,5} // match at least 3, at most 5 a's
a? // "a{0,1}"
a+ // "a{1,}"
a* // "a{0,}"
^a$ // begin and end
(ab) (a|b) // group char, both , or
[a-z] [A-Z] [0-9] // class
[a-zA-Z0-9] // join class
[^a] // not a class
[[:alpha:]] // predefined class
[[:digit:]] [[:alnum:]] [[:space:]] [[:upper:]] [[:lower:]] [[:punct:]]
.+@.+\..+ // regex for email address

ereg("pattern","string"); // return boolean
eregi("pattern","string"); // return boolean, case insensitive
ereg_replace("pat","replace","str"); // replacing matched pattern
eregi_replace(); //
\\1 \\2 // back referencing str in ()


9. Function

function FUNAME ($arg1,$arg2=12) { // function definition, with $arg2 set a default value
global $var // make a local variable within a function accessible to outside, vice versa
return $value // return value
}

10. Files and Directories

r W a // mode: read, write, append
$filepointer=fopen($file,"mode"); // open file with a pointer
fwrite($filepointer,"text"); // write text
fclose($filepointer); // close file
is_writeable($file); // test file writeable before open

$array=file($file); // read file into array

mkdir("path","0666") // new directory

// upload file html tag


if ($upfile) { // save file only if file is posted
print ("filename: $upfile_name

");
print ("filetype: $upfile_type

");
print ("filesize: $upfile_size

");
copy($upfile,"upload/$upfile_name"); // save the file
unlink($upfile); // release the temp file handle
}

rename($oldname,$newname); // rename file or directory
filesize($file); // return file size in byte
$handle=opendir("path");
readdir ($handle); // read one file name at a time
closedir ($handle);
is_file($file); // test if file valid

11. Database - mySQL

$link=mysql_connect("localhost","user","password"); // connect mysql with handle
mysql_close($link); // close connection
mysql_create_db("dbname",$link); // create new db in connection $link
mysql_db_query("dbname",$query,$link); // $query is SQL statement

$result=mysql_db_query(); // read data to $result
while ($row=mysql_fetch_array($result)) {} // get each record to $row array

12. Cookie
// cookie must be sent before html, in the header
setcookie("user","siuho",time()+"1800","path","domain","secure"); // set cookie
$user // read cookie value
setcookie("user","",time()-60"); // delete a cookie

13. Web Application
include("file.php"); // include php script file, only take effect when called
require("file.php"); // include php script file, always loaded
// please mind the order of appearance of variables in parent and include file
date("format",$timestamp); // return format (compulsory) defined. default current time
A - AM/PM
a - am/pm
d - 01-31
D - Sun-Sat
F - January-December
g - 1-12 // hour without leading zero
G - 0-23
h - 01-12 // hour with leading zero
H - 00-23
i - 00-59 // minute with leading zero
j - 1-31
l - Sunday-Saturday
m - 01-12 // month with leading zero
M - Jan-Dec
n - 1-12 // month without leading zero
s - 00-59 // second with leading zero
S - st,nd,rd,...
t - 28-31 // number of days in the month
U // seoonds since the epoch
w - 0-6 // day of the week
y - 00-99 // year as 2 digit
Y - 2002,... // year as 4 digit
z - 0-365 // day of the year

mktime(hour,min,sec,mon,day,year); // create timestamp variable, arg in digit

// php header function, before sending html
header("Location:page.php") // redirection
header("Set-cookie:name=value;expires=expiration"); // send cookie

mail($to,$subject,$content,"From:contact@siuho.com"); // send email

print() or die(); // die function for error message

PHP 字串比較問題

PHP 字串比較問題
在 PHP 做字串比較時,以下情況會發生問題:



var_dump('01' == '1.');
?>

以上的 '01' 及 '1.' 是不同,理應回傳 false,但實際執行時卻會回傳 true。原因是 PHP 會自動將兩個字串轉換為數值,而 '01' 及 '1.' 同樣會轉換成 1,所以回傳會是 true。

解決方法是是用 "===" 取代 "==",因此程式碼應改成:



var_dump('01' === '1.');
?>

filesizecount格式化文件大小

function sizecount($filesize) {
if($filesize >= 1073741824) {
$filesize = round($filesize / 1073741824 * 100) / 100 . ' GB';
} elseif($filesize >= 1048576) {
$filesize = round($filesize / 1048576 * 100) / 100 . ' MB';
} elseif($filesize >= 1024) {
$filesize = round($filesize / 1024 * 100) / 100 . ' KB';
} else {
$filesize = $filesize . ' Bytes';
}
return $filesize;
}

empty用法

if (empty($_GET['page'])) {

$page=0

}

else {

$page=$_GET['page'];

if ($page<0) {

$page=0;

}

取得文件的MD5值


class getfMd5{

var $file = "";

function go(){

$fp = fopen($this->file,"rb");

$msg = fread($fp,filesize($this->file));

fclose($fp);

return md5($msg);

}

}



//使用范例(支持二进制文件及文本文件)

$fMd5 = new getfMd5;

$fMd5->file = "logo.gif";//需要校验MD5值的文件

echo "文件".$fMd5->file."的MD5值为".$fMd5->go();

?>

php取得瀏覽器資訊

{
function getBrowse()
{
global $_SERVER;
$Agent = $_SERVER['HTTP_USER_AGENT'];
$browser = '';
$browserver = '';
$Browser = array('Lynx', 'MOSAIC', 'AOL', 'Opera', 'JAVA', 'MacWeb', 'WebExplorer', 'OmniWeb');
for($i = 0; $i <= 7; $i ++){
if(strpos($Agent, $Browsers[$i])){
$browser = $Browsers[$i];
$browserver = '';
}
}
if(ereg('Mozilla', $Agent) && !ereg('MSIE', $Agent)){
$temp = explode('(', $Agent);
$Part = $temp[0];
$temp = explode('/', $Part);
$browserver = $temp[1];
$temp = explode(' ', $browserver);
$browserver = $temp[0];
$browserver = preg_replace('/([d.]+)/', '1', $browserver);
$browserver = $browserver;
$browser = 'Netscape Navigator';
}
if(ereg('Mozilla', $Agent) && ereg('Opera', $Agent)) {
$temp = explode('(', $Agent);
$Part = $temp[1];
$temp = explode(')', $Part);
$browserver = $temp[1];
$temp = explode(' ', $browserver);
$browserver = $temp[2];
$browserver = preg_replace('/([d.]+)/', '1', $browserver);
$browserver = $browserver;
$browser = 'Opera';
}
if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){
$temp = explode('(', $Agent);
$Part = $temp[1];
$temp = explode(';', $Part);
$Part = $temp[1];
$temp = explode(' ', $Part);
$browserver = $temp[2];
$browserver = preg_replace('/([d.]+)/','1',$browserver);
$browserver = $browserver;
$browser = 'Internet Explorer';
}
if($browser != ''){
$browseinfo = $browser.' '.$browserver;
} else {
$browseinfo = false;
}
return $browseinfo;
}

function getIP ()
{
global $_SERVER;
if (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
} else if (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} else if (getenv('REMOTE_ADDR')) {
$ip = getenv('REMOTE_ADDR');
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}

function getOS ()
{
global $_SERVER;
$agent = $_SERVER['HTTP_USER_AGENT'];
$os = false;
if (eregi('win', $agent) && strpos($agent, '95')){
$os = 'Windows 95';
}
else if (eregi('win 9x', $agent) && strpos($agent, '4.90')){
$os = 'Windows ME';
}
else if (eregi('win', $agent) && ereg('98', $agent)){
$os = 'Windows 98';
}
else if (eregi('win', $agent) && eregi('nt 5.1', $agent)){
$os = 'Windows XP';
}
else if (eregi('win', $agent) && eregi('nt 5', $agent)){
$os = 'Windows 2000';
}
else if (eregi('win', $agent) && eregi('nt', $agent)){
$os = 'Windows NT';
}
else if (eregi('win', $agent) && ereg('32', $agent)){
$os = 'Windows 32';
}
else if (eregi('linux', $agent)){
$os = 'Linux';
}
else if (eregi('unix', $agent)){
$os = 'Unix';
}
else if (eregi('sun', $agent) && eregi('os', $agent)){
$os = 'SunOS';
}
else if (eregi('ibm', $agent) && eregi('os', $agent)){
$os = 'IBM OS/2';
}
else if (eregi('Mac', $agent) && eregi('PC', $agent)){
$os = 'Macintosh';
}
else if (eregi('PowerPC', $agent)){
$os = 'PowerPC';
}
else if (eregi('AIX', $agent)){
$os = 'AIX';
}
else if (eregi('HPUX', $agent)){
$os = 'HPUX';
}
else if (eregi('NetBSD', $agent)){
$os = 'NetBSD';
}
else if (eregi('BSD', $agent)){
$os = 'BSD';
}
else if (ereg('OSF1', $agent)){
$os = 'OSF1';
}
else if (ereg('IRIX', $agent)){
$os = 'IRIX';
}
else if (eregi('FreeBSD', $agent)){
$os = 'FreeBSD';
}
else if (eregi('teleport', $agent)){
$os = 'teleport';
}
else if (eregi('flashget', $agent)){
$os = 'flashget';
}
else if (eregi('webzip', $agent)){
$os = 'webzip';
}
else if (eregi('offline', $agent)){
$os = 'offline';
}
else {
$os = 'Unknown';
}
return $os;
}

}?>

使用方法:

1.將以上框內代碼另存為getinfo.php

2.在需要地頁面引入getinfo.php
 

3. 使用之前定義的類
$code = new clientGetObj;
$str1 = $code->getBrowse();//瀏覽器:
$str2 = $code->getIP();//IP地址:
$str3 = $code->getOS();//操作系統:
echo "目標瀏覽器:".$str1." OS:".$str3." IP:".$str2;
?>