Php:如果url $ page值不是分页中的整数,则重定向到第1页

时间:2017-11-10 01:03:39

标签: php

所以,我有一个分页项目,我必须检查$ 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'];  
}

2 个答案:

答案 0 :(得分:0)

要检查变量是否为整数,您可以使用is_int()来返回TRUEFALSE 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