摘要:小清新,就是说的啊首先感谢社区通过我的审核,给我一个平台。风格很好,左右分工很好。以后将会在这里开博客了。
小清新,就是说的SegmentFault blog啊 首先感谢社区通过我的审核,给我一个平台。 风格很好,左右分工很好。 以后将会在这里开博客了。
最近接手一个项目里面也有伪静态来工作
分析其原理让我有点脑大,尤其是一开始上手的时候没有手册,没有
*关于wordpress大家都知道他的那个伪静态,这个程序的伪静态是用rewrite.php来中转的,但更明确的是,他把一个比较简单的处理弄得很复杂,而且犹豫这家伙并不擅长类处理方式,于是我在处理这个rewrite的时候很不方便,花了一天时间才将Apache php5.2.17下的路径重写搞定,中间还有很多路径规则,Apache不解析让我找不着北,但最终调好了。
他的可取之处有两点一个是使用了__rewrite方法对数据库中的路径规则进行解析,当然她在数据库中写的那个东西就不咋地了 本想截图,只能等会了,手机上不了那个网站 等有机会了吧这个截图在放上来吧 代码如下,核心就是在$_SEVER[" REQUEST_URI"]上,匹配到后就用这个赋值让浏览器识别网址为伪静态 另一个他用的经典部分就是判断好了之后就用include方法把根目录下的index.php引用进来,然后在根目录下的index.php中将class下的index.php包含进来, 在class中的index.php中通过autoload loadlib 等方法加载相关类 可以说程序逻辑没有问题,但却很明显的不系统,不条理,读懂这个程序很难 相比ThinkPHP,这套程序真是不咋地*
//include(dirname(__FILE__)) function __download($file){ set_time_limit(0); if(file_exists($file)){ $info = pathinfo($file); $fsize = filesize($file); if (isset($_SERVER["HTTP_RANGE"]) && ($_SERVER["HTTP_RANGE"] != "") && preg_match("/^bytes=([0-9]+)-$/i", $_SERVER["HTTP_RANGE"], $match) && ($match[1] 0) { header("HTTP/1.1 206 Partial Content"); header("Accept-Ranges: bytes"); header("Content-Ranges: bytes ".$start."-".($fsize - 1) . "/" . $fsize); header("Content-Length: ".($fsize - $start)); } else { header("Accept-Ranges: bytes"); header("Accept-Length: $fsize"); header("Content-Length: $fsize"); } header("Content-Type: application/octet-stream"); header("Content-Disposition:attachment;filename=".$info["basename"]); if($f=fopen($file,"rb")){fseek($f, $start); while($r = fread($f, 1024)){ echo $r; } fclose($f); } else echo "error"; return true; } else return false; } function __outFile($file, $contentType){ if ($contentType == "application/octet-stream") { __download($file); } else { $gmt_mtime = gmdate("D, d M Y H:i:s", filemtime($file))." GMT"; if((isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && array_shift(explode(";", $_SERVER["HTTP_IF_MODIFIED_SINCE"])) == $gmt_mtime)){ header("HTTP/1.1 304 Not Modified"); header("Expires: "); header("Cache-Control: "); header("Pragma: "); header("Content-Type: ".$contentType); header("Tips: Cache Not Modified"); header("Content-Length: 0"); return true; } header("Last-Modified:" . $gmt_mtime); header("Expires: "); header("Cache-Control: "); header("Pragma: "); header("Content-Type: ".$contentType); header("Tips: Normal Respond"); //header("Content-Type: ".$imgInfo["mime"]); if ($f = fopen($file, "rb")) { while ($r = fread($f, 1024)) { echo $r; } fclose($f); } } return true; } function __rewrite(){ global $r_rewrite,$r_uri,$r_d,$r_dir,$r_content_type_list; $matching=false; foreach($r_rewrite as $v){ if(preg_match($v[0],$r_uri,$matches)){ $r_uri=$v[1]; $r_uri=preg_replace("/$(d+)/e","$matches[$1]",$r_uri); $matching=true; break; } } if($matching){ $url_info=parse_url($r_uri); $r_include=str_replace("/",$r_d,$r_dir.$url_info["path"]); if(file_exists($r_include) && filetype($r_include)=="file"){ if($query=$url_info["query"]){ $sp=explode("&",$query); foreach($sp as $v){ $sp2=explode("=",$v); $_GET[$sp2[0]]=addslashes(urldecode($sp2[1]));//重要 } $_SERVER["QUERY_STRING"]=$query; } //if($url_info[""]) return $r_include; } else return __rewrite(); } else return false; } $r_marker="rewrite"; $r_marker_len=strlen($r_marker); if($r_q=$_SERVER["QUERY_STRING"]){ if(substr($r_q,0,$r_marker_len)===$r_marker){ if(($r_f1=strpos($r_q,"&"))!==false){ $r_=substr($r_q,0,$r_f1); if(($r_f2=strpos($r_,"="))!==false){ $r_=substr($r_,$r_f2+1); $_SERVER["QUERY_STRING"]=substr($r_q,$r_f1+1); if(strpos($_SERVER["QUERY_STRING"],$r_marker."=")===false) unset($_GET[$r_marker]); } else header("HTTP/1.1 404 Not Found"); } else { $r_=$_GET[$r_marker]; $_SERVER["QUERY_STRING"]=""; $_GET=array(); } /*rewrite start*/ unset($r_marker,$r_marker_len,$r_f1,$r_f2,$r_q);//unset var $r_!="" && substr($r_,0,1)=="/" && $r_=substr($r_,1); if($r_){ //if not null $r_="/".$r_; $r_dir=dirname(__FILE__); $r_d=DIRECTORY_SEPARATOR; //if exists out $r_include=str_replace("/",$r_d,$r_dir.$r_); $r_content_type_list=array( "001"=>"application/x-001", "301"=>"application/x-301", "323"=>"text/h323", "906"=>"application/x-906", "907"=>"drawing/907", "a11"=>"application/x-a11", "acp"=>"audio/x-mei-aac", "ai"=>"application/postscript", "aif"=>"audio/aiff", "aifc"=>"audio/aiff", "aiff"=>"audio/aiff", "anv"=>"application/x-anv", "asa"=>"text/asa", "asf"=>"video/x-ms-asf", "asp"=>"text/asp", "asx"=>"video/x-ms-asf", "au"=>"audio/basic", "avi"=>"video/avi", "awf"=>"application/vnd.adobe.workflow", "biz"=>"text/xml", "bmp"=>"application/x-bmp", "bot"=>"application/x-bot", "c4t"=>"application/x-c4t", "c90"=>"application/x-c90", "cal"=>"application/x-cals", "cat"=>"application/vnd.ms-pki.seccat", "cdf"=>"application/x-netcdf", "cdr"=>"application/x-cdr", "cel"=>"application/x-cel", "cer"=>"application/x-x509-ca-cert", "cg4"=>"application/x-g4", "cgm"=>"application/x-cgm", "cit"=>"application/x-cit", "class"=>"java/*", "cml"=>"text/xml", "cmp"=>"application/x-cmp", "cmx"=>"application/x-cmx", "cot"=>"application/x-cot", "crl"=>"application/pkix-crl", "crt"=>"application/x-x509-ca-cert", "csi"=>"application/x-csi", "css"=>"text/css", "cut"=>"application/x-cut", "dbf"=>"application/x-dbf", "dbm"=>"application/x-dbm", "dbx"=>"application/x-dbx", "dcd"=>"text/xml", "dcx"=>"application/x-dcx", "der"=>"application/x-x509-ca-cert", "dgn"=>"application/x-dgn", "dib"=>"application/x-dib", "dll"=>"application/x-msdownload", "doc"=>"application/msword", "dot"=>"application/msword", "drw"=>"application/x-drw", "dtd"=>"text/xml", "dwf"=>"Model/vnd.dwf", "dwf"=>"application/x-dwf", "dwg"=>"application/x-dwg", "dxb"=>"application/x-dxb", "dxf"=>"application/x-dxf", "edn"=>"application/vnd.adobe.edn", "emf"=>"application/x-emf", "eml"=>"message/rfc822", "ent"=>"text/xml", "epi"=>"application/x-epi", "eps"=>"application/x-ps", "eps"=>"application/postscript", "etd"=>"application/x-ebx", "exe"=>"application/x-msdownload", "fax"=>"image/fax", "fdf"=>"application/vnd.fdf", "fif"=>"application/fractals", "fo"=>"text/xml", "frm"=>"application/x-frm", "g4"=>"application/x-g4", "gbr"=>"application/x-gbr", "gif"=>"image/gif", "gl2"=>"application/x-gl2", "gp4"=>"application/x-gp4", "hgl"=>"application/x-hgl", "hmr"=>"application/x-hmr", "hpg"=>"application/x-hpgl", "hpl"=>"application/x-hpl", "hqx"=>"application/mac-binhex40", "hrf"=>"application/x-hrf", "hta"=>"application/hta", "htc"=>"text/x-component", "htm"=>"text/html", "html"=>"text/html", "htt"=>"text/webviewhtml", "htx"=>"text/html", "icb"=>"application/x-icb", "ico"=>"image/x-icon", "ico"=>"application/x-ico", "iff"=>"application/x-iff", "ig4"=>"application/x-g4", "igs"=>"application/x-igs", "iii"=>"application/x-iphone", "img"=>"application/x-img", "ins"=>"application/x-internet-signup", "isp"=>"application/x-internet-signup", "IVF"=>"video/x-ivf", "java"=>"java/*", "jfif"=>"image/jpeg", "jpe"=>"image/jpeg", "jpe"=>"application/x-jpe", "jpeg"=>"image/jpeg", "jpg"=>"image/jpeg", "jpg"=>"application/x-jpg", "js"=>"application/x-javascript", "jsp"=>"text/html", "la1"=>"audio/x-liquid-file", "lar"=>"application/x-laplayer-reg", "latex"=>"application/x-latex", "lavs"=>"audio/x-liquid-secure", "lbm"=>"application/x-lbm", "lmsff"=>"audio/x-la-lms", "ls"=>"application/x-javascript", "ltr"=>"application/x-ltr", "m1v"=>"video/x-mpeg", "m2v"=>"video/x-mpeg", "m3u"=>"audio/mpegurl", "m4e"=>"video/mpeg4", "mac"=>"application/x-mac", "man"=>"application/x-troff-man", "math"=>"text/xml", "mdb"=>"application/msaccess", "mdb"=>"application/x-mdb", "mfp"=>"application/x-shockwave-flash", "mht"=>"message/rfc822", "mhtml"=>"message/rfc822", "mi"=>"application/x-mi", "mid"=>"audio/mid", "midi"=>"audio/mid", "mil"=>"application/x-mil", "mml"=>"text/xml", "mnd"=>"audio/x-musicnet-download", "mns"=>"audio/x-musicnet-stream", "mocha"=>"application/x-javascript", "movie"=>"video/x-sgi-movie", "mp1"=>"audio/mp1", "mp2"=>"audio/mp2", "mp2v"=>"video/mpeg", "mp3"=>"audio/mp3", "mp4"=>"video/mpeg4", "mpa"=>"video/x-mpg", "mpd"=>"application/vnd.ms-project", "mpe"=>"video/x-mpeg", "mpeg"=>"video/mpg", "mpg"=>"video/mpg", "mpga"=>"audio/rn-mpeg", "mpp"=>"application/vnd.ms-project", "mps"=>"video/x-mpeg", "mpt"=>"application/vnd.ms-project", "mpv"=>"video/mpg", "mpv2"=>"video/mpeg", "mpw"=>"application/vnd.ms-project", "mpx"=>"application/vnd.ms-project", "mtx"=>"text/xml", "mxp"=>"application/x-mmxp", "net"=>"image/pnetvue", "nrf"=>"application/x-nrf", "nws"=>"message/rfc822", "odc"=>"text/x-ms-odc", "out"=>"application/x-out", "p10"=>"application/pkcs10", "p12"=>"application/x-pkcs12", "p7b"=>"application/x-pkcs7-certificates", "p7c"=>"application/pkcs7-mime", "p7m"=>"application/pkcs7-mime", "p7r"=>"application/x-pkcs7-certreqresp", "p7s"=>"application/pkcs7-signature", "pc5"=>"application/x-pc5", "pci"=>"application/x-pci", "pcl"=>"application/x-pcl", "pcx"=>"application/x-pcx", "pdf"=>"application/pdf", "pdf"=>"application/pdf", "pdx"=>"application/vnd.adobe.pdx", "pfx"=>"application/x-pkcs12", "pgl"=>"application/x-pgl", "pic"=>"application/x-pic", "pko"=>"application/vnd.ms-pki.pko", "pl"=>"application/x-perl", "plg"=>"text/html", "pls"=>"audio/scpls", "plt"=>"application/x-plt", "png"=>"image/png", "pot"=>"application/vnd.ms-powerpoint", "ppa"=>"application/vnd.ms-powerpoint", "ppm"=>"application/x-ppm", "pps"=>"application/vnd.ms-powerpoint", "ppt"=>"application/vnd.ms-powerpoint", "ppt"=>"application/x-ppt", "pr"=>"application/x-pr", "prf"=>"application/pics-rules", "prn"=>"application/x-prn", "prt"=>"application/x-prt", "ps"=>"application/x-ps", "ps"=>"application/postscript", "ptn"=>"application/x-ptn", "pwz"=>"application/vnd.ms-powerpoint", "r3t"=>"text/vnd.rn-realtext3d", "ra"=>"audio/vnd.rn-realaudio", "ram"=>"audio/x-pn-realaudio", "ras"=>"application/x-ras", "rat"=>"application/rat-file", "rdf"=>"text/xml", "rec"=>"application/vnd.rn-recording", "red"=>"application/x-red", "rgb"=>"application/x-rgb", "rjs"=>"application/vnd.rn-realsystem-rjs", "rjt"=>"application/vnd.rn-realsystem-rjt", "rlc"=>"application/x-rlc", "rle"=>"application/x-rle", "rm"=>"application/vnd.rn-realmedia", "rmf"=>"application/vnd.adobe.rmf", "rmi"=>"audio/mid", "rmj"=>"application/vnd.rn-realsystem-rmj", "rmm"=>"audio/x-pn-realaudio", "rmp"=>"application/vnd.rn-rn_music_package", "rms"=>"application/vnd.rn-realmedia-secure", "rmvb"=>"application/vnd.rn-realmedia-vbr", "rmx"=>"application/vnd.rn-realsystem-rmx", "rnx"=>"application/vnd.rn-realplayer", "rp"=>"image/vnd.rn-realpix", "rpm"=>"audio/x-pn-realaudio-plugin", "rsml"=>"application/vnd.rn-rsml", "rt"=>"text/vnd.rn-realtext", "rtf"=>"application/msword", "rtf"=>"application/x-rtf", "rv"=>"video/vnd.rn-realvideo", "sam"=>"application/x-sam", "sat"=>"application/x-sat", "sdp"=>"application/sdp", "sdw"=>"application/x-sdw", "sit"=>"application/x-stuffit", "slb"=>"application/x-slb", "sld"=>"application/x-sld", "slk"=>"drawing/x-slk", "smi"=>"application/smil", "smil"=>"application/smil", "smk"=>"application/x-smk", "snd"=>"audio/basic", "sol"=>"text/plain", "sor"=>"text/plain", "spc"=>"application/x-pkcs7-certificates", "spl"=>"application/futuresplash", "spp"=>"text/xml", "ssm"=>"application/streamingmedia", "sst"=>"application/vnd.ms-pki.certstore", "stl"=>"application/vnd.ms-pki.stl", "stm"=>"text/html", "sty"=>"application/x-sty", "svg"=>"text/xml", "swf"=>"application/x-shockwave-flash", "tdf"=>"application/x-tdf", "tg4"=>"application/x-tg4", "tga"=>"application/x-tga", "tif"=>"image/tiff", "tif"=>"application/x-tif", "tiff"=>"image/tiff", "tld"=>"text/xml", "top"=>"drawing/x-top", "torrent"=>"application/x-bittorrent", "tsd"=>"text/xml", "txt"=>"text/plain", "uin"=>"application/x-icq", "uls"=>"text/iuls", "vcf"=>"text/x-vcard", "vda"=>"application/x-vda", "vdx"=>"application/vnd.visio", "vml"=>"text/xml", "vpg"=>"application/x-vpeg005", "vsd"=>"application/vnd.visio", "vsd"=>"application/x-vsd", "vss"=>"application/vnd.visio", "vst"=>"application/vnd.visio", "vst"=>"application/x-vst", "vsw"=>"application/vnd.visio", "vsx"=>"application/vnd.visio", "vtx"=>"application/vnd.visio", "vxml"=>"text/xml", "wav"=>"audio/wav", "wax"=>"audio/x-ms-wax", "wb1"=>"application/x-wb1", "wb2"=>"application/x-wb2", "wb3"=>"application/x-wb3", "wbmp"=>"image/vnd.wap.wbmp", "wiz"=>"application/msword", "wk3"=>"application/x-wk3", "wk4"=>"application/x-wk4", "wkq"=>"application/x-wkq", "wks"=>"application/x-wks", "wm"=>"video/x-ms-wm", "wma"=>"audio/x-ms-wma", "wmd"=>"application/x-ms-wmd", "wmf"=>"application/x-wmf", "wml"=>"text/vnd.wap.wml", "wmv"=>"video/x-ms-wmv", "wmx"=>"video/x-ms-wmx", "wmz"=>"application/x-ms-wmz", "wp6"=>"application/x-wp6", "wpd"=>"application/x-wpd", "wpg"=>"application/x-wpg", "wpl"=>"application/vnd.ms-wpl", "wq1"=>"application/x-wq1", "wr1"=>"application/x-wr1", "wri"=>"application/x-wri", "wrk"=>"application/x-wrk", "ws"=>"application/x-ws", "ws2"=>"application/x-ws", "wsc"=>"text/scriptlet", "wsdl"=>"text/xml", "wvx"=>"video/x-ms-wvx", "xdp"=>"application/vnd.adobe.xdp", "xdr"=>"text/xml", "xfd"=>"application/vnd.adobe.xfd", "xfdf"=>"application/vnd.adobe.xfdf", "xhtml"=>"text/html", "xls"=>"application/vnd.ms-excel", "xls"=>"application/x-xls", "xlw"=>"application/x-xlw", "xml"=>"text/xml", "xpl"=>"audio/scpls", "xq"=>"text/xml", "xql"=>"text/xml", "xquery"=>"text/xml", "xsd"=>"text/xml", "xsl"=>"text/xml", "xslt"=>"text/xml", "xwd"=>"application/x-xwd", "x_b"=>"application/x-x_b", "x_t"=>"application/x-x_t", "*"=>"application/octet-stream" ); if(file_exists($r_include)){ if(filetype($r_include)=="file"){ $r_pathinfo=pathinfo($r_include); $r_extension=$r_pathinfo["extension"]; $r_content_type=""; if($r_extension){ $r_extension=strtolower($r_extension); if($r_extension=="php"){ $_SERVER["SCRIPT_FILENAME"]=$r_include; $_SERVER["PHP_SELF"]=$r_; chdir($r_pathinfo["dirname"]); unset($r_,$r_dir,$r_d,$r_extension,$r_pathinfo,$r_content_type_list); include($r_include); exit; } if(!($r_content_type=$r_content_type_list[$r_extension]))$r_content_type=$r_content_type_list["*"]; } else $r_content_type=$r_content_type_list["*"]; __outFile($r_include, $r_content_type); unset($r_,$r_dir,$r_d,$r_extension,$r_pathinfo,$r_content_type_list,$r_content_type,$r_include,$f,$r); } else { //folder substr($r_include,-1) != DIRECTORY_SEPARATOR && $r_include.= DIRECTORY_SEPARATOR; $r_include.="index.php"; if(file_exists($r_include)){ $_SERVER["SCRIPT_FILENAME"] = $r_include; unset($r_,$r_dir,$r_d,$r_content_type_list); include($r_include); } else header("HTTP/1.1 404 Not Found"); } } else { //exe rewrite $r_rewrite_file="./cache/array/rewrite.php"; if(file_exists($r_rewrite_file)){ $fp = fopen($r_rewrite_file,"rb"); flock($fp, LOCK_SH) ; $r_rewrite=@fread($fp,filesize($r_rewrite_file)); flock($fp, LOCK_UN); fclose($fp); unset($fp); $r_rewrite=unserialize(substr($r_rewrite,13));//rewrite_rule //if($_SERVER["HTTP_X_REWRITE_URL"])$r_uri=$_SERVER["HTTP_X_REWRITE_URL"]; //else $r_uri=$r_uri.$_SERVER["REQUEST_URI"]; $_GET=array(); $r_uri=$r_.($_SERVER["QUERY_STRING"]?"?".$_SERVER["QUERY_STRING"]:""); if(($r_include=__rewrite())!==false){ $r_pathinfo=pathinfo($r_include); $r_extension=$r_pathinfo["extension"]; $r_content_type=""; if($r_extension){ $r_extension=strtolower($r_extension); if($r_extension=="php"){ $_SERVER["PHP_SELF"]=$r_; $_SERVER["SCRIPT_FILENAME"]=$r_include; chdir($r_pathinfo["dirname"]); unset($r_,$r_dir,$r_d,$r_extension,$r_pathinfo,$r_content_type_list); include($r_include); exit; } if(!($r_content_type=$r_content_type_list[$r_extension]))$r_content_type=$r_content_type_list["*"]; } else $r_content_type=$r_content_type_list["*"]; /*header("Content-Type:".$r_content_type); if($f=fopen($r_include,"rb")){ while($r=fread($f,1024))echo $r; fclose($f); }*/ __outFile($r_include, $r_content_type); } else header("HTTP/1.1 404 Not Found"); unset($r_,$r_dir,$r_d,$r_content_type_list,$r_rewrite_file); } else header("HTTP/1.1 404 Not Found"); // } } else { unset($r_); include("./index.php");//index } /*rewrite end*/ } else header("HTTP/1.1 404 Not Found"); } else include("./index.php");
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/20787.html
摘要:继上篇真假之后的怪事问题解决之后,我又遇到了哪些问题得到的数据,竟然没有一个地方使用,也没有定义变量。我的大脑真的有点抽,怎么回事情找不到变量定义具体是怎么回事呢我在下的中得到思路。 继上篇真假rewrite之后的怪事 rewrite问题解决之后,我又遇到了哪些问题? $_GET得到的数据,竟然没有一个地方使用,也没有定义变量。 我的大脑真的有点抽,怎么回事情?找不到变量定...
摘要:在项目开发过程中,很多时候需要处理数据,在处理的过程中,难免会对数据进行真假的判断,下面是总结的几点例子,以备使用数据真假输出假空字符串真假输出假数字真假输出真数字真假输出假非数字的数字真假输出真不在对象中第一层的属性名真假输出假不在对象中 在项目开发过程中,很多时候需要处理json数据,在处理的过程中,难免会对数据进行真假的判断,下面是总结的几点例子,以备使用 json数据 cons...
昔者庄周梦为胡蝶,栩栩然胡蝶也。自喻适志与!不知周也。俄然觉,则蘧蘧然周也。不知周之梦为胡蝶与?胡蝶之梦为周与? ——典出《庄子·齐物论》 其故事大意为:庄周梦见自己变成一只蝴蝶,栩栩如生,感到十分愉快和惬意!不知道自己原本是庄周。突然间醒过来,惊惶不定之间方知原来自己是庄周。不知道是庄周梦中变成蝴蝶呢,还是蝴蝶梦见自己变成庄周呢? 庄周梦蝶是一则非常浪漫的寓言故事,它揭示了一个道理:这个纷繁...
摘要:微信推送服务手机个人通知讨论实现回复消息来辨别鞋子真假,年收入万美金我叫,简单来说,用户付费,我通过回复一些消息告诉用户购买的商品是真品还是假的,类似下面这样的,一年收入了万美金。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;co...
阅读 2140·2021-09-04 16:40
阅读 1419·2021-08-13 15:07
阅读 3580·2019-08-30 15:53
阅读 3174·2019-08-30 13:11
阅读 1031·2019-08-29 17:22
阅读 1762·2019-08-29 12:47
阅读 1447·2019-08-29 11:27
阅读 2199·2019-08-26 18:42