2012-09-17 65 views
0

我有這個代碼,它允許我傳遞一個變量到另一個頁面,但問題是我似乎無法使用鏈接獲取該變量。我們已經嘗試過,這種方法和工作..你能檢查嗎?從鏈接獲得變量的問題

謝謝..

鏈接:

include('menu.php'); 
$id=$_GET['job_id']; 
$sql="SELECT * FROM attivita WHERE job_id='$id'"; 
$query = mysql_query($sql); 
while ($row = mysql_fetch_array($query)) { 
?> 
<a href="lista_attivita.php?&id=<?php echo $row['att_id'] ?>"><?php echo $row['attivita_da_promuovere'] ?>-<?php echo $row['attivita_tip_merc'] ?>-<?php echo $row['attivita_da_svolgere'] ?>-<?php echo $row['attivita_tip_personale'] ?></a> 
+1

你打開SQL注入。 –

回答

3

您應該使用:

$id = $_GET['id']; 

你也

$sql="SELECT * FROM pianificazione"; 
$query = mysql_query($sql); 
while ($row = mysql_fetch_array($query)) { 
?> 
<a href="lista_attivita.php?&id=<?php echo $row['job_id'] ; ?>"><?php echo $row['job'] ?></a> 
<?php echo '</br><br />'; } 
?> 

的鏈接後,頁面打開SQL注入...要麼解析它作爲一個INT:

$id = (int) $_GET['id']; 

...或使用準備好的語句與PDO(而不是您正在使用的是不再推薦MySQL默認功能)。

+0

謝謝:)它的作品,我幾分鐘接受你的答案:) – blerta

1

你把它當作:

lista_attivita.php?&id=<?php echo $row['job_id'] ; ?> 

然後尋找它:

$id=$_GET['job_id']; 

你應該使用:

$id=$_GET['id']; 
0

在你是網址傳遞到「鏈接後的頁面」,然後在腳本中設置「?id = xxx」作爲參數,然後查找「job_id」。

在第一個腳本中將參數更改爲?job_id =。

0

兩件事。

1)功能,

$id=$_GET['job_id']; 

應該

$id=$_GET['id']; 

,因爲你的鏈接通過變量ID,不JOB_ID:

lista_attivita.php?&**id**=<?php echo $row['job_id'] 

2)安全

絕不,絕對不要將用戶輸入數據直接插入到SQL查詢中。你正在問頭痛或更糟。接收頁面上的$ id應該在進行查找之前進行驗證和轉義。如果你希望一個數字,這樣做在接收頁上:

if (!is_numeric($_GET['id'])) 
{ 
// throw error 
} 

這不是一個壞主意來查詢您的數據庫的有效代碼,把那些在一個數組,然後檢查數組看是否通過值被發現。這可以防止用戶輸入的數據到達您的數據庫。

事情是這樣的:

$q = "SELECT DISTINCT(id) FROM my_table WHERE display=1 ORDER BY id ASC"; 
$res = mysqli_query($dbx,$q); 
while (list($_id) = mysqli_fetch_array) 
{ 
    $arr_valid_id[] = $_id; 
} 

然後,

if (in_array($_GET[id],$arr_valid_id[]) 
{ 
// do stuff 
} else { 
// throw error 
}