哪位帮忙看下这个分页类怎么调用,我说的是在查询语句下
网上找到一个比较好看的分页类,尽管作者已经说明怎么调用了,但是对我来说还是不太明白,主要是在sql语句里面怎么调用,下面是分页类代码:
<br /><?php<br />/**<br /> * 可以灵活定制的分页类<br /> * <br /> * 可以定制的选项包括,分页链接显示效果,当前页码链接按钮的样式,URL中获取分页值的名字,可以随意带自己的参数<br /> * <br /> * 使用方法:<br /> * 1、初始化类的时候需要传入参数,类型为数组。<br /> * array(<br /> * (必填)'totalRows'=>'100', 需要显示的数据的总条数;<br /> * (必填)'pageSize'=>'2', 每页需要显示的代码数量;<br /> * (必填)'currentPage'=>$_GET['p'], 当前页码,默认可以通过$_GET['p']获取,其中名字p可以定制<br /> * (必填)'baseUrl'=>'/welcome?id=3',你当前页面的链接地址,比如为http://www.xxx.com/test.php(或者/test.php),如果后面带有参数则可以为http://www.xxx.com/test?id=8<br /> * (选填,默认为3)'offset'=>'3', 当前页码的左右偏移量,比如当前页码为5,则在5的左右各显示几个数字链接,默认为3个,则效果为2,3,4,5,6,7,8<br /> * (选填,默认为p)'pageString'=>'p',通过$_GET['p']获取当前页码时候的名字,默认为p<br /> * (选填,默认为here)'className'=>'here',当前页码链接按钮的样式,默认样式名为here,所以你可以这样写css样式.here{background:#FF4500;} )<br /> * <br /> * 2、可以使用的方法。<br /> * A、初始化类后,需要调用pagination([$style = '1'][,$output=TRUE])方法产生分页链接<br /> * 关于参数的说明:<br /> * @param $style (默认为 1,可不填写) :获取链接全部组件,即 首页+上一页+数字链接+下一页+尾页<br /> * @param $style == 2 :仅获取数字链接<br /> * @param $style == 3 :仅获取上一页+下一页<br /> * @param $style == 4 :仅获取上一页+数字链接+下一页,(不包含首尾页)<br /> * <br /> * @param $output (默认为TRUE),返回分页链接<br /> * @param $output 为FALSE时,直接输出分页链接<br /> * <br /> * B、getCurrentPage()获取当前页码,经过真伪判断后的,防止用户自行输入错误,比如http://www.xxx.com/test?p=-100;此时通过此方法获取当前页码为1<br /> * <br /> * C、pageAmount()获取总的页码数量<br /> * <br /> * @author 星空幻颖<br /> * @link http://blog.sina.com.cn/yanyinghq<br /> *<br /> */<br />class Page<br />{<br /> private $pageSize; //您的网站每一页显示的列表条数<br /> private $totalRows; //通过数据库查询返回的总的记录条数<br /> private $url; //基准URL<br /> private $pageAmount; //页码的总数<br /> private $currentPage; //当前的页码<br /> private $offset = 4; //页码偏移量<br /> private $pageString = 'p'; //页码在URL中的名字<br /> private $classHere = 'class="here"'; //当前页链接的class样式类名,默认为here<br /> <br /> //初始化当前页码,记录总条数,每页多少条记录<br /> public function __construct($param)<br /> {<br /> $this->pageSize = $param['pageSize'];<br /> $this->totalRows = $param['totalRows'];<br /> $this->url = $param['baseUrl'];<br /> $this->offset = !empty($param['offset'])?$param['offset']:$this->offset;<br /> $this->pageString = !empty($param['pageString'])?$param['pageString']:$this->pageString;<br /> $this->classHere = !empty($param['className'])?$param['className']:$this->classHere;<br /> $this->currentPage = (int)$param['currentPage'];<br /> }<br /> <br /> /**<br /> * 创建分页链接<br /> * <br /> * @param $style 默认为 1 :获取链接全部组件<br /> * @param $style == 2 :仅获取数字链接<br /> * @param $style == 3 :仅获取上一页,下一页<br /> * @param $style == 4 :仅获取上一页、下一页、数字链接,不包含首尾页<br /> * <br /> * @param $output 为TRUE时,返回分页链接<br /> * @param $output 为FALSE时,直接输出分页链接<br /> * <br /> */<br /> public function pagination($style = '1',$output=TRUE)<br /> {<br /> $this->baseUrl();<br /> $this->pageAmount();<br /> $this->currentPage();<br /> <br /> //获取全部组件<br /> if($style == '1')<br /> {<br /> $page = $this->indexPage().$this->prevPage().$this->pageNumber().$this->nextPage().$this->endPage();<br /> }<br /> else if($style == '2')<br /> {<br /> //获取纯数字链接<br /> $page = $this->pageNumber();<br /> }<br /> else if($style == '3')<br /> {<br /> //只获取上一页下一页<br /> $page = $this->prevPage().$this->nextPage();<br /> }<br /> else if($style =='4')<br /> {<br /> //上一页、下一页、数字链接<br /> $page = $this->prevPage().$this->pageNumber().$this->nextPage();<br /> }<br /> <br /> if($output)<br /> {<br /> return $page;<br /> }<br /> else<br /> {<br /> echo $page;<br /> }<br /> }<br /> <br /> /**<br /> * 获取当前页码<br /> * <br /> * @return 当前页码,经过真伪判断的<br /> */<br /> public function getCurrentPage()<br /> {<br /> $this->pageAmount();<br /> $this->currentPage();<br /> return $this->currentPage;<br /> }<br /> <br /> /**<br /> * 计算出所有的页数<br /> * <br /> * 可以类外面直接调用此方法返回页码总数<br /> * <br /> * @return 页码的总数<br /> */<br /> public function pageAmount()<br /> {<br /> $this->pageAmount = ceil( $this->totalRows / $this->pageSize);<br /> if($this->pageAmount <= 0)<br /> {<br /> $this->pageAmount = '1';<br /> }<br /> return $this->pageAmount;<br /> }<br /> <br /> /**<br /> * 判断基准链接是否携带参数<br /> * <br /> * 基准链接为用户提交当前页码链接<br /> * <br /> * 如果携带参数,则在链接之后加&p=<br /> * <br /> * 如果不携带参数,则直接加?p=<br /> */<br /> private function baseUrl()<br /> {<br /> if(preg_match('/\?/', $this->url))<br /> {<br /> $this->url = $this->url.'&'.$this->pageString.'=';<br /> }<br /> else<br /> {<br /> $this->url = $this->url.'?'.$this->pageString.'=';<br /> }<br /> }<br /> <br /> /**<br /> * 验证当前页码的真伪性<br /> * <br /> * 如果当前页码小于1或者没有,则默认当前页码为1<br /> * <br /> * 如果当前页码大于页码总数,则默认当前页码为页码总数<br /> * <br /> */<br /> private function currentPage()<br /> {<br /> if($this->currentPage < 1 || !$this->currentPage)<br /> {<br /> $this->currentPage = 1;<br /> }<br /> else if(($this->currentPage > $this->pageAmount))<br /> {<br /> $this->currentPage = $this->pageAmount;<br /> }<br /> }<br /> <br /> /**<br /> * 首页链接<br /> */<br /> private function indexPage()<br /> {<br /> if($this->currentPage == 1) return;<br /> return '<a href="'.$this->url.'1">首页</a>';<br /> }<br /> <br /> /**<br /> * 尾页链接<br /> */<br /> private function endPage()<br /> {<br /> if($this->currentPage == $this->pageAmount) return;<br /> return '<a href="'.$this->url.$this->pageAmount.'">尾页</a>';<br /> }<br /> <br /> /**<br /> * 上一页<br /> */<br /> private function prevPage()<br /> {<br /> if($this->currentPage == 1) return;<br /> return '<a href="'.$this->url.( $this->currentPage - 1 ).'">上一页</a>';<br /> }<br /> <br /> /**<br /> * 下一页<br /> */<br /> private function nextPage()<br /> {<br /> if($this->currentPage == $this->pageAmount) return;<br /> return '<a href="'.$this->url.( $this->currentPage + 1 ).'">下一页</a>';<br /> }<br /> <br /> /**<br /> * 中间页码的链接<br /> * <br /> */<br /> private function pageNumber()<br /> {<br /> $left ="";<br /> $right = "";<br /> <br /> //如果总记录的条数“大于”所有链接的数量时候<br /> if($this->pageAmount > ($this->offset * 2 + 1))<br /> {<br /> //当前页码距离首页的距离<br /> $leftNum = $this->currentPage - 1;<br /> <br /> //当前页码距离尾页的距离<br /> $rightNum = $this->pageAmount - $this->currentPage;<br /> <br /> //当当前页码距离首页距离不足偏移量offset时候,在右边补齐缺少的小方块<br /> if( $leftNum < $this->offset)<br /> {<br /> //左边的链接<br /> for($i = $leftNum; $i >= 1 ; $i--)<br /> {<br /> $left .= '<a href="'.$this->url.( $this->currentPage - $i ).'">'.( $this->currentPage - $i ).'</a>';<br /> }<br /> <br /> //右边的链接<br /> for($j = 1; $j <= ($this->offset * 2 - $leftNum); $j++)<br /> {<br /> $right .= '<a href="'.$this->url.( $this->currentPage + $j ).'">'.( $this->currentPage + $j ).'</a>';<br /> }<br /> }<br /> else if($rightNum < $this->offset)<br /> {<br /> //左边的链接<br /> for($i = ($this->offset * 2 - $rightNum); $i >= 1 ; $i--)<br /> {<br /> $left .= '<a href="'.$this->url.( $this->currentPage - $i ).'">'.( $this->currentPage - $i ).'</a>';<br /> }<br /> <br /> //右边的链接<br /> for($j = 1; $j <= $rightNum; $j++)<br /> {<br /> $right .= '<a href="'.$this->url.( $this->currentPage + $j ).'">'.( $this->currentPage + $j ).'</a>';<br /> }<br /> }<br /> else<br /> {<br /> //当前链接左边的链接<br /> for($i = $this->offset; $i >= 1 ; $i--)<br /> {<br /> $left .= '<a href="'.$this->url.( $this->currentPage - $i ).'">'.( $this->currentPage - $i ).'</a>'; <br /> }<br /> <br /> //当前链接右边的链接<br /> for($j = 1; $j <= $this->offset; $j++)<br /> {<br /> $right .= '<a href="'.$this->url.( $this->currentPage + $j ).'">'.( $this->currentPage + $j ).'</a>';<br /> }<br /> }<br /> <br /> return $left.'<a href="'.$this->url.$this->currentPage.'" class="here">'.$this->currentPage.'</a>'.$right;<br /> }<br /> else<br /> {<br /> $allLink='';<br /> //当页码总数小于需要显示的链接数量时候,则全部显示出来<br /> for($j = 1; $j <= $this->pageAmount; $j++)<br /> {<br /> $allLink.='<a href="'.$this->url.$j.'" '.($j == $this->currentPage?$this->classHere:'').'>'.$j.'</a>';<br /> }<br /> return $allLink;<br /> }<br /> }<br /> <br />}<br />
------解决思路----------------------
这个类只负责分页条的产生
唯一可能与数据库查询有关的是参数数组 $param['totalRows'] 项
因为待分页的总行数是查询得到的,所以这个查询应在 $param 赋值之前完成
------解决思路----------------------
楼主也够懒的了,我这里有个给你,样式都写好了
<br /><?php<br />class Page { <br />private $total; //数据表中总记录数<br />private $listRows; //每页显示行数<br />private $limit;<br />private $uri; <br />private $pageNum; //页数<br />private $config=array('header'=>"个记录", "prev"=>"上一页", "next"=>"下一页", "first"=>"首 页", "last"=>"尾 页"); <br />private $listNum=8;<br />/* $total 11. * $listRows 12. */ <br />public function __construct($total, $listRows=10, $pa=""){ <br /> $this->total=$total; <br /> $this->listRows=$listRows; <br /> $this->uri=$this->getUri($pa); <br /> $this->page=!empty($_GET["page"]) ? $_GET["page"] : 1; <br /> $this->pageNum=ceil($this->total/$this->listRows); <br /> $this->limit=$this->setLimit(); <br /> } <br />private function setLimit(){ <br /> return "Limit ".($this->page-1)*$this->listRows.", {$this->listRows}"; <br /> } <br />private function getUri($pa){ <br /> $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pa; <br /> $parse=parse_url($url); <br /> if(isset($parse["query"])){ <br /> parse_str($parse['query'],$params); <br /> unset($params["page"]); <br /> $url=$parse['path'].'?'.http_build_query($params); <br /> } <br /> return $url; <br /> } <br />public function __get($args){ <br /> if($args=="limit") <br /> return $this->limit; <br /> else <br /> return null; <br /> } <br />private function start(){ <br /> if($this->total==0) <br /> return 0; <br /> else <br /> return ($this->page-1)*$this->listRows+1; <br /> } <br />private function end(){ <br /> return min($this->page*$this->listRows,$this->total);<br /> } <br />private function first(){ <br /> if($this->page==1) <br /> $html.=''; <br /> else <br /> $html.="<li><a href='{$this->uri}&page=1'>{$this->config["first"]}</a></li>"; <br /> return $html; <br /> } <br />private function prev(){<br /> if($this->page==1)<br /> $html.='';<br /> else <br /> $html.="<li><a href='{$this->uri}&page=".($this->page-1)."'>{$this->config["prev"]}</a></li>"; <br /> return $html;<br /> } <br />private function pageList(){<br /> $linkPage=""; <br /> $inum=floor($this->listNum/2); <br /> for($i=$inum; $i>=1; $i--){ <br /> $page=$this->page-$i;<br /> if($page<1)<br /> continue; <br /> $linkPage.="<li><a href='{$this->uri}&page={$page}'>{$page}</a></li>";<br /> } <br /> $linkPage.="<li><a href='#' class='here'>{$this->page}</a></li>";<br />for($i=1; $i<=$inum; $i++){ <br />$page=$this->page+$i; <br />if($page<=$this->pageNum) <br />$linkPage.="<li><a href='{$this->uri}&page={$page}'>{$page}</a></li>";<br />else <br />break; <br />}<br />return $linkPage;<br />}<br />private function next(){ <br />if($this->page==$this->pageNum)<br />$html.=''; <br />else <br />$html.="<li><a href='{$this->uri}&page=".($this->page+1)."'>{$this->config["next"]}</a></li>"; <br />return $html;<br />}<br />private function last(){ <br />if($this->page==$this->pageNum)<br />$html.='';<br />else<br />$html.="<li><a href='{$this->uri}&page=".($this->pageNum)."'>{$this->config["last"]}</a></li>";<br />return $html;<br />}<br />/*private function goPage(){<br />return ' <input type="text" class="inputall input50" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" value="'.$this->page.'" style="width:25px"> <input type="button" value="GO" style="width:45px;height:30;line-height:30px;border-radius:4px;" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'"> ';<br />}*/<br />private function goPage(){<br />return ' <input type="text" class="inputall input50" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" value="'.$this->page.'" style="width:25px"><input type="button" value="GO" style="width:45px;height:30;line-height:30px;border-radius:4px;" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'"> ';<br />}<br />function fpage($display=array(0,1,2,3,4,5,6,7,8)){<br />$html[0]="共有<b>{$this->total}</b>{$this->config["header"]} ";<br />$html[1]=" 每页显示<b>".($this->end()-$this->start()+1)."</b>条,本页<b>{$this->start()}-{$this->end()}</b>条 "; <br />$html[2]=" <b>{$this->page}/{$this->pageNum}</b>页 ";<br />$html[3]=$this->first();<br />$html[4]=$this->prev();<br />$html[5]=$this->pageList();<br />$html[6]=$this->next();<br />$html[7]=$this->last();<br />$html[8]=$this->goPage();<br />$fpage='';<br />foreach($display as $index){ <br />$fpage.=$html[$index];<br />} <br />return $fpage;<br />} <br />}<br />?><br />
具体调用方法:
$num=15; //每页显示数
$page=new page($total,$num);
$result=$db->query("select * from ".$db->table('article').$where." order by addtime desc {$page->limit}");
循环
fpage(array(3,4,5,6,7,0,1,2,8));?> //php分页类调用,这些数字可以去类文件里面看
-
fpage(array(3,4,5,6,7,8));?>
CSS样式文件
.fenye li{float:left; font-family:Arial, Helvetica, sans-serif; margin-left:6px; display:inline; line-height:30px;}
.fenye a{display:block;height:30px; min-width:30px; text-align:center; font-size:14px; border:1px solid #d6d6d6; float:left; margin-left:3px; padding:3px 5px;line-height:30px;text-decoration:none;color:#666;}
.fenye a:hover{background:#FF4500;border-color:#FF4500; color:#FFF;}
.fenye a.here{background:#FF4500;border-color:#FF4500; color:#FFF;}
.fenye .sel{background:#E5EDF2; color:#333; font-weight:bold; border:1px #C2D5E3 solid; padding:0 12px; border-radius:4px}
下面上效果图:


데이터베이스 스토리지 세션 사용의 주요 장점에는 지속성, 확장 성 및 보안이 포함됩니다. 1. 지속성 : 서버가 다시 시작 되더라도 세션 데이터는 변경되지 않아도됩니다. 2. 확장 성 : 분산 시스템에 적용하여 세션 데이터가 여러 서버간에 동기화되도록합니다. 3. 보안 : 데이터베이스는 민감한 정보를 보호하기 위해 암호화 된 스토리지를 제공합니다.

SessionHandlerInterface 인터페이스를 구현하여 PHP에서 사용자 정의 세션 처리 구현을 수행 할 수 있습니다. 특정 단계에는 다음이 포함됩니다. 1) CustomsessionHandler와 같은 SessionHandlerInterface를 구현하는 클래스 만들기; 2) 인터페이스의 방법 (예 : Open, Close, Read, Write, Despare, GC)의 수명주기 및 세션 데이터의 저장 방법을 정의하기 위해 방법을 다시 작성합니다. 3) PHP 스크립트에 사용자 정의 세션 프로세서를 등록하고 세션을 시작하십시오. 이를 통해 MySQL 및 Redis와 같은 미디어에 데이터를 저장하여 성능, 보안 및 확장 성을 향상시킬 수 있습니다.

SessionId는 웹 애플리케이션에 사용되는 메커니즘으로 사용자 세션 상태를 추적합니다. 1. 사용자와 서버 간의 여러 상호 작용 중에 사용자의 신원 정보를 유지하는 데 사용되는 무작위로 생성 된 문자열입니다. 2. 서버는 쿠키 또는 URL 매개 변수를 통해 클라이언트로 생성하여 보낸다. 3. 생성은 일반적으로 임의의 알고리즘을 사용하여 독창성과 예측 불가능 성을 보장합니다. 4. 실제 개발에서 Redis와 같은 메모리 내 데이터베이스를 사용하여 세션 데이터를 저장하여 성능 및 보안을 향상시킬 수 있습니다.

JWT 또는 쿠키를 사용하여 API와 같은 무국적 환경에서 세션을 관리 할 수 있습니다. 1. JWT는 무국적자 및 확장 성에 적합하지만 빅 데이터와 관련하여 크기가 크다. 2. 쿠키는보다 전통적이고 구현하기 쉽지만 보안을 보장하기 위해주의해서 구성해야합니다.

세션 관련 XSS 공격으로부터 응용 프로그램을 보호하려면 다음 조치가 필요합니다. 1. 세션 쿠키를 보호하기 위해 Httponly 및 Secure 플래그를 설정하십시오. 2. 모든 사용자 입력에 대한 내보내기 코드. 3. 스크립트 소스를 제한하기 위해 컨텐츠 보안 정책 (CSP)을 구현하십시오. 이러한 정책을 통해 세션 관련 XSS 공격을 효과적으로 보호 할 수 있으며 사용자 데이터가 보장 될 수 있습니다.

PHP 세션 성능을 최적화하는 방법 : 1. 지연 세션 시작, 2. 데이터베이스를 사용하여 세션을 저장, 3. 세션 데이터 압축, 4. 세션 수명주기 관리 및 5. 세션 공유 구현. 이러한 전략은 높은 동시성 환경에서 응용의 효율성을 크게 향상시킬 수 있습니다.

THESESSION.GC_MAXLIFETIMESETTINGINSTTINGTINGSTINGTERMINESTERMINESTERSTINGSESSIONDATA, SETINSECONDS.1) IT'SCONFIGUDEDINPHP.INIORVIAINI_SET ()

PHP에서는 Session_Name () 함수를 사용하여 세션 이름을 구성 할 수 있습니다. 특정 단계는 다음과 같습니다. 1. Session_Name () 함수를 사용하여 Session_Name ( "my_session")과 같은 세션 이름을 설정하십시오. 2. 세션 이름을 설정 한 후 세션을 시작하여 세션을 시작하십시오. 세션 이름을 구성하면 여러 응용 프로그램 간의 세션 데이터 충돌을 피하고 보안을 향상시킬 수 있지만 세션 이름의 독창성, 보안, 길이 및 설정 타이밍에주의를 기울일 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
