『壹』 php 解析
瀏覽器是不能解析PHP的,要解析需要WEB伺服器(比如APACHE或者IIS),安裝WEB伺服器並合理配置之後,我們在瀏覽器上輸入http://.../xxx.php這樣的地址,伺服器會執行相應文件夾下的xxx.php文件,並把執行的結果返回給瀏覽器,瀏覽器實際上只處理HTML相關代碼,PHP是被WEB伺服器執行的。
如果你沒有IIS,或者沒有必要安裝IIS,我建議你安裝APACHE。
『貳』 php代碼加密後,伺服器是如何解析的,怎樣解
看是怎麼加密的了,MD5是解不了的說能解的都是自己做的資料庫匹配。
下面這個是常用的加密解密方法
<?php
/**
*字元串加密、解密函數
*
*@paramstring$txt字元串
*@paramstring$operationENCODE為加密,DECODE為解密,可選參數,默認為ENCODE,
*@paramstring$key密鑰:數字、字母、下劃線
*@paramstring$expiry過期時間
*@returnstring
*/
functionsys_auth($string,$operation='ENCODE',$key='',$expiry=0){
$ckey_length=4;
$key=md5($key!=''?$key:C('COOKIE_AUTH_KEY'));
$keya=md5(substr($key,0,16));
$keyb=md5(substr($key,16,16));
$keyc=$ckey_length?($operation=='DECODE'?substr($string,0,$ckey_length):substr(md5(microtime()),-$ckey_length)):'';
$cryptkey=$keya.md5($keya.$keyc);
$key_length=strlen($cryptkey);
$string=$operation=='DECODE'?base64_decode(strtr(substr($string,$ckey_length),'-_','+/')):sprintf('%010d',$expiry?$expiry+time():0).substr(md5($string.$keyb),0,16).$string;
$string_length=strlen($string);
$result='';
$box=range(0,255);
$rndkey=array();
for($i=0;$i<=255;$i++){
$rndkey[$i]=ord($cryptkey[$i%$key_length]);
}
for($j=$i=0;$i<256;$i++){
$j=($j+$box[$i]+$rndkey[$i])%256;
$tmp=$box[$i];
$box[$i]=$box[$j];
$box[$j]=$tmp;
}
for($a=$j=$i=0;$i<$string_length;$i++){
$a=($a+1)%256;
$j=($j+$box[$a])%256;
$tmp=$box[$a];
$box[$a]=$box[$j];
$box[$j]=$tmp;
$result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
}
if($operation=='DECODE'){
if((substr($result,0,10)==0||substr($result,0,10)-time()>0)&&substr($result,10,16)==substr(md5(substr($result,26).$keyb),0,16)){
returnsubstr($result,26);
}else{
return'';
}
}else{
return$keyc.rtrim(strtr(base64_encode($result),'+/','-_'),'=');
}
}
?>
『叄』 如何在PHP中解析json
PHP裡面有json_encode(數組)可以把數組給轉換成JSON字元串,
而json_decode(JSON字元串,boolean)可以把JSON字元串轉換成數組或者對象類型,第二個參數boolean默認為false表示對象類型,true表示解析為數組類型通過下表訪問
『肆』 php工作流程
PHP是運行與伺服器端的腳本語言,實現了資料庫與網頁之間的數據交互。一個完整的PHP網站系統由以下幾部分組成。
操作系統
網路中的 伺服器也是一台計算機,因此需要操作系統。PHP有著良好的跨平台性,支持windows和Linux等操作系統
web伺服器
當一台計算機中安裝操作系統後,還需要安裝web伺服器才能進行http訪問。常見的web伺服器軟體有Apache、IIS、Nginx等
資料庫
用於網站數據的存儲和管理。PHP支持多種資料庫,包括MySQL、sql server,oracle。db2
PHP軟體
用於解析PHP腳本文件、訪問資料庫等,是運行PHP代碼所必須的軟體。
瀏覽器
是瀏覽網頁的客戶端。由於PHP腳本是在伺服器端運行的,因此通過瀏覽器看到的是經過PHP處理後的html結果。。Zend引擎:Zend整體用純C實現,是PHP的內核部分,他將PHP代碼翻譯(詞法、語法解析等一系列編譯過程)為可執行opcode的處理並實現相應的處理方法、實現了基本的數據結構(如:hashtable、OO)、內存分配機制及管理、提供了相應的api方法供外部調用,是一切的核心,所有的外圍功能均圍繞Zend實現。
2、Extensions:圍繞著Zend引擎,extensions通過組件式的方式提供各種基礎服務,我們常見的各種內置函數(array系列)、標准庫等都是通過extension來實現,用戶也可以根據需要實現自己的extension的典型應用)。
3、Sapi:Sapi全稱Server Application Programming Interface,也就是服務端應用編程介面,Sapi通過一系列鉤子函數,使得PHP可以和外圍交互數據,這是PHP非常優雅和成功的設計,通過sapi成功的將PHP本身和上層應用解耦隔離,PHP可以不再考慮如何針對不同應用進行兼容,而應用本身也可以針對自己的特點實現不同的處理方式。
4、上層應用:這就是我們平時編寫的PHP程序,通過不同的spai方式得到各種各樣的應用模式,如何通過webserver實現web應用、在命令行下已腳本方式運行等等。
『伍』 php代碼是怎麼被解析的
流程:apache 伺服器載入php文件然後進行操作,解析文件,如果需要訪問資料庫那就php又訪問資料庫然後伺服器將結果返回給瀏覽器
『陸』 自己開發的Web伺服器如何解析php文件
WAMP、LAMP里,A是Apache,P是PHP,PHP在Apache下一般是以伺服器模塊方式安裝,這些模塊在Apache體系結構里屬於可選功能層,Apache用apr_proc_create()函數為每個模塊創建一個子進程,每個進程的內存空間獨立,可以防止互相干擾。
WNMP、LNMP里的N是Nginx,Nginx主要通過FastCGI介面調用PHP之類的外部程序。
FastCGI是一個編程介面,可以將HTTP伺服器和腳本解析伺服器分開。Apache、Nginx、Lighttpd都實現了FastCGI介面。
如果想找個實現FastCGI介面的例子,推薦看Nginx的源碼(ngx_http_fastcgi_mole.c)。
Apache源碼里跟FastCGI介面有關的大致是這幾個文件:
fcgistarter.c
fcgi_protocol.h
mod_proxy_fcgi.c
更多內容可以搜「Apache源碼分析」、「Nginx源碼分析」、「FastCGI」。
『柒』 PHP是如何執行代碼解析過程的
就PHP語言來說,它也是一組符合一定規則的約定的指令。 在編程人員將自己的想法以php語言實現後,通過PHP的虛擬機(確切的來說應該是PHP的語言引擎Zend)將這些PHP指令轉變成C語言 (可以理解為更底層的一種指令集)指令,而c語言又會轉變成匯編語言, 最後匯編語言將根據處理器的規則轉變成機器碼執行。這是一個更高層次抽象的不斷具體化,不斷細化的過程。
『捌』 php 怎麼做域名解析
php只是用來做解讀程序的
需要通過入 nginx、apache、apache來解析域名到指定文件夾
server{
listen80;
server_name域名;
root"目錄";
location/{
indexindex.htmlindex.htmindex.php;
#autoindexon;
try_files$uri/index.php$uri;
if(!-e$request_filename){
rewrite^(.*)$/index.php?s=$1last;
break;
}
}
location~.php(.*)${
fastcgi_pass127.0.0.1:9000;#php埠默認9000
fastcgi_indexindex.php;
fastcgi_split_path_info^((?U).+.php)(/?.+)$;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
fastcgi_paramPATH_INFO$fastcgi_path_info;
fastcgi_paramPATH_TRANSLATED$document_root$fastcgi_path_info;
includefastcgi_params;
}
}
『玖』 很想知道伺服器是怎樣運行的php文件
問題1.伺服器是怎樣運行的php文件?
伺服器啟動時會根據配置文件來確定載入哪些模塊,比如安裝並配置了PHP後,伺服器(比如Apache)的配置文件中便有了這個模塊,啟動時就會載入它。襠伺服器接收到請求時,如果請求的是單純的HTML頁面,伺服器(比如Apache)會直接把這個頁面返回給請求。如果是PHP頁面,伺服器(比如Apache)會識別php頁面中的php標簽<?php ?>,並調用PHP模塊來執行PHP文件,執行完後,將結果返回給請求。
問題2:C:\WINDOWS\system32文件夾下放置了windows系統公用的一些動態連接庫、系統支持文件等,這些文件被系統上的多個程序公用,比如system32下的net.exe,它的作用就是提供網路支持配置等,你在設置網路連接、網上鄰居甚至用IE上網時都可能會調用這個文件。因此,system32包括了但不限於為伺服器服務的文件。以php_curl.dll為例,php_curl.dll並不是獨立就可以工作的,它也需要其他的擴展來支持,而這些擴展就可能包括系統system32下的ssleay32.dll,如果你的system32下沒有這個dll,那麼你當然需要拷貝一個過來了。
問題3:伺服器啟動 php啟動是怎樣的過程呢?
伺服器啟動跟PHP啟動沒有直接關系。PHP僅僅提供對PHP文件的解釋,伺服器則是對外提供web服務。伺服器之所以載入PHP是因為頁面是用PHP寫的,需要PHP來執行,否則就會直接把PHP文件返回給請求了。
問題4:看你提出的問題,你應該是一個初級開發者,目前可以不用深刻的了解這些內容,等你對web開發接觸一段時間後再思考這些問題更有效也更有意義。
問題5:PHP幫助文件是最好的老師。也可以到www.phpchina.com里和網友交流疑難問題。這是一個以PHP技術為中心,面向軟體開發者、程序愛好者的開源技術網站及交流社區。
問題6:一步一步來吧,不要著急哦,老手都是從菜鳥起步的。
『拾』 如何用php解析出來
<?php
3 header("Content-type:text/html;charset=utf-8");
4 // $file_name="cookie.jpg";
5 $file_name="聖誕狂歡.jpg";
6 //用以解決中文不能顯示出來的問題
7 $file_name=iconv("utf-8","gb2312",$file_name);
8 $file_sub_path=$_SERVER['DOCUMENT_ROOT']."marcofly/phpstudy/down/down/";
9 $file_path=$file_sub_path.$file_name;
10 //首先要判斷給定的文件存在與否
11 if(!file_exists($file_path)){
12 echo "沒有該文件文件";
13 return ;
14 }
15 $fp=fopen($file_path,"r");
16 $file_size=filesize($file_path);
17 //下載文件需要用到的頭
18 Header("Content-type: application/octet-stream");
19 Header("Accept-Ranges: bytes");
20 Header("Accept-Length:".$file_size);
21 Header("Content-Disposition: attachment; filename=".$file_name);
22 $buffer=1024;
23 $file_count=0;
24 //向瀏覽器返回數據
25 while(!feof($fp) && $file_count<$file_size){
26 $file_con=fread($fp,$buffer);
27 $file_count+=$buffer;
28 echo $file_con;
29 }
30 fclose($fp);
31 ?>