‘壹’ 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 ?>