2011-11-16 85 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 } 
?>