预期
这是按钮预期
<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文件。 (这也发生在其他按钮上)。
现在您$p
变量等于true
(这是isset回报)。
变化$p = isset($_GET['p']);
到$p = $_GET['p'];
,你会好
更妙的是:在这种情况下你固定以防止p
被空
编辑
$p = isset($_GET['p']) ? $_GET['p'] : false;
:
Th ere也是你的代码的另一个问题 - 最后的else
声明。当$p
与downloads
不同时总是如此。所以,要么你改变每if
到else 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';
}
好,除非'$ _GET ['p'];'没有定义:'isset() '测试看看它是否已定义并提供默认如果不是更好 – 2015-02-10 22:00:20
如果我不使用isset我得到 注意:未定义的索引:p在G:\ workstation \ epnewest \ data \ localweb \ bi_website \ index中。php 7行 – Cr4ckTh3Skye 2015-02-10 22:03:15
检查我的编辑:''$ 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')
}
}
'$ p值= isset($ _ GET ['P']) '将会是真或假,你希望它是'if(isset($ _ GET ['p'])){$ p = $ _GET ['p']; }' – 2015-02-10 21:58:52
'$ p = isset($ _ GET ['p']);' 你知道isset()返回一个布尔值,然后指定给$ p – 2015-02-10 21:59:17
接下来请在标题中描述什么出错了。 '我的脚本无法正常工作'并没有真正描述出错的地方。 – Drifter 2015-02-10 22:02:12