中山php|最優網絡中山做網站 中山php建站

最優良人

Category Page for: 后端程序

php壓縮html : 清除換行符,清除制表符,去掉注釋標記

2013/03/30 at 14:48 » Comments (689)

/** * 壓縮html : 清除換行符,清除制表符,去掉注釋標記 * @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;//防刷新時間 $allowNum=10;//防刷新次數 $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多維數組的搜索

2012/12/17 at 20:48 » Comments (743)

1 php搜索多維數組的鍵值 如下面例子: $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 怎么進行查找呢。有三個結果,而這三個結果都要,看下面的函數: ------------------------------------------------------------------------------------------------------------------------------- function array_search_re($needle, $haystack, $a=0, $nodes_temp=array()){ global ...more »

php過濾客戶提交參數,防注入

2012/11/24 at 17:16 » Comments (343)

以下代碼實現過濾php的$_GET 和$_POST參數 /** * 安全防范 */ 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",//過濾javascript的on事件 "/\s+/",//過濾多余的空白 ); $tarr = array( "", "", "", "\\1\\4", " ", ); $html = preg_replace( $farr,$tarr,$html); return $html; } if (sizeof($_GET)) ...more »

php計算代碼運行時間和使用內存

2012/11/14 at 16:28 » Comments (454)

<?php //開始計時 $HeaderTime = microtime(true);//參數true表示返回浮點數值 //代碼 //... printf(" total run: %.2f s<br>". "memory usage: %.2f M<br> ", microtime(true)-$HeaderTime, memory_get_usage() / 1024 / 1024 ); ?> 結果: total runtime: 1.47 s memory usage: 77.09 M more »

smarty模版使用php標簽,如何獲取模版變量

2012/09/22 at 11:54 » Comments (502)

已經assign一個模版變量$assign,由于要做特殊的循環輸出,使用for循環,因此使用到了php標簽,但是php語句和模版語句的變量作用域是不同的,因此不能直接獲取到 {{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的一個對象里面;只要在for之前進行賦值:$assign = $this->_tpl_vars[assign]; {{php}} $assign = $this->_tpl_vars[assign]; for($i=0;$i<count($assign);$i=$i+2){ echo ...more »

好用的smarty標簽:capture,literal,fetch

2012/09/22 at 11:16 » Comments (481)

1,capture標簽 capture的中文意思是抓取,它的作用是抓取模板輸出的數據,當我們需要它的時候,調用它,以得到抓取數據的目的。例子: {capture?name=test} <img?src=”testimg.jpg”> {/capture} <div?class=”image”> {$smarty.capture.test} </div> 說明: 在{capture name=”test”}和{/capture}之間的內容被存儲到變量$test中,該變量由name屬性指定.在模板中通過 $smarty.capture.test 訪問該變量.如果沒有指定name 屬性,函數默認將使用”default” 作為參數,這一點很jquery中的clone 2,config_load標簽 config_load可以直接將文件中的內容讀取出來,這樣可以省掉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> 上述過程中如果出現這樣的問題Warning: Smarty error: unable to read resource, 請查看一下,你的test.csv是不是放在smarty的配置目錄中,默認配置目錄是configs /** *?The?directory?where?config?files?are?located. * *?@var?string */ var?$config_dir??????=??’configs’; 3,literal標簽的使用 做web開發,難免會寫一些JS,jquery代碼。js和jquery里面都會{}這樣的符號,smarty會不會把它理解成php的變量呢?如果你不加literal標簽的話,smarty肯定會把它理解變量了,加了就不會,例如: {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標簽 當你習慣了assign后,你有沒有想過,在模板文件里面直接寫php代碼呢,我想有的時候你肯定很想吧。例如: {php} global?$result; foreach($result?as?$key=>$value){ echo?”key=$key,value=>$value<br>”; } {/php} 5,strip標簽 strip標簽去除標簽內的空格和回車,這一點我覺得,做手機開發的朋友肯定用的到,因為全角空格有可能會導致整個頁面錯亂,甚至是一個空白頁面。手機屏幕小,估計用smarty的可能性也比較小。 {strip} <div> <font?color=”red”>strip</font> </div> {/strip} 6,fetch標簽 fetch標簽根php的file_get_contents挺想的,都可以把文件中的內容讀出來,并且是個字符串的形勢 {fetch?file=”./aaaa.txt”?assign=”result”} {if?is_array($result)} <b>is?array</b> {else?if} <b>not?array</b> {/if}     more »

htaccess實現域名綁定,拒絕其他域名訪問

2012/09/17 at 17:12 » Comments (459)

獨立ip的主機,只要其他域名指向該ip都是可以訪問的,多域名訪問會產生大量重復內容,對seo非常不利,我們可以利用htaccess實現域名綁定,拒絕其他域名訪問 在站點根目錄建立.htaccess文件,寫入如下內容: RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} !www.sjkaoyan.com [NC] RewriteCond %{HTTP_HOST} !zui88.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^.* – [F,L] 這樣實現的結果是只能通過www.sjkaoyan.com,zui88.com來訪問站點,用其他的HOST訪問都會顯示403Forbidden。 其中:{HTTP_HOST}代表HTTP協議GET動作同時傳遞的Host的值,[NC]代表忽略大小寫;[F]代表動作為禁止;[L]代表最終匹配。 more »

smarty 利用@ 在模版完整打印多維數組

2012/07/21 at 09:41 » Comments (613)

有時候我們希望直接在模版上打印數組變量以供調試,打印的方式可以用php自帶的print_r或者是自己寫的調試函數,如debug(). 如果直接這樣打印多維數組 {{$var|print_r}},在模版看到的結果會是遍歷后的所有的value,不會顯示完整的數組結構,正確的方法是在函數前加個@,意思是把變量作為整體去對待 {{$var|@print_r}} more »

php利用谷歌實現自動在線翻譯

2012/07/14 at 15:41 » Comments (249)

php利用谷歌實現自動翻譯,以下是兩種實現的方式,php文檔用utf8就不會出現亂碼問題 第一種利用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; } //截取相關信息 $return = ""; $star="style.backgroundColor='\#fff'\">"; $end="</span></span></div>"; $p = "#{$star}(.*){$end}#iU";//i表示忽略大小寫,U禁止貪婪匹配 if(preg_match_all($p,$wf,$rs)) { print_r($rs); return $rs[1][0];} } echo googleTran('去'); more »
美女A片免费网站在线看,欧美精品AⅤ一区二区三区,免费毛片网址,欧美老熟妇乱子论视频,美女禁黄色网站