2014-02-28 37 views
0

我想拉入一个URL的参数,并使用它来确定哪些信息显示在页面上,但由于某些原因信息被读取错误。我做的第一件事是检查是否有下面的参数,并将其分配给$页面PHP获取参数拉错值

<?php 
if(isset($_GET["page"])) { 
    $page=$_GET["page"]; 
} 
?> 

然后我检查$页面等于2或3。出于某种原因,如果我回声出$页,我获取参数的正确值,但它显示不正确的信息。

<?php 
if(isset($page) == '2') { ?> 


DISPLAY INFO A 
ECHO $PAGE RETURNS 2 

<?php } elseif(isset($page) == '3') { ?> 

DISPLAY INFO B 
ECHO $PAGE RETURNS 3 

<?php } else { something here } ?> 

出于某种原因,即使$页面返回3,我收到的应该显示在页面2.我拉参数错误信息?A网址如下:

feed.php?page=3 

回答

1

php isset函数返回Boolean。 你应该改变代码:

<?php 
if(isset($page) && $page== '2') { 
?> 
DISPLAY INFO A 
ECHO $PAGE RETURNS 2 
<?php } elseif(isset($page) && $page== '3') { ?> 
DISPLAY INFO B 
ECHO $PAGE RETURNS 3 
<?php } else { something here } ?> 
0

这是错误的:

if(isset($page) == '2') { 

应该

if($page == '2') { 

这似乎只是1页面上工作,因为isset($page)回报true,这truthy被转换为1。该isset()功能只,或检查变量已经被设置为不

0
if($page == '3') 

为什么isset()?您分配时已经这样做了。也许这也是:

if(isset($_GET["page"])) { 
    $page = $_GET["page"]; 
} else { 
    $page = '0'; // or something 
} 
0

isset()回报TRUE/FALSE,但你要比较这对一般的整数。在mysql中的布尔型TRUE相当于整数1,但是其余的测试都会失败。您需要有:

if (isset($_GET['page'])) { 
    if ($_GET['page'] == 1) { ... 1 stuff } 
    else if ($_GET['page'] == 2) { ... 2 stuff } 
}