所以,我有一个分页项目,我必须检查$ Page变量是否(未设置),我的挑战是如果url $ page变量不是整数,我如何重定向到第1页
(例如/my_pagination.php?Page=[six]&txtKeyword =)
而不是(例如,/ my_pagination.php?Page = [6]& txtKeyword =)。
这是我尝试过但我的分页停止转到其他页面并停留在第一页。我需要帮助。
$Page= 1;
if(isset($_GET['Page'])){// Checks if the $Page variable is not integers )
$Page= preg_replace('#[^0-9]#', '', $_GET['Page']);
}`
这是我的原始代码
if(!isset($_GET['Page'])){ // Checks if the $page variable is empty (not set)
$Page = 1; // If it is empty, we're on page 1
} else{
$Page = $_GET['Page'];
}
答案 0 :(得分:0)
要检查变量是否为整数,您可以使用is_int()
来返回TRUE
或FALSE
http://php.net/manual/en/function.is-int.php
请注意,您可能希望验证$_GET
变量中的任何内容,因为它不可信(用户输入)。
$_GET
中的任何内容也总是一个字符串。
=> is_int() cannot check $_GET in PHP?
出于这个原因,我会改用is_numeric()
。
=> http://php.net/manual/en/function.is-numeric.php
如果你必须有一个整数,你可以使用两种函数的组合。
正如Benjamin Close在评论中提到的,您可以使用header()
函数进行重定向。 http://php.net/manual/en/function.header.php
<?php
if( isset( $_GET['page'] ) && is_numeric( $_GET['page'] ) ) {
$page = (int) $_GET['page'];
//build url based on int based page number
$url = 'http://yourdomain.tld/page.php?numbers=' . $page;
} else {
$page = $_GET['page'];
//build url based on text based page number
$url = 'http://yourdomain.tld/page.php?letters=' . $page;
}
header('Location: '. $url );
?>
答案 1 :(得分:0)
你的网址看起来不像分页;通常你有一个页面,然后你有办法分页页面的内容。你不应该重定向到一个页面;您应该计算内容并显示与页面关联的内容部分。页面通常不是真实的页面;它们是单个长页面内容的一部分。
page = foo.php
/foo.php?page=$page
of
/foo.php/PAGE (ie /foo.php/1 /foo.php/2 etc)
您的网页分页方式是您设计的一部分。一种技术是使用标记。假设您有一长页文字
<page>
标记来描述页面被破坏的位置。
$pages = explode('<page>',$pageContent);
$pages now have your pages in an array from 0 -> $page-1
So for Example you could do:
// url = /foo.php?page=3
// You have to handle the case of /foo.php where no page is specified
$page = intval($_GET['page']); // intval will return 0 if page is empty
if ($page < 1)
$page = 1;
$thisContent = $pages[$page-1];
// display $thisContent