【笔记】PHP中好用的代码片段
来源:互联网 发布:魔剑生死棋刘依依知乎 编辑:程序博客网 时间:2024/06/04 00:32
此笔记主要记录PHP中常用到的一些代码片段
锚点
- 分页功能
- IP获取
分页功能
效果图
PHP
/** * 分页 * @param $page_count 总页数 * @param $show_number 显示多少页 * @return string */function paging($page_count,$show_number){ $getAttr=$_GET; $currentPage=!empty($getAttr['page']) ? $getAttr['page'] : 1; $href='//'.$_SERVER['SERVER_NAME'].$_SERVER["PATH_INFO"]; $pageStr=''; //上一页 if($currentPage>1){ $getAttr['page']=$currentPage-1; $url=$href."?".http_build_query($getAttr); $pageStr='<a href="'.$url.'" class="page-prev">上一页</a>'; }else{ $pageStr.='<a href="javascript:;" class="page-prev paging-disabled">上一页</a>'; } //当前页数的前后 $leftPage_num=floor($show_number/2); $rightPage_num=$show_number-$leftPage_num; $left=max($currentPage-$leftPage_num,1); $right=min($left+$show_number-1,$page_count); $left=max($right-$show_number+1,1); //省略部分和显示最小页数(首页) if($left>1){ $_GET['page']=1; $url=$href."?".http_build_query($_GET); $pageStr.='<a href="'.$url.'" class="page-next">'.$_GET['page'].'</a>'; //特殊条件 如 上一页1...234下一页 就去掉省略号直接显示 上一页1234下一页 if(($left-1)!=1){ $pageStr.='<span class="spr">…</span>'; } } //显示页码 for($i=$left;$i<$right+1;$i++){ $_GET['page']=$i; if($currentPage==$i){ $pageStr.='<span class="paging-current">'.$i.'<em>'.$i.'</em></span>'; }else{ $url=$href."?".http_build_query($_GET); $pageStr.='<a href="'.$url.'" class="">'.$i.'</a>'; } } //省略部分和最大页数(末页) if($right<$page_count){ $_GET['page']=$page_count; $url=$href."?".http_build_query($_GET); //特殊条件 如 上一页123...4下一页 就去掉省略号直接显示 if(($right+1)!=$page_count){ $pageStr.='<span class="spr">…</span>'; } $pageStr.='<a href="'.$url.'" class="page-next">'.$_GET['page'].'</a>'; } //下一页 if($currentPage!=$page_count){ $getAttr['page']=$currentPage+1; $url=$href."?".http_build_query($getAttr); $pageStr.='<a href="'.$url.'" class="page-next">下一页</a>'; }else{ $pageStr.='<a href="javascript:;" class="page-next paging-disabled">下一页</a>'; } $pageStr='<div class="pagingCtn">'.$pageStr.'</div>'; return $pageStr;}
css
.pagingCtn { display: inline-block; vertical-align: middle; margin: 10px 0; font-size: 0;}.pagingCtn>a:first-child, .pagingCtn>a:first-child em { border-radius: 2px 0 0 2px;}.pagingCtn a, .pagingCtn span { display: inline-block; vertical-align: middle; padding: 0 15px; height: 28px; line-height: 28px; margin: 0 -1px 5px 0; background-color: #fff; color: #333; font-size: 12px;}.pagingCtn a { text-decoration: none;}.pagingCtn a:hover { color: #009688;}.pagingCtn a,.pagingCtn span { text-align: center; border: 1px solid #e2e2e2;}.pagingCtn>.paging-current{ position: relative;}.pagingCtn>.paging-current em { position: absolute; left: -1px; top: -1px; padding: 1px; width: 100%; height: 100%; background-color: #009688; color: #FFF; font-style: normal; border-radius: 2px; box-sizing: content-box; z-index: 1;}.paging-disabled,.paging-disabled:hover { color: #d2d2d2!important; cursor: not-allowed!important;}
IP获取
PHP
/** * 获取客户端IP地址 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @param boolean $adv 是否进行高级模式获取(有可能被伪装) * @return mixed */function ip($type = 0, $adv = false){ $type = $type ? 1 : 0; static $ip = null; if (null !== $ip) { return $ip[$type]; } if ($adv) { if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $pos = array_search('unknown', $arr); if (false !== $pos) { unset($arr[$pos]); } $ip = trim(current($arr)); } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (isset($_SERVER['REMOTE_ADDR'])) { $ip = $_SERVER['REMOTE_ADDR']; } } elseif (isset($_SERVER['REMOTE_ADDR'])) { $ip = $_SERVER['REMOTE_ADDR']; } // IP地址合法验证 $long = sprintf("%u", ip2long($ip)); $ip = $long ? [$ip, $long] : ['0.0.0.0', 0]; return $ip[$type];}
阅读全文
0 0
- 【笔记】PHP中好用的代码片段
- 实用的PHP代码片段
- PHP 常用的代码片段
- 10 个有用的 PHP 代码片段
- 10 个救命的 PHP 代码片段
- 10 个救命的 PHP 代码片段
- 10 个救命的 PHP代码片段
- 10 个救命的 PHP 代码片段
- 10个救命的PHP代码片段
- PHP 处理字符串的代码片段
- 十个超级有用的PHP代码片段
- 10个好用的PHP代码片段
- 十个超级有用的PHP代码片段
- 十个超级有用的PHP代码片段
- 十个超级有用的PHP代码片段
- 10 个实用的PHP代码片段
- 超实用的PHP代码片段
- 超实用的PHP代码片段!
- 微信小程序之支付后调用SDK的异步通知及验证处理订单
- ShardedJedisPipeline在redis中的应用,一次性发送多条数据提升效率
- Spring Integration Metrics
- Redis集群搭建
- Java8新特性之CompletableFuture详解
- 【笔记】PHP中好用的代码片段
- 设备树那些事
- 有关字符串及数组api的一些笔记
- python中利用opencv简单做图片比对
- 深入理解Java虚拟机-虚拟机字节码执行引擎(八)
- JSPWiki环境搭建
- ffmpeg x264多线程编码测试
- ping实现用到的函数以及解析C语言
- js判断时间范围