中山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.zui88.com [NC] RewriteCond %{HTTP_HOST} !zui88.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^.* – [F,L] 这样实现的结果是只能通过www.zui88.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 »