如果在 URL 中未定义,则 $_GET 白页
$_GET white page if undefined in URL
我有一个例子URLhttp://www.example.com/index.php?pagina=some-cool-document&page=5
当 PHP 文件存在并且设置了 $_GET
超全局时,它可以工作。例如:
http://www.example.com/index.php?pagina=some-cool-document&page=5 - 将显示第 5 页
http://www.example.com/index.php?pagina=some-cool-document&page=0 and http://www.example.com/index.php?pagina=some-cool-document&page=1 - 将显示第 1 页
如果只有十页并且页面的值为 11 或更高的值,它将显示第 10 页,因为只有 10 页要显示
以上示例和有关我的 URL 的信息有效。
我遇到的问题是,当页面不是数组键或页面不是数字时,它会显示一个没有任何内容的页面;一些例子 URLs:
http://www.example.com/index.php?pagina=some-cool-document (page is not defined in URL/not an array key) http://www.example.com/index.php?pagina=some-cool-document&page=hello-world(页面无数值)
1: 当页面不是数组键时,我想显示第 1 页的内容而不是白页。
2:我想显示一条消息,例如:
echo 'Sorry, the page ' . $_GET['page'] . 'is not available, please click <a href="http://www.example.com/index.php?pagina=some-cool-document&page=1">here</a> to visit the first page.';
当页面不是数字时,摆脱白页并使其正常工作的最佳方法是什么?
我尝试过的:
$page = isset($_GET['page']) && ($page = intval($_GET['page'])) > 0 ? $page : 1; // I use this option as it does some of the things I want...
$page = (isset($_GET['page']) && trim($_GET['page']) == '1') ? trim($_GET['page']) : '1'; // found here on Whosebug, 100% is not working for me :-(
$page = isset($_GET['page']) && ($page = !empty($_GET['page']) && is_null($_GET[page])) ? $_GET['page'] : 1; // This one also does some of the things I want to do but is not working that well
我也用 if is_numeric($_GET['page']){
做了一些事情,但结果是所有页面都是第 1 页,页面中没有非数字值的白页所以我仍在测试其他选项 is_numeric()
我还尝试了 array_key_exists 的一些选项,例如(同样对我不起作用):
if (!array_key_exists('page', $_GET)) {
$page = $_GET['page'];
} else {
$_GET['page'] = '';
}
我仍在阅读其他 Whosebug 问题和 Google 但我没有找到解决此问题的任何有效方法...
我还能做些什么来让它工作?
编辑
注意:所有变量(在消息中)都在我的代码的其他部分定义,并且在我使用它们之前全部定义。
页面的值应该是没有任何其他字符的数字,只有 [0-9] 应该用作值,否则只显示消息..
下面的代码是我使用的代码,当页面值太高并且任何页面都没有内容时,它不会显示第 1 页。
当页面的值包含其他字符时,第 1 页的内容显示在消息下方,我想去掉该内容,仅在检测到错误时才显示消息
$Last_Page = ceil($totalNodes / $perPage);
$page = isset($_GET['page']) && ($page = intval($_GET['page'])) > 0 ? $page : 1;
if(!is_int($_GET['page']) || $_GET['page'] < 0 || $_GET['page'] > $Last_Page){
echo 'Sorry, the page ' . $_GET['page'] . ' is not available, please click <a href="' . $site_URI . '/index.php?pagina=' . $_GET['pagina'] . '&page=1">here</a> to visit the first page.';
}else{
$page = $_GET['page'];
}
试试这个:
if(!is_int($_GET['page']) || $_GET['page'] < 0 || $_GET['page'] > maxpagesAvailable)
{
echo 'Sorry, the page ' . $_GET['page'] . 'is not available, please click <a href="http://www.example.com/index.php?pagina=some-cool-document&page=1">here</a> to visit the first page.';
}
else{
$page = $_GET['page'];
}
首先,您不应该养成修改 $_GET
和 $_POST
超全局变量的习惯;参考here。但是,为了回答你的问题,我只是 运行 这个代码并且它有效:
$page = isset($_GET['page']) && (intval($_GET['page'])) > 0 && $_GET['page'] <= 1 ? $_GET['page'] : 1;
如果要发送消息,请使用普通的 if 语句而不是三元语句。
我写了下面的代码,一切都运行良好。
当 $_GET['page']
未定义时,它将显示替代内容
当 $_GET['page']
定义为有效值时,它将显示页面内容
当 $_GET['page']
定义为无效值时,它将显示一条错误消息
$Last_Page
定义在代码之前,取值介于1和最后一页的页码之间
$site_URI = 'http://www.example.com';
定义在...
之前
php代码:
<?php
// Get rid of undefined index
class Page_Pagination {
function get($page) {
return isset($_GET['page']) ? $_GET['page'] : null;
}
}
$GET_page = new Page_Pagination;
$page = $GET_page->get('page'); // look in $_GET['page']
// Create array with all available page numbers!
for ($i = 1; $i <= $Last_Page; ++$i) {
$Available_Pages[] = $i;
}
if (in_array($page, $Available_Pages)) { // is the GET value in the array?
// Do something with $page as the value is valid! $page is defined before this line and has a valid value so it can be used here ;)
}elseif($page == null){
// Do something if page variable is NULL
echo 'something here to enjoy the visitors...';
}else{ // value of page variable is NOT a valid value and is not NULL
echo 'Sorry, the page ' . $_GET['page'] . ' is not available, please click <a href="' . $site_URI . '/index.php?pagina=' . $_GET['pagina'] . '&page=1">here</a> to visit the first page.'; // Include a file or echo something or do something else on here...
}
?>
我有一个例子URLhttp://www.example.com/index.php?pagina=some-cool-document&page=5
当 PHP 文件存在并且设置了 $_GET
超全局时,它可以工作。例如:
http://www.example.com/index.php?pagina=some-cool-document&page=5 - 将显示第 5 页
http://www.example.com/index.php?pagina=some-cool-document&page=0 and http://www.example.com/index.php?pagina=some-cool-document&page=1 - 将显示第 1 页
如果只有十页并且页面的值为 11 或更高的值,它将显示第 10 页,因为只有 10 页要显示
以上示例和有关我的 URL 的信息有效。
我遇到的问题是,当页面不是数组键或页面不是数字时,它会显示一个没有任何内容的页面;一些例子 URLs:
http://www.example.com/index.php?pagina=some-cool-document (page is not defined in URL/not an array key) http://www.example.com/index.php?pagina=some-cool-document&page=hello-world(页面无数值)
1: 当页面不是数组键时,我想显示第 1 页的内容而不是白页。
2:我想显示一条消息,例如:
echo 'Sorry, the page ' . $_GET['page'] . 'is not available, please click <a href="http://www.example.com/index.php?pagina=some-cool-document&page=1">here</a> to visit the first page.';
当页面不是数字时,摆脱白页并使其正常工作的最佳方法是什么?
我尝试过的:
$page = isset($_GET['page']) && ($page = intval($_GET['page'])) > 0 ? $page : 1; // I use this option as it does some of the things I want...
$page = (isset($_GET['page']) && trim($_GET['page']) == '1') ? trim($_GET['page']) : '1'; // found here on Whosebug, 100% is not working for me :-(
$page = isset($_GET['page']) && ($page = !empty($_GET['page']) && is_null($_GET[page])) ? $_GET['page'] : 1; // This one also does some of the things I want to do but is not working that well
我也用 if is_numeric($_GET['page']){
做了一些事情,但结果是所有页面都是第 1 页,页面中没有非数字值的白页所以我仍在测试其他选项 is_numeric()
我还尝试了 array_key_exists 的一些选项,例如(同样对我不起作用):
if (!array_key_exists('page', $_GET)) {
$page = $_GET['page'];
} else {
$_GET['page'] = '';
}
我仍在阅读其他 Whosebug 问题和 Google 但我没有找到解决此问题的任何有效方法...
我还能做些什么来让它工作?
编辑
注意:所有变量(在消息中)都在我的代码的其他部分定义,并且在我使用它们之前全部定义。
页面的值应该是没有任何其他字符的数字,只有 [0-9] 应该用作值,否则只显示消息..
下面的代码是我使用的代码,当页面值太高并且任何页面都没有内容时,它不会显示第 1 页。
当页面的值包含其他字符时,第 1 页的内容显示在消息下方,我想去掉该内容,仅在检测到错误时才显示消息
$Last_Page = ceil($totalNodes / $perPage);
$page = isset($_GET['page']) && ($page = intval($_GET['page'])) > 0 ? $page : 1;
if(!is_int($_GET['page']) || $_GET['page'] < 0 || $_GET['page'] > $Last_Page){
echo 'Sorry, the page ' . $_GET['page'] . ' is not available, please click <a href="' . $site_URI . '/index.php?pagina=' . $_GET['pagina'] . '&page=1">here</a> to visit the first page.';
}else{
$page = $_GET['page'];
}
试试这个:
if(!is_int($_GET['page']) || $_GET['page'] < 0 || $_GET['page'] > maxpagesAvailable)
{
echo 'Sorry, the page ' . $_GET['page'] . 'is not available, please click <a href="http://www.example.com/index.php?pagina=some-cool-document&page=1">here</a> to visit the first page.';
}
else{
$page = $_GET['page'];
}
首先,您不应该养成修改 $_GET
和 $_POST
超全局变量的习惯;参考here。但是,为了回答你的问题,我只是 运行 这个代码并且它有效:
$page = isset($_GET['page']) && (intval($_GET['page'])) > 0 && $_GET['page'] <= 1 ? $_GET['page'] : 1;
如果要发送消息,请使用普通的 if 语句而不是三元语句。
我写了下面的代码,一切都运行良好。
当 $_GET['page']
未定义时,它将显示替代内容
当 $_GET['page']
定义为有效值时,它将显示页面内容
当 $_GET['page']
定义为无效值时,它将显示一条错误消息
$Last_Page
定义在代码之前,取值介于1和最后一页的页码之间
$site_URI = 'http://www.example.com';
定义在...
php代码:
<?php
// Get rid of undefined index
class Page_Pagination {
function get($page) {
return isset($_GET['page']) ? $_GET['page'] : null;
}
}
$GET_page = new Page_Pagination;
$page = $GET_page->get('page'); // look in $_GET['page']
// Create array with all available page numbers!
for ($i = 1; $i <= $Last_Page; ++$i) {
$Available_Pages[] = $i;
}
if (in_array($page, $Available_Pages)) { // is the GET value in the array?
// Do something with $page as the value is valid! $page is defined before this line and has a valid value so it can be used here ;)
}elseif($page == null){
// Do something if page variable is NULL
echo 'something here to enjoy the visitors...';
}else{ // value of page variable is NOT a valid value and is not NULL
echo 'Sorry, the page ' . $_GET['page'] . ' is not available, please click <a href="' . $site_URI . '/index.php?pagina=' . $_GET['pagina'] . '&page=1">here</a> to visit the first page.'; // Include a file or echo something or do something else on here...
}
?>