预期

预期

问题描述:

这是按钮预期

<a href="index.php?p=contact">contact<a> 

这是php脚本我的脚本不工作:

<?php 
$p = isset($_GET['p']); 

if($p == "artist") 
{ 
    include 'artist.php'; 
} 

if($p == "contact") 
{ 
    include 'contact.php'; 
} 

if($p == "releases") 
{ 
    include 'releases.php'; 
} 

if($p == "downloads") 
{ 
    include 'downloads.php';  
} 

else 
{ 
    include 'home.php'; 
} 
?> 

所以我的脚本应包括contact.php当我打的按钮,但而不是仅包含contact.php它包含所有的php文件。 (这也发生在其他按钮上)。

+3

'$ p值= isset($ _ GET ['P']) '将会是真或假,你希望它是'if(isset($ _ GET ['p'])){$ p = $ _GET ['p']; }' – 2015-02-10 21:58:52

+2

'$ p = isset($ _ GET ['p']);' 你知道isset()返回一个布尔值,然后指定给$ p – 2015-02-10 21:59:17

+1

接下来请在标题中描述什么出错了。 '我的脚本无法正常工作'并没有真正描述出错的地方。 – Drifter 2015-02-10 22:02:12

现在您$p变量等于true(这是isset回报)。

变化$p = isset($_GET['p']);$p = $_GET['p'];,你会好

更妙的是:在这种情况下你固定以防止p被空

编辑

$p = isset($_GET['p']) ? $_GET['p'] : false;

Th ere也是你的代码的另一个问题 - 最后的else声明。当$pdownloads不同时总是如此。所以,要么你改变每ifelse if这样的:

if($p == 'artist') 
{ 
    include 'artist.php'; 
} 

else if($p == 'contact') 
{ 
    include 'contact.php'; 
} 
(...) 
else 
{ 
    include 'home.php'; 
} 

或将其更改为switch声明:

switch($p) 
{ 
case 'artist': 
    include 'artist.php'; 
    break; 
(...) 
default: 
    include 'home.php'; 
} 
+1

好,除非'$ _GET ['p'];'没有定义:'isset() '测试看看它是否已定义并提供默认如果不是更好 – 2015-02-10 22:00:20

+0

如果我不使用isset我得到 注意:未定义的索引:p在G:\ workstation \ epnewest \ data \ localweb \ bi_website \ index中。php 7行 – Cr4ckTh3Skye 2015-02-10 22:03:15

+0

检查我的编辑:''$ p = isset($ _ GET ['p'])? $ _GET ['p']:false'' – 2015-02-10 22:04:15

isset($ _ GET [ 'P'])返回true或false,所以代码将$ p与某些字符串进行比较将始终返回true并在if块内运行代码。

变化$ P = isset($ _ GET [ 'P'])只是$ P = $ _GET [ 'P']

为了使这一(更多)可重复使用的,你应该改变你的脚本。创建一个简单的白名单,检查它的参数是允许的,如果是,则包括$ _GET [ 'P']的直接值:

$allowed = false; 

if (isset($_GET['p'])) 

{ 

switch $_GET['p'] { 

    case 'contact': 
    $allowed = true; 
    break; 

    case 'artist': 
    $allowed = true; 
    break; 

    // and so on for all your IFs 

} 

    if ($allowed === true) { 
    include $_GET['p'].'.php' 
    } 
    else 
    { 
    die('illegal parameter found') 
    } 
}