2011-11-16 86 views
1

我有2个文件的index.php的download.php未定义可变PHP

的index.php:

<a href='download.php?id=$id'>Get file</a>

的download.php:

<?php if($id){ getting info from db } ?>

,我得到这个错误:

注意:未定义的变量:ID在的download.php上线

愿你能帮我吗?

+1

你应该阅读有关超全局变量:http://php.net/manual/en/language.variables.superglobals.php – str

+0

记得要**接受**帮助你的答案,即使是在老问题上。 –

+2

您将取决于PHP中打开的** ULTRA BAD **'register_globals'选项。慢慢退出你的代码,然后跑到山上。 –

回答

2
<?php 
if(isset($_GET['id'])) 
{ 
    $id = intval($_GET['id']); 
    // getting info from db 
} 
?> 
+1

+1对于这个人比其他人+1,因为如果没有设置$ _GET ['id']',这将不会抛出未定义的索引警告 – megaflop

3

您需要$id = isset($_GET['id']) ? intval($_GET['id']) : 0;在您的下载脚本的顶部。

0

在你的download.php变化if语句

if(!empty($_GET['id'])) { 
    $id = $_GET['id']; 
} 
+0

但是如果它是空的呢?然后你会得到相同的未定义变量通知。 – nickb

+0

当然,你需要做一个else语句或设置$ id = null;或者像这样。 –

-1

尝试if ((isset ($_GET ['id'])) && ($id = intval ($_GET ['id'])))来代替。

+0

'$ id'在这种情况下不会被定义。 – str

+0

问题在于如何停止脚本生成E_NOTICE。上述代码将不会满足该要求的方式?但我确实更新了使用$ _GET的答案。 – GordonM

+2

问题在于帮助他。你的第一个代码会让E_NOTICE消失,但不会让他的脚本工作。 – str

-1
<?php 
    $id = $_GET['ID']; 
    if($id) 
    { 
     getting info from db 
    } 
?> 
+0

我猜这是downvoted,因为,虽然它确实解决未定义的变量问题,但它引入了未定义索引的可能性。 – 2011-11-16 21:43:50

-1

试试这个:

的index.php:

“>获取文件

的download.php:

<?php 
$id = $_GET['id']; 
if($id){ getting info from db } 
?> 
0

的问题是什么是价值的$ download在download.php上?

上的download.php它应该是这样的:

<?php 
$id = $_GET["id"]; 
if($id){ getting info from db } 
?>