中山php|最優(yōu)網(wǎng)絡(luò) :中山做網(wǎng)站 中山php建站
最優(yōu)良人
Category Page for: 后端程序
php壓縮html : 清除換行符,清除制表符,去掉注釋標(biāo)記
2013/03/30 at 14:48 » Comments (689)
/** * 壓縮html : 清除換行符,清除制表符,去掉注釋標(biāo)記 * @param $string * @return 壓縮后的$string * */ function compress_html($string) { $string = str_replace("\r\n", '', $string); //清除換行符 $string = str_replace("\n", '', $string); //清除換行符 $string = str_replace("\t", '', $string); //清除制表符 $pattern = array ( "/> *([^ ...more »php防止刷流量攻擊
2013/03/29 at 18:55 » Comments (0)
<?php //查詢禁止IP $ip =$_SERVER['REMOTE_ADDR']; $fileht=".htaccess2"; if(!file_exists($fileht))file_put_contents($fileht,""); $filehtarr=@file($fileht); if(in_array($ip."\r\n",$filehtarr))die("Warning:"."<br>"."Your IP address are forbided by some reason, IF you have any question Pls emill to shop@mydalle.com!"); //加入禁止IP $time=time(); $fileforbid="log/forbidchk.dat"; if(file_exists($fileforbid)) { if($time-filemtime($fileforbid)>60)unlink($fileforbid); else{ $fileforbidarr=@file($fileforbid); if($ip==substr($fileforbidarr[0],0,strlen($ip))) { if($time-substr($fileforbidarr[1],0,strlen($time))>600)unlink($fileforbid); elseif($fileforbidarr[2]>600){file_put_contents($fileht,$ip."\r\n",FILE_APPEND);unlink($fileforbid);} else{$fileforbidarr[2]++;file_put_contents($fileforbid,$fileforbidarr);} } } } //防刷新 $str=""; $file="log/ipdate.dat"; if(!file_exists("log")&&!is_dir("log"))mkdir("log",0777); if(!file_exists($file))file_put_contents($file,""); $allowTime = 120;//防刷新時(shí)間 $allowNum=10;//防刷新次數(shù) $uri=$_SERVER['REQUEST_URI']; $checkip=md5($ip); $checkuri=md5($uri); $yesno=true; $ipdate=@file($file); foreach($ipdate as $k=>$v) { $iptem=substr($v,0,32); $uritem=substr($v,32,32); $timetem=substr($v,64,10); $numtem=substr($v,74); if($time-$timetem<$allowTime){ if($iptem!=$checkip)$str.=$v; else{ $yesno=false; if($uritem!=$checkuri)$str.=$iptem.$checkuri.$time."1\r\n"; elseif($numtem<$allowNum)$str.=$iptem.$uritem.$timetem.($numtem+1)."\r\n"; else { if(!file_exists($fileforbid)){$addforbidarr=array($ip."\r\n",time()."\r\n",1);file_put_contents($fileforbid,$addforbidarr);} file_put_contents("log/forbided_ip.log",$ip."--".date("Y-m-d H:i:s",time())."--".$uri."\r\n",FILE_APPEND); $timepass=$timetem+$allowTime-$time; die("Warning:"."<br>"."Sorry,you are forbided by refreshing frequently ...more »php多維數(shù)組的搜索
2012/12/17 at 20:48 » Comments (743)
1 php搜索多維數(shù)組的鍵值 如下面例子: $foo[1]['a']['xx'] = 'bar 1'; $foo[1]['b']['xx'] = 'bar 2'; $foo[2]['a']['bb'] = 'bar 3'; $foo[2]['a']['yy'] = 'bar 4'; $foo[3]['c']['dd'] = 'bar 3'; $foo[3]['f']['gg'] = 'bar 3'; $foo['info'][1] = 'bar 5'; 如果要查找 bar 3 怎么進(jìn)行查找呢。有三個(gè)結(jié)果,而這三個(gè)結(jié)果都要,看下面的函數(shù): ------------------------------------------------------------------------------------------------------------------------------- function array_search_re($needle, $haystack, $a=0, $nodes_temp=array()){ global ...more »php過(guò)濾客戶提交參數(shù),防注入
2012/11/24 at 17:16 » Comments (343)
以下代碼實(shí)現(xiàn)過(guò)濾php的$_GET 和$_POST參數(shù) /** * 安全防范 */ function Add_S($array) { foreach($array as $key=>$value) { if(!is_array($value)) { $value = get_magic_quotes_gpc()?$value:addslashes($value); $array[$key]=filterHtml($value); } Else { Add_S($array[$key]); } } return $array; } function glstr($var) { if (is_array($var)) { return Add_S($var); } elseif(strlen($var)){ $var = get_magic_quotes_gpc()?$var:addslashes($var); $var = filterHtml($var); } return $var; } function filterHtml($html) { $farr = array( "/<!DOCTYPE([^>]*?)>/eis", "/<(\/?)(html|body|head|link|meta|base|input)([^>]*?)>/eis", "/<(script|i?frame|style|title|form)(.*?)<\/\\1>/eis", "/(<[^>]*?\s+)on[a-z]+\s*?=(\"|')([^\\2]*)\\2([^>]*?>)/isU",//過(guò)濾javascript的on事件 "/\s+/",//過(guò)濾多余的空白 ); $tarr = array( "", "", "", "\\1\\4", " ", ); $html = preg_replace( $farr,$tarr,$html); return $html; } if (sizeof($_GET)) ...more »php計(jì)算代碼運(yùn)行時(shí)間和使用內(nèi)存
2012/11/14 at 16:28 » Comments (454)
<?php //開(kāi)始計(jì)時(shí) $HeaderTime = microtime(true);//參數(shù)true表示返回浮點(diǎn)數(shù)值 //代碼 //... printf(" total run: %.2f s<br>". "memory usage: %.2f M<br> ", microtime(true)-$HeaderTime, memory_get_usage() / 1024 / 1024 ); ?> 結(jié)果: total runtime: 1.47 s memory usage: 77.09 M more »smarty模版使用php標(biāo)簽,如何獲取模版變量
2012/09/22 at 11:54 » Comments (502)
已經(jīng)assign一個(gè)模版變量$assign,由于要做特殊的循環(huán)輸出,使用for循環(huán),因此使用到了php標(biāo)簽,但是php語(yǔ)句和模版語(yǔ)句的變量作用域是不同的,因此不能直接獲取到 {{php}} for($i=0;$i<count($assign);$i=$i+2){ echo ' <ul> <li> <span class="zz_pic"><a href="'._url('picture',array('col_key'=>'cert','pic_id'=>$assign[$i][pic_id])).'" title=""><img src="uploads/thumb_'.$assign[$i][pic].'" alt=""></a></span> <span class="zz_title"><a href="'._url('picture',array('col_key'=>'cert','pic_id'=>$assign[$i][pic_id])).'" title="">'.$assign[$i][title].'</a></span> </li> <li> <span class="zz_pic"><a href="'._url('picture',array('col_key'=>'cert','pic_id'=>$assign[$i+1][pic_id])).'" title=""><img src="uploads/thumb_'.$assign[$i+1][pic].'" alt=""></a></span> <span class="zz_title"><a href="'._url('picture',array('col_key'=>'cert','pic_id'=>$assign[$i+1][pic_id])).'" title="">'.$assign[$i+1][title].'</a></span> </li>i> </ul>';} {{/php}} 解決的方法是:模版變量全部存在smarty的一個(gè)對(duì)象里面;只要在for之前進(jìn)行賦值:$assign = $this->_tpl_vars[assign]; {{php}} $assign = $this->_tpl_vars[assign]; for($i=0;$i<count($assign);$i=$i+2){ echo ...more »好用的smarty標(biāo)簽:capture,literal,fetch
2012/09/22 at 11:16 » Comments (481)
1,capture標(biāo)簽 capture的中文意思是抓取,它的作用是抓取模板輸出的數(shù)據(jù),當(dāng)我們需要它的時(shí)候,調(diào)用它,以得到抓取數(shù)據(jù)的目的。例子: {capture?name=test} <img?src=”testimg.jpg”> {/capture} <div?class=”image”> {$smarty.capture.test} </div> 說(shuō)明: 在{capture name=”test”}和{/capture}之間的內(nèi)容被存儲(chǔ)到變量$test中,該變量由name屬性指定.在模板中通過(guò) $smarty.capture.test 訪問(wèn)該變量.如果沒(méi)有指定name 屬性,函數(shù)默認(rèn)將使用”default” 作為參數(shù),這一點(diǎn)很jquery中的clone 2,config_load標(biāo)簽 config_load可以直接將文件中的內(nèi)容讀取出來(lái),這樣可以省掉assign這一步。 test.csv: pageTitle?=?”config_load_test” bodyBgColor?=?”#eeeeee” img?=?”girl.jpg” width=”100″ height=”100″ index.tpl: {config_load?file=”test.csv”} <html> <title>{#pageTitle#}</title> <body?bgcolor=”{#bodyBgColor#}”> <img?src=”{#img#}”?width=”{#width#}”?height=”{#height#}”> </body> </html> 上述過(guò)程中如果出現(xiàn)這樣的問(wèn)題Warning: Smarty error: unable to read resource, 請(qǐng)查看一下,你的test.csv是不是放在smarty的配置目錄中,默認(rèn)配置目錄是configs /** *?The?directory?where?config?files?are?located. * *?@var?string */ var?$config_dir??????=??’configs’; 3,literal標(biāo)簽的使用 做web開(kāi)發(fā),難免會(huì)寫(xiě)一些JS,jquery代碼。js和jquery里面都會(huì){}這樣的符號(hào),smarty會(huì)不會(huì)把它理解成php的變量呢?如果你不加literal標(biāo)簽的話,smarty肯定會(huì)把它理解變量了,加了就不會(huì),例如: {literal} function?getAbsLeft(e){ var?l=e.offsetLeft; while(e=e.offsetParent)l+=e.offsetLeft; return?l; } function?getAbsTop(e){ var?t=e.offsetTop; while(e=e.offsetParent)t+=e.offsetTop; return?t; } {/literal} 4,php標(biāo)簽 當(dāng)你習(xí)慣了assign后,你有沒(méi)有想過(guò),在模板文件里面直接寫(xiě)php代碼呢,我想有的時(shí)候你肯定很想吧。例如: {php} global?$result; foreach($result?as?$key=>$value){ echo?”key=$key,value=>$value<br>”; } {/php} 5,strip標(biāo)簽 strip標(biāo)簽去除標(biāo)簽內(nèi)的空格和回車(chē),這一點(diǎn)我覺(jué)得,做手機(jī)開(kāi)發(fā)的朋友肯定用的到,因?yàn)槿强崭裼锌赡軙?huì)導(dǎo)致整個(gè)頁(yè)面錯(cuò)亂,甚至是一個(gè)空白頁(yè)面。手機(jī)屏幕小,估計(jì)用smarty的可能性也比較小。 {strip} <div> <font?color=”red”>strip</font> </div> {/strip} 6,fetch標(biāo)簽 fetch標(biāo)簽根php的file_get_contents挺想的,都可以把文件中的內(nèi)容讀出來(lái),并且是個(gè)字符串的形勢(shì) {fetch?file=”./aaaa.txt”?assign=”result”} {if?is_array($result)} <b>is?array</b> {else?if} <b>not?array</b> {/if} more »htaccess實(shí)現(xiàn)域名綁定,拒絕其他域名訪問(wèn)
2012/09/17 at 17:12 » Comments (459)
獨(dú)立ip的主機(jī),只要其他域名指向該ip都是可以訪問(wèn)的,多域名訪問(wèn)會(huì)產(chǎn)生大量重復(fù)內(nèi)容,對(duì)seo非常不利,我們可以利用htaccess實(shí)現(xiàn)域名綁定,拒絕其他域名訪問(wèn) 在站點(diǎn)根目錄建立.htaccess文件,寫(xiě)入如下內(nèi)容: RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} !www.berihn.cn [NC] RewriteCond %{HTTP_HOST} !zui88.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^.* – [F,L] 這樣實(shí)現(xiàn)的結(jié)果是只能通過(guò)www.berihn.cn,zui88.com來(lái)訪問(wèn)站點(diǎn),用其他的HOST訪問(wèn)都會(huì)顯示403Forbidden。 其中:{HTTP_HOST}代表HTTP協(xié)議GET動(dòng)作同時(shí)傳遞的Host的值,[NC]代表忽略大小寫(xiě);[F]代表動(dòng)作為禁止;[L]代表最終匹配。 more »smarty 利用@ 在模版完整打印多維數(shù)組
2012/07/21 at 09:41 » Comments (613)
有時(shí)候我們希望直接在模版上打印數(shù)組變量以供調(diào)試,打印的方式可以用php自帶的print_r或者是自己寫(xiě)的調(diào)試函數(shù),如debug(). 如果直接這樣打印多維數(shù)組 {{$var|print_r}},在模版看到的結(jié)果會(huì)是遍歷后的所有的value,不會(huì)顯示完整的數(shù)組結(jié)構(gòu),正確的方法是在函數(shù)前加個(gè)@,意思是把變量作為整體去對(duì)待 {{$var|@print_r}} more »php利用谷歌實(shí)現(xiàn)自動(dòng)在線翻譯
2012/07/14 at 15:41 » Comments (249)
php利用谷歌實(shí)現(xiàn)自動(dòng)翻譯,以下是兩種實(shí)現(xiàn)的方式,php文檔用utf8就不會(huì)出現(xiàn)亂碼問(wèn)題 第一種利用curl: function translate($text,$language='zh-cn|en'){ if(empty($text))return false; @set_time_limit(0); $html = ""; $ch=curl_init("http://google.com/translate_t?langpair=".urlencode($language)."&text=".urlencode($text)); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_HEADER, 0); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); $html=curl_exec($ch); if(curl_errno($ch))$html = ""; curl_close($ch); if(!empty($html)){ $x=explode("</span></span></div></div>",$html); $x=explode("onmouseout=\"this.style.backgroundColor='#fff'\">",$x[0]); return $x[1]; }else{ return false; } } echo translate('去'); 第二種:利用get方式 function googleTran($text){ if(empty($text)) return ""; //反間碟 $wf=@file_get_contents('http://translate.google.cn/translate_t?sl=zh-CN&tl=en&text='.$text.'#'); if (false===$wf||empty($wf)){ return false; } //截取相關(guān)信息 $return = ""; $star="style.backgroundColor='\#fff'\">"; $end="</span></span></div>"; $p = "#{$star}(.*){$end}#iU";//i表示忽略大小寫(xiě),U禁止貪婪匹配 if(preg_match_all($p,$wf,$rs)) { print_r($rs); return $rs[1][0];} } echo googleTran('去'); more »