2009年6月18日 星期四

JPG/JPEG 檔案格式

這張是從一個論壇抓出來的

JPEG格式
格式:JFIF(JPEG檔的交換格式)
壓縮:JPEG(灰階影像壓縮比約為10:1;彩色影像約為20:1)
以JPEG文件格式保存的圖像實際上是2個不同格式的混合物:JPEG格式規範本身,用來定義圖像的壓縮方法,並且被包在定議分辨率和顏色模式的圖像數據格式之中。Photoshop和實際上每個能讀取和寫入JPEG文件格式的其他應用程序,以 JFIF文件格式(JPEG文件交換格式, JPEG File Interchonge Format)或與JFIF格式非常象的其他格式保存圖像數據。JFIF文件格式只是將一種圖像格或環繞JPEG壓縮的一種簡單方法,它們沒有其他的更多功能。
最初的JFIF文件格式規範史允許8位灰度圖像和24位RGB圖像;但是Adobe『修改」了此種格式,使之也能處理32位CMYK模式的數據。但是,多數版面設計應用程序實際上不能將 CMYK模式的JPEG圖像分離開,所以 Adobe所做的這個修改的意義並不大。JPEG文件格式允許用可變壓縮的方法,保存8位、24位、32位深度的圖像。例如,當以JPEG格式保存一幅 Photoshop圖像時,Photoshop給出了多種保存選項:低壓縮率,中等壓縮率,高壓縮率及最好的分辨率等級別。實驗證明,當進行印刷或在顯示器上觀察時,JPEG一般可將圖像壓縮為原大小的十分之一而看不出明顯差異。圖像會分解成8×8像素圖像單元的小方塊。這種JPEG失真有時會在新聞圖片中發現,這些圖片在進行電子傳輸前被大大地壓縮了,隨後又以高放大倍率進行了印刷。
JPEG使用了有損壓縮格式,這就使它成為迅速顯示圖像並保存較好分辨率的理想格式。也正是由於JPEG格式可以對掃描或自然圖像進行大幅度的壓縮,利於儲存或通過調製解調器進行傳送,所以在Internet上得到了廣泛的應用。
JPEG格式有一個特殊的變種,名為 「Progressive JPEG」。在創建Progressive JPEG 文件肘,數據是這樣安排的:在裝入圖像時,開始只顯示一個模糊的圖像,隨著數據的裝入,圖像逐步變得清晰。
JPEG格式的主要不足之處也正是它的最大優點。也就是說,有損壓縮算法將JPEG只局限於顯示格式,而且每次保存JPEG格式的圖像時都會丟失一些數據。因此,通常只在創作的最後階段以JPEG格式保存一次圖像即可。
JPEG簡介
微處理機中的存放順序有正序(big endian)和逆序(little endian)之分。正序存放就是高位元組存放在前低位元組在後,而逆序存放就是低位元組在前高位元組在後。例如,十六進位數爲A02B,正序存放就是 A02B,逆序存放就是2BA0。摩托羅拉(Motorola)公司的微處理器使用正序存放,而英代爾(Intel)公司的微處理器使用逆序。JPEG文件中的位元組是按照正序排列的。
________________________________________
JPEG委員會在制定JPEG標準時,定義了許多標記(marker)用來區分和識別圖像資料及其相關資訊,但筆者沒有找到JPEG委員會對JPEG文件交換格式的明確定義。直到1998年12月從分析網上具體的JPG圖像來看,使用比較廣泛的還是JPEG文件交換格式(JPEG File Interchange Format,JFIF)版本號爲1.02。這是1992年9月由在C-Cube Microsystems公司工作的Eric Hamilton提出的。此外還有TIFF JPEG等格式,但由於這種格式比較複雜,因此大多數應用程式都支援JFIF文件交換格式。
JPEG文件使用的顔色空間是CCIR 601推薦標準進行的彩色空間(參看第7章)。在這個彩色空間中,每個分量、每個圖元的電平規定爲255級,用8位代碼表示。從RGB轉換成YCbCr空間時,使用下面的精確的轉換關係:
Y = 256 * E'y
Cb = 256 * [E'Cb] + 128
Cr = 256 * [E'Cr] + 128
其中亮度電平E'y和色差電平E'Cb和E'Cb分別是CCIR 601定義的參數。由於E'y的範圍是0~1,E'Cb和E'Cb的範圍是-0.5~+0.5,因此Y, Cb和Cr的最大值必須要箝到255。於是RGB和YCbCr之間的轉換關係需要按照下面的方法計算。
(1) 從RGB轉換成YCbCr
YCbCr(256級)分量可直接從用8位表示的RGB分量計算得到:
Y = 0.299R + 0.587G + 0.114 B
Cb = - 0.1687R - 0.3313G + 0.5B + 128
Cr = 0.5R - 0.4187G - 0.0813B + 128
需要注意的是不是所有圖像文件格式都按照R0,G0,B0,…… Rn,Gn,Bn的次序存儲樣本資料,因此在RGB文件轉換成JFIF文件時需要首先驗證RGB的次序。
(2) 從YCbCr轉換成RGB
RGB分量可直接從YCbCr(256級)分量計算得到:
R = Y + 1.402 (Cr-128)
G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
B = Y + 1.772 (Cb-128)
在JFIF文件格式中,圖像樣本的存放順序是從左到右和從上到下。這就是說JFIF文件中的第一個圖像樣本是圖像左上角的樣本。
文件結構
JFIF文件格式直接使用JPEG標準爲應用程式定義的許多標記,因此JFIF格式成了事實上JPEG文件交換格式標準。JPEG的每個標記都是由2個位元組組成,其前一個位元組是固定值0xFF。每個標記之前還可以添加數目不限的0xFF填充位元組(fill byte)。下面是其中的8個標記:
1. SOI  0xD8           圖像開始
2. APP0 0xE0           JFIF應用資料塊
3. APPn 0xE1 - 0xEF    其他的應用資料塊(n, 1~15)
4. DQT  0xDB           量化表
5. SOF0 0xC0           幀開始
6. DHT  0xC4           霍夫曼(Huffman)表
7. SOS  0xDA           掃描線開始
8. EOI  0xD9           圖像結束
爲使讀者對JPEG定義的標記一目了然,現將JPEG的標記碼列於表6-05,並保留英文解釋。
表6-05 JPEG定義的標記
Symbol
(符號) Code Assignment
(標記代碼) Deforbiddenion
(說明)
Start Of Frame markers, non-hierarchical Huffman coding
SOF0 0xFFC0 Baseline DCT
SOF1 0xFFC1 Extended sequential DCT
SOF2 0xFFC2 Progressive DCT
SOF3 0xFFC3 Spatial (sequential) lossless
Start Of Frame markers, hierarchical Huffman coding
SOF5 0xFFC5 Differential sequential DCT
SOF6 0xFFC6 Differential progressive DCT
SOF7 0xFFC7 Differential spatial lossless
Start Of Frame markers, non-hierarchical arithmetic coding
JPG 0xFFC8 Reserved for JPEG extensions
SOF9 0xFFC9 Extended sequential DCT
SOF10 0xFFCA Progressive DCT
SOF11 0xFFCB Spatial (sequential) Lossless
Start Of Frame markers, hierarchical arithmetic coding
SOF13 0xFFCD Differential sequential DCT
SOF14 0xFFCE Differential progressive DCT
SOF15 0xFFCF Differential spatial Lossless
Huffman table specification
DHT 0xFFC4 Define Huffman table(s)
arithmetic coding conditioning specification
DAC 0xFFCC Define arithmetic conditioning table
Restart interval termination
RSTm 0xFFD0~0xFFD7 Restart with modulo 8 counter m
Other marker
SOI 0xFFD8 Start of image
EOI 0xFFD9 End of image
SOS 0xFFDA Start of scan
DQT 0xFFDB Define quantization table(s)
DNL 0xFFDC Define number of lines
DRI 0xFFDD Define restart interval
DHP 0xFFDE Define hierarchical progression
EXP 0xFFDF Expand reference image(s)
APPn 0xFFE0~0xFFEF Reserved for application use
JPGn 0xFFF0~0xFFFD Reserved for JPEG extension
COM 0xFFFE Comment
Reserved markers
TEM 0xFF01 For temporary use in arithmetic coding
RES 0xFF02~0xFFBF Reserved
JPEG文件由下面的8個部分組成:
(1) 圖像開始SOI(Start of Image)標記
(2) APP0標記(Marker)
① APP0長度(length)
② 識別字(identifier)
③ 版本號(version)
④ X和Y的密度單位(units=0:無單位;units=1:點數/英寸;units=2:點數/釐米)
⑤ X方向圖元密度(X density)
⑥ Y方向圖元密度(Y density)
⑦ 縮略圖水平圖元數目(thumbnail horizontal pixels)
⑧ 縮略圖垂直圖元數目(thumbnail vertical pixels)
⑨ 縮略圖RGB點陣圖(thumbnail RGB bitmap)
(3) APPn標記(Markers),其中n=1~15(任選)
① APPn長度(length)
② 由於詳細資訊(application specific information)
(4) 一個或者多個量化表DQT(difine quantization table)
① 量化表長度(quantization table length)
② 量化表數目(quantization table number)
③ 量化表(quantization table)
(5) 幀圖像開始SOF0(Start of Frame)
① 幀開始長度(start of frame length)
② 精度(precision),每個顔色分量每個圖元的位元數(bits per pixel per color component)
③ 圖像高度(image height)
④ 圖像寬度(image width)
⑤ 顔色分量數(number of color components)
⑥ 對每個顔色分量(for each component)
o ID
o 垂直方向的樣本因數(vertical sample factor)
o 水平方向的樣本因數(horizontal sample factor)
o 量化表號(quantization table#)
(6) 一個或者多個霍夫曼表DHT(Difine Huffman Table)
① 霍夫曼表的長度(Huffman table length)
② 類型、AC或者DC(Type, AC or DC)
③ 索引(Index)
④ 位表(bits table)
⑤ 值表(value table)
(7) 掃描開始SOS(Start of Scan)
① 掃描開始長度(start of scan length)
② 顔色分量數(number of color components)
③ 每個顔色分量
o ID
o 交流係數表號(AC table #)
o 直流係數表號(DC table #)
④ 壓縮圖像資料(compressed image data)
(8) 圖像結束EOI(End of Image)
表6-06表示了APP0域的詳細結構。有興趣的讀者可通過UltraEdit或者PC TOOLS等工具軟體打開一個JPG圖像文件,對APP0的結構進行分析和驗證。
表6-06 JFIF格式中APP0域的詳細結構
偏移 長度 內容 塊的名稱 說明
0 2 byte 0xFFD8 (Start of Image,SOI) 圖像開始
2 2 byte 0xFFE0 APP0(JFIF application segment) JFIF應用資料塊
4 2 bytes   length of APP0 block APP0塊的長度
6 5 bytes   "JFIF"+"0" 識別APP0標記
11 1 byte   主要版本號(如版本1.02中的1)
12 1 byte   次要版本號(如版本1.02中的02)
13 1 byte  
and Y densities> X和Y的密度單位
units=0:無單位
units=1:點數/英寸
units=2:點數/釐米
14 2 bytes   水平方向圖元密度
16 2 bytes   垂直方向圖元密度
18 1 byte   縮略圖水平圖元數目
19 1 byte   縮略圖垂直圖元數目
3n   <> 縮略RGB點陣圖(n爲縮略圖的圖元數)
Optional JFIF extension APP0 marker segment(s) 任選的JFIF擴展APP0標記段
……   ……  
2 byte 0xFFD9 (EOI) end-of-file 圖像文件結束標記


===================================

如果有侵犯到您的權利 請告知 會馬上刪除

MSN 將圖片畫出來 以手繪訊息送出去

MSN 將圖片畫出來 以手繪訊息送出去

之前朋友給了一個軟體

他可以將圖檔以手繪的方式畫到MSN手繪訊息上面

這樣就可以傳出酷炫手繪訊息

(別人還以為畫出來的哩!! 好像有點誇張)。

這是畫出來的效果,雖然是單一色系的,不過也不錯啦!!
寄件者 FQstory

這軟體主要是先拍照

然後選畫到的地方

再點開始畫

就會開始一筆一畫的畫出來

(小畫家也可以= =)

===================================

真的不錯玩喔 大家可以GOOGLE 找找

2009年5月23日 星期六

PHP 自動更新進入yahoo 拍賣

因為Q經常逛yahoo拍賣,但是都難以搶到拍賣的東西(太多人下標),而且每次都要一直連看好幾的小時,所以心血來潮寫了一個可以每幾秒鐘,就自動更新一次,如果有新的物品po上去,就會自動進入此商品的網頁中。

不過發現沒有很理想,因為很快就出現 yahoo的錯誤999 = =
大家可以試試看

有分兩個檔案,請放在網站根目錄下的test裡面
TEST1.PHP
<?php

session_start();

$seller = "lainjp98";//請輸入賣家帳號

//$fp = fopen("http://tw.user.bid.yahoo.com/tw/user/".$seller,"r");

$fp = fopen("http://tw.user.bid.yahoo.com/tw/user/".$seller."?userID=".$seller."&catID=&catIDselect=&clf=&u=:".$seller."&s1=ptime&o1=d&at=false","r");

$i = 0;

$j = 0;

while(!feof($fp)){

$read = fgets($fp);

$checkread = substr($read,0,14);

echo $read;

//echo ''.$checkread;

if($checkread ==' <td><a href=' and $i == 0){

if (@$read != $_SESSION['save'] and $_SESSION['check'] == '1'){

$check = 'yes';

$msg = explode ('"',$read);

echo $msg[1];

//header("Location: http://127.0.0.1/test/test2.php");

echo '<meta http-equiv="refresh" content="0'.';'.' url=http://127.0.0.1/test/test2.php?msg='.$msg[1].'">';

//echo '<meta http-equiv="refresh" content="5'.'; '.$msg[1].'">';

}

$_SESSION['save'] = $read;

$_SESSION['check'] = '1';

$i = 1 ;

}


}

fclose($fp);

echo $check;



?>

<meta http-equiv="refresh" content="4">

第二個檔案 test2.php 請這樣命名
<?php
$msg = $_GET['msg'];
//echo $msg;
$fp = fopen($msg,"r");
while(!feof($fp)){
$read = fgets($fp);
echo $read;
}
fclose($fp);
?>



當然這還很陽春,有望大家修改修改,呵呵

===================================

PHP 傳送POST使用fsockopen 取代CURL 取得回應

很實用的文章

//接收POST參數的URL
$url = 'http://www.google.com';
//POST參數,在這個陣列裡,索引是name,值是value,沒有限定組數
$postdata = array('post_name'=>'post_value','acc'=>'hsin','nick'=>'joe');
//函式回覆的值就是取得的內容
$result = sendpost($url,$postdata);

function sendpost($url, $data){
//先解析url 取得的資訊可以看看http://www.php.net/parse_url
$url = parse_url($url);
if(!$url) return "couldn't parse url";
//對要傳送的POST參數作處理
$encoded = "";
while(list($k,$v)=each($data)){
$encoded .= ($encoded?"&amp;":'');
$encoded .= rawurlencode($k)."=".rawurlencode($v);
}
//開啟一個socket
$fp = fsockopen($url['host'],($url['port']?$url['port']:80));
if(!$fp) return "Failed to open socket to ".$url['host'];
//header的資訊
fputs($fp,'POST '.$url['path'].($url['query']?'?'.$url['query']:'')." HTTP/1.0rn");
fputs($fp,"Host: ".$url['host']."n");
fputs($fp,"Content-type: application/x-www-form-urlencodedn");
fputs($fp,"Content-length: ".strlen($encoded)."n");
fputs($fp,"Connection: closenn");
fputs($fp,$encoded."n");
//取得回應的內容
$line = fgets($fp,1024);
if(!eregi("^HTTP/1.. 200", $line)) return;
$results = "";
$inheader = 1;
while(!feof($fp)){
$line = fgets($fp,2048);
if($inheader&amp;&amp;($line == "n" || $line == "rn")){
$inheader = 0;
}elseif(!$inheader){
$results .= $line;
}
}
fclose($fp);
return $results;
}

=======END======

PHP 傳送GET使用fsockopen 取代CURL 取得回應

其實直接使用fopen就可以啦!!
不過有看到別人寫了別的方法
避免allow_url_fopen = off 而不能用的方法


function SendGET($_url){
$url = parse_url($_url);
$contents = '';
$fp = fsockopen($url['host'],$url['port']);
if($fp){
$_request = $url['path'].($url['query']==''?'':'?'.$url['query']).($url['fragment']==''?'':'#'.$url['fragment']);
fputs($fp,'GET '.$_request." HTTP/1.0\r\n");
fputs($fp,"Host: ".$url['host']."\n");
fputs($fp,"Content-type: application/x-www-form-urlencoded\n");
fputs($fp,"Connection: close\n\n");
$line = fgets($fp,1024);
if(!eregi("^HTTP/1\.. 200", $line)) return;
else{
$results = '';
$contents = '';
$inheader = 1;
while(!feof($fp)){
$line = fgets($fp,2048);
if($inheader&&($line == "\n" || $line == "\r\n")){
$inheader = 0;
}elseif(!$inheader){
$contents .= $line;
}
}
fclose($fp);
}
}
return $contents;
}

$url = 'http://someone.com:80/index.php?mode=go&id=hsin#top';
$_result = SendGET($url);
print_r($_result);

PHP CURL 發送 GET 和 POST 語法

如果要連到連的網址的話
許多免費空間不支援FOPEN
大家可以使用CURL試試看

PHP CURL

1、http的get傳送

$ch = curl_init("/") ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ;
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ;
$output = curl_exec($ch) ;
$fh = fopen("out.html", 'w') ;
fwrite($fh, $output) ;
fclose($fh) ;

2、http的post傳送

EX1

$URL="www.mysite.com/test.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://$URL");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "Data1=blah&Data2=blah");curl_exec ($ch);
curl_close ($ch);


EX2

//extract data from the post
extract($_POST) ;
//set POST variables
$url = '/get-post.php' ;
$fields = array(
'lname'=>urlencode($last_name) ,
'fname'=>urlencode($first_name) ,
'title'=>urlencode($title) ,
'company'=>urlencode($institution) ,
'age'=>urlencode($age) ,
'email'=>urlencode($email) ,
'phone'=>urlencode($phone)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&' ; }
rtrim($fields_string ,'&') ;
//open connection
$ch = curl_init() ;
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL,$url) ;
curl_setopt($ch, CURLOPT_POST,count($fields)) ;
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string) ;
//execute post
$result = curl_exec($ch) ;
//close connection
curl_close($ch) ;

0-c.php.ini 配置詳細解說

php.ini 配置詳細選項
作者:DDVIP
top

php.ini 或 php3.ini 是 PHP 在啟動時會讀取的配置文件。該文件的存放路徑為 /usr/local/lib/。在 PHP 3.x 版的配置文件為 php3.ini;而在 PHP 4.x 版改為 php.ini。若 PHP 安裝成服務器的模塊,則在 Web 服務器啟動執行時會讀取,之後就不再讀取,因此改動配置的話要重新啟動 Web 服務器。若使用獨立 PHP CGI 方式,則每次都讀一次。
要看目前的系統配置,可以用phpinfo()看到。以下為選項配置

php_value name value
配置變量名稱和值。本選項需 PHP 4.x 版之後才能使用。


php_flag name onoff
配置標誌布爾變量選項。本選項需 PHP 4.x 版之後才能使用。


php_admin_value name value
配置 Apache 的配置文件變量。原來在 .htaccess 的配置改到這個選項配置。本選項需 PHP 4.x 版之後才能使用。


php_admin_flag name onoff
配置布爾變量當標誌。本選項需 PHP 4.x 版之後才能使用。


asp_tags boolean
配置 PHP 程序是否解析以 ASP Script 語法 的標記 (tag)。本選項在 PHP 3.0.4 之後才可使用。更多的細節可以參考>嵌入方法的部份。


auto_append_file string
配置本選項可以讓指定的文件附加在原 PHP 程序後面自動執行。若 PHP 程序中有用到 exit() 函數,則指定的文件不會執行。參數 string 即為指定自動執行的文件。


auto_prepend_file string
配置本選項可以讓指定的文件在原 PHP 程序之前自動執行。參數 string 即為指定自動執行的文件。


cgi_ext string
本選項配置 CGI 程序的擴展名。


display_errors boolean
本選項配置是否要將執行的錯誤信息顯示在用戶的瀏覽器上。


doc_root string
配置服務器的文件及 PHP 文件放置的根目錄。


engine boolean
本選項需要使用apache的模塊方式使用 PHP。可配置是否要使用 PHP 引擎。在 httpd.conf 中加入 php3_engine on/off 亦可配置某目錄或某虛擬網站是否要用 PHP 解析器。


error_log string
本選項用來配置錯誤記錄文件。在 UNIX 系統上參數 string 即為文件名。Windows NT 會將記錄記在事件檢視器的日誌之中。Windows 95/98 則不支持系統記錄。


error_reporting integer
本選項用來配置系統記錄的等級。參數 integer 即為等級的級數標誌,可以加在一起,默認值為 7


open_basedir string
本選項用來配置提供 PHP 存取的最底層目錄。從該指定目錄之下的文件或目錄,PHP 程序才能存取。使用本選項主要是為了系統安全性的考慮。參數 string 即為要限制的最底層目錄節點。值得注意的是在 UNIX 系統中,若該節點之下的文件或目錄有符號鏈結 (symbolic link),則可能會讓使用本選項的目的打折,因此在目錄的設計上考慮,也是 Webmaster 的重要任務。默認值是所有文件均可存取。在 PHP 3.0.7 版之後,可以配置多個底層目錄。


gpc_order string
配置 GET/POST/COOKIE 三種模塊的順序及規則。參數 string 即為要配置的規則,例如:配置成 "GP" 表示忽視 cookie,並在存取方法 (method) 相同時,以 POST 取代 GET。


ignore_user_abort string
默認值為 Off。用來配置當傳輸未完成時,用戶端斷線是要繼續處理。


include_path string
為 PHP 程序中 require、include 及 fopen_with_path 等函數的文件搜尋路徑。在 UNIX 或 Windows 中的斜線方向不同。


log_errors boolean
指定程序錯誤時是否要記錄在 log 文件中。


magic_quotes_gpc boolean
配置 GET/POST/COOKIE 三種模塊的特殊字符,包含單引號、雙引號、反斜線、及空字符 (NUL) 是否要自動加入反斜線當溢出字符。


magic_quotes_runtime boolean
配置返回資料是否自動加入反斜線當溢出字符。


magic_quotes_sybase boolean
配置 sybase 資料中單引號要自動加上反斜線當溢出字符。


max_execution_time integer
配置程序最久執行時間。單位是秒。


memory_limit integer
配置程序最多使用多少內存。


short_open_tag boolean
配置是否使用短的 PHP 標記 ()。若不使用,則必須要用

track_errors boolean
打開本選項可使最後的錯誤信息跟著全局變量 $php_errormsg。


track_vars boolean
打開本選項可讓用戶輸入的字符串自動解析到變量之中,而不用自己處理。


upload_tmp_dir string
指定上傳文件臨時路徑。


user_dir string
指定用戶根目錄的路徑。


warn_plus_overloading boolean
若打開本選項,字符串間就只能用英文的句號 (.) 鏈接,而不能用加號 (+) 鏈接字符串。


SMTP string
在 Windows 系列操作系統中,用來指定 SMTP 服務器,供 mail 函數使用。參數 string 為 SMTP 服務器名字。


sendmail_from string
配置 "From: " 字符串供 Windows 系列操作系統使用 mail 函數。


sendmail_path string
配置 sendmail 程序的放置路徑。例如 /usr/sbin/sendmail。


safe_mode boolean
配置 PHP 在安全模式下執行。


safe_mode_exec_dir string
配置安全模式程序執行的路徑。


debugger.host string
指定遠端調試的服務器名稱,可以是 IP 或 Domain Name。


debugger.port string
配置遠端調試服務器的端口 (port)。


debugger.enabled boolean
配置是否可以為調試模式。


enable_dl boolean
本選項要使用apache模塊 (Apache module) 的方式才有效。用來配置 PHP 的函數可否作用。當系統處於安全模式 (safe-mode) 時,本選項 enable 也無法使用 dl() 函數。


extension_dir string
配置動態函數的路徑。


extension string
PHP 啟動時所要載入的動態擴充功能。


mysql.allow_persistent boolean
配置是否允許 MySQL 數據庫持續連接 (persistent connections),會影響函數。


mysql.max_persistent integer
配置每個處理程序最多保持幾個 MySQL 持續連接。


mysql.max_links integer
配置每個處理程序最多開幾個 MySQL 連接,包括持續連接。


msql.allow_persistent boolean
配置是否允許 mSQL 數據庫持續連接 (persistent connections),會影響函數。


msql.max_persistent integer
配置每個處理程序最多保持幾個 mSQL 持續連接。


msql.max_links integer
配置每個處理程序最多開幾個 mSQL 連接,包括持續連接。


pgsql.allow_persistent boolean
配置是否允許 Postgres 數據庫持續連接 (persistent connections),會影響函數。


pgsql.max_persistent integer
配置每個處理程序最多保持幾個 Postgres 持續連接。


pgsql.max_links integer
配置每個處理程序最多開幾個 Postgres 連接,包括持續連接。


sybase.allow_persistent boolean
配置是否允許 Sybase 數據庫持續連接 (persistent connections),會影響函數。


sybase.max_persistent integer
配置每個處理程序最多保持幾個 Sybase 持續連接。


sybase.max_links integer
配置每個處理程序最多開幾個 Sybase 連接,包括持續連接。


sybct.allow_persistent boolean
配置是否允許 Sybase-CT 數據庫持續連接 (persistent connections),默認值是打開的。


sybct.max_persistent integer
配置每個處理程序最多保持幾個 Sybase-CT 持續連接。默認值為 -1 表示無限制。


sybct.max_links integer
配置每個處理程序最多開幾個 Sybase-CT 連接,包括持續連接。默認值為 -1,表示沒有限制。


sybct.min_server_severity integer
配置 Sybase-CT 服務器錯誤報告的最少筆數。默認值為 10。


sybct.min_client_severity integer
配置 Sybase-CT 客戶端錯誤報告的最少筆數。默認值為 10。


sybct.login_timeout integer
配置 Sybase-CT 最久可以使用的登入時間。默認值為 1 分鐘。


sybct.timeout integer
配置 Sybase-CT 的 query 操作時間限制。默認值為無限制。


sybct.hostname string
配置 Sybase-CT 可連接機器名稱。默認值不設限


ifx.allow_persistent boolean
配置是否允許 Informix 數據庫持續連接 (persistent connections),會影響函數。


ifx.max_persistent integer
配置每個處理程序最多保持幾個 Informix 持續連接。


ifx.max_links integer
配置每個處理程序最多開幾個 Informix 連接,包括持續連接。


ifx.default_host string
配置 Informix 默認連接的服務器名稱,供ifx_connect()或ifx_pconnect()函數使用。


ifx.default_user string
配置 Informix 默認連接的用戶帳號,供ifx_connect()或ifx_pconnect( 函數使用。


ifx.default_password string
配置 Informix 默認連接的用戶密碼,供ifx_connect()或ifx_pconnect() 函數使用。


ifx.blobinfile boolean
配置 Informix 長位類模式,0 表在內存;1 表在文件中。亦可以在 PHP 程序中使用ifx_blobinfile_mode()函數來修改。


ifx.textasvarchar boolean
配置 Informix 文字模式默認值,0 表返回 blob 的代碼;1 表返回 varchar 字符串。亦可在 PHP 程序中使用ifx_textasvarchar() 函數來修改配置。


ifx.byteasvarchar boolean
配置 Informix 位組模式默認值,0 表返回 blob 的代碼;1 表返回 varchar 字符串。亦可在 PHP 程序中使用ifx_byteasvarchar() 來修改配置。


ifx.charasvarchar boolean
配置 Informix 返回字符串的字尾空格是否要自動去除。


ifx.nullformat boolean
配置 NULL 字段的返回方式,true 表示返回字符串 NULL,false 表格返回字符串 ""。亦可在 PHP 程序中以ifx_nullformat() 修改。


bcmath.scale integer
配置 BC 高精確度函數庫的小數點位數。


browscap string
配置瀏覽器的開文件能力名。


uodbc.default_db string
配置 ODBC 默認連接的數據庫名稱,供odbc_connect()或odbc_pconnect()函數使用。


uodbc.default_user string
配置 ODBC 默認連接的用戶帳號,供odbc_connect()或odbc_pconnect()函數使用。


uodbc.default_pw string
配置 ODBC 默認連接的用戶密碼,供odbc_connect()或函數使用。


uodbc.allow_persistent boolean
配置是否允許 ODBC 數據庫持續連接 (persistent connections),會影響odbc_pconnect()函數。


uodbc.max_persistent integer
配置每個處理程序最多保持幾個 ODBC 持續連接。


uodbc.max_links integer
配置每個處理程序最多開幾個 ODBC 連接,包括持續連接。

以下和 session 有關的配置值,都在 PHP 4.x 以上的版本方支持。在 php.ini 的配置文件中。

session.save_handler
定義 session 儲存資料的文件名稱。默認值為 files。


session.save_path
定義 session 儲存資料的文件路徑。默認值為 /tmp。


session.name
配置 session 所使用的 cookie 名稱。默認值為 PHPSESSID。


session.auto_start
配置 session 是否自動打開。默認值為 0 (否)。


session.lifetime
配置 cookie 送到瀏覽器後的保存時間,單位為秒。默認值為 0,表示直到瀏覽器關閉。


session.serialize_handler
定義連續/解連續資料的標頭,本功能只有 WDDX 模塊或 PHP 內部使用。默認值為 php。


session.gc_probability
配置每筆要求回應時的廢物蒐集 (gc, garbage collection) 處理機率。默認值為 1。


session.gc_maxlifetime
配置廢物被清除前的存活秒數。


session.extern_referer_check
決定參照到客戶端的 Session 代碼是否要刪除。有時在安全或其它考慮時,會配置不刪除。默認值為 0。


session.entropy_file
配置 session 代碼建立時,使用外部高熵值資源或文件來建立,例如 UNIX 系統上的 /dev/random 或 /dev/urandom。


session.entropy_length
配置 session 從高熵值資源讀取的位組數。默認值為 0。


session.use_cookies 配置是否要將 session 變成 cookie 存在用戶端。默認值為 1,表是打開本功能。

APACHE PHP MYSQL WindowsXP 安裝教學

這篇是之前在無名發過的,然後拿來用,不過因為表格的關係,所以格試怪怪的,然後圖片也是無名上的,所以有的時候會顯示不出來,如果有需要,請參考完整版本
http://www.wretch.cc/blog/njqa3024/6965224


不過最後發現了一個折衷的辦法,google可以用投影片播放,呵呵













Apache網路伺服器,扮演著serve的角色,別人只要輸入IP或是網址就可以連到這個伺服器,然後如果有放置網頁,apache就會解釋翻譯這些網頁,並傳送給瀏覽者(viewer),瀏覽者就可以看到你做的網頁。一般apache只支援基本的html靜態語法。
PHP性質上就類似一個處理程序,可以寫一個程式,當一筆資料進到這個程式之後可以轉換成另外一個東西,算是比較後台的運作。如果要用在網站上,必須要配合伺服器(ex. apache),也算是幫助伺服器可以解讀更多的程式碼。
MYSQL就是專門處理大量資料的資料庫。可以簡單的讀取或儲存甚至處理大量資料。














在安裝前要先準備好這三個安裝程式



apache

下載頁面

直接下載

(apache_2.2.10-win32-x86-no_ssl.msi)



php

下載頁面

直接下載

(PHP 5.2.6 installer)



mysql

下載頁面

直接下載

(mysql-essential-5.1.29-rc-win32.msi)









這邊以安裝檔的形式介紹,sorce code 安裝方法先略過



先安裝apache





然後安裝php





最後安裝mysql





這樣基本上就安裝完成了



打開瀏覽器,輸入localhost 如果跑出這畫面,就是成功了(apache)



至於要啟動php 就要先把下面的設定完成並且重新啟動apache












apache httpd.conf 設定



開啟



C:\apache\conf\httpd.conf



然後開始改一些設定



搜尋(ctrl + f),因為設定頗多,所以用搜尋



DocumentRoot "C:/apache/htdocs"

網頁放置的位置



DirectoryIndex index.php index.html index.htm

網頁開啟的順序 這邊設定php先開啟



之後將看到最下面



#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

#指定php.ini存放的目錄

PHPIniDir "C:/apache/php/"



#載入php的模組

LoadModule php5_module "C:/apache/php/php5apache2_2.dll"

#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL



除了這些以外

還要自己再輸入



#指名附檔名是 .php .phtml .inc .php3的程式都當成php程式 ,

其於的都當成一般網頁

AddType application/x-httpd-php .php .phtml .inc .php3






然後存檔,重開apache 即可






基本上這樣就大公告成了,至於php.ini再這邊就不提了




2009年5月22日 星期五

0. 基本HTML語法

基本HTML語法



對於架站來說,HTML語法就是最基本的語法,不過相信許多人架站都是使用套裝軟體(ME,TOO),這樣有好 有壞,第一個可以節省時間,然後又可以把版面排的漂漂亮亮的,不過這樣對於網頁的編排功能上就會損失許多,也不能精準的控制每個物件之間的關連。

也許網頁 本來就是漂亮比較重要,不過如果可以快速編排再加上精準控制,這樣不就更可以把HTML的精華發揮出來。



再以PHP來說,HTML語法就變成極為重要了,在PHP世界裡可沒有可以拖拖拉拉用滑鼠就可以移動的功能,純粹只能以語法控制,連出現在網頁的哪邊、大小都要自行設定。



當然你也可以說先設計好然後再把語法剪貼過去使用(我是這樣子= =),但在剪剪貼貼之前最重要的還是必須了解基本語法吧!!

至少也要知道某段語法是有什麼功用,然後才可以依樣畫葫蘆,否則PHP輸出結果大概就只有文字了。


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


0-1.使用的編輯軟體



筆記本 :

最基本的編輯軟體,主要是給很熟悉語法的人使用。也是最簡單可以取得的軟體。



Editpad :

為FREE版本,他可以清楚的條列語法。是要對語言也一定了解的人使用。



Dreamweaver :

ADOBE公司出版,主要為視覺網頁設計使用,他可以很方便的設計排版,也有提供較深入的語法可以直接使用。(本人主要用這個,功能強強滾)



Frontpage :

也算是比較基本的編輯器,主要也是偏向視覺設計排版,但功能較少,也是需付費軟體。

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


0-2.HTML基本架構



<html> 告訴瀏覽器,這一行開始以下都是網頁型式的語言。

<head> 重要先讀取的資訊,開始

<title> 標題打在這邊,就是IE最上面那行</title>

</head> 重要先讀取的資訊,結束

<body> 內文開始,就是顯示給viewer看的東西。

</body> 內文結束

</html> 告訴瀏覽器,這一行結束了網頁,以下就不是網頁語言了。



以 上就屬於最最基本的HTML架構,也就是普通舊式語法的開頭,而現在隨著瀏覽器越來越高級,能處理的語法、用法也跟著變多,所以在現在在程式開始執行辨識 前都還要先加入DOCTYPE 宣告以下的內容要用哪一種語法和辨認方法(也就是哪一種版本),當然不輸入也行,瀏覽器會自動判別為舊式的語法,至於能宣告的形式就有分許多,在這邊主要 只推薦一般較好用的宣告:

在<html>上面加入:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



這樣將為定義以下內容使用xhtml來辨識,至於為什麼要用xhtml,其實主要原因又是習慣麻!!(其實是一開始並不知道要設這個,不過DREAMWEAVER都自動設為xhtml了,而之後也就習慣了)~呵呵。(其實還有一些功能上的原因啦)



至於之後很多網頁的<html> 都會再加上xmlns 變成 :

<html xmlns="http://www.w3.org/1999/xhtml">



至於為什麼呢?老實說我也不是很清楚,實際上好像沒有影響,可能只是類似一種標籤之類的吧!! = ="





到目前為止程式碼為 :



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">





這樣開頭的宣告就差不多了,接下來還要在宣告編碼(語言),這要放在<head>內。

加入 :

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />



or



<meta http-equiv="Content-Type" content="text/html; charset=big5" />



這 段主要就是加入宣告的編碼,在這邊其實很重要,尤其是在之後寫PHP輸出的編碼必須與此配合,否則如果是中文字就會出現亂碼,在這邊如果是使用繁體中文網 頁,首先推薦BIG5(UTF-8可能會有亂碼,還要再做檔案的編碼更換),但如果對電腦比較瞭解的話,就建議使用UTF-8,UTF-8的字元比較多, 比較不會有人名打不出來的問題,至於如果只是單機處理"檔案"的話,也是要用BIG5(正常台灣內電腦編碼為BIG5,或是要轉碼),這方面問題當初也被 搞得亂七八糟的,以後再慢慢道來。



到這邊基本的宣告已經差不多了 :



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title> </title>

</head>

<body>

</body>

</html>



這樣基本架構就完成了,接下來主要就是在BODY裡添加內容。

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


0-3.文字處理





字型的處理在html語法中算是較基本的,就算不去理會也是可以印出字來,不過如果目標是做一個漂漂亮亮的網頁,就變成不可忽略的一環。不過能夠處理字型的語法卻是五花八門 html, xhtml, ccs 等,都可以讓字型變得專業。



<以下語法接在body中>



首先介紹最直接控制字型的語法: 標題



<h1>輸入要顯示的字</h1>

<h2>輸入要顯示的字</h2>

...

<h6>輸入要顯示的字</h6>

tools(html_test)



這個標題大小有分6種大小,1最大,6最小,如果就以大小來說,這語法還算是方便,不過如果要加上顏色,可能就只能呼叫 ccs 幫忙摟!



接下來是html專門處理字型的語法 <font>

用法也是和上述差不多,也是:

<font>要顯示的字</font>

不過這能加入的元素就可以比較多了(不包含ccs),可以字體大小、調整字型、顏色。



字體大小:<font size=""></font>

<font size="-6">要顯示的字</font>

<font size="+6">要顯示的字</font>

tools(html_test)

總共有12種大小,從-6 ~ +6 可供使用。



字型: <font face=""></font>

<font face="華康粗圓體">要顯示的字</font>

<font face="標楷體">要顯示的字</font>

這邊就可以把你電腦有的字型都打上去試試看,不過請注意一點,如果別人的電腦沒有你有的字型,那就顯示不出來摟!



字的顏色: <font color=""></font>

<font color="#0000FF">要顯示的字為藍色</font>

<font color="#00FF00">要顯示的字為綠色</font>

<font color="#FF0000">要顯示的字為紅色</font>

tools(html_test)

這邊就是在color裡面填入#xxxxxx 為16位元碼,0 ~F,依序為紅綠藍的比例,每個顏色佔2個位元,等於 16*16-1=255 個深淺,然後三色(RGB)組合配成的顏色,就會顯示出來。



當然這三種組合也可以一起使用:<font size="" face=""t color="#">要顯示的字</font> ,(科科~不用照順序嘿)

<font size="+2" face="華康粗圓體"t color="#0000FF">要顯示的字</font>

tools(html_test)



以上三點元素,基本上font差不多就這樣了。