2012-01-05 38 views
0

我得到了最後一個工作(simple outbound link tracker - Why isn't this working?),問題是空白和列名大寫。鏈接點擊跟蹤器 - 更多問題

現在我試圖在沒有任何運氣的情況下在現有數據庫中實現它。

下面的代碼(不包括連接mysql數據和混淆表名)

<?php 
$id = $_GET['ID']; 

/** Increase the counter of the URL to which the user is going*/ 
mysql_query("UPDATE `table_name` SET countout = countout + 1 WHERE ID = '$id'") or die(mysql_error()); 

/** Retrieves URL */ 
$result = mysql_query("SELECT * FROM `table_name` WHERE ID = '$id'") or die(mysql_error()); 
$row = mysql_fetch_array($result); 

//redirects them to the link they clicked 
header("Location:" .$info['Url']); 
?> 

而且也很重要,這裏是與數據的數據庫表結構中有一個截圖:

http://cl.ly/323A1i3L0n181P3H0J2B/Image%202012-01-05%20at%201.39.41%20PM.png

當我嘗試

out.php?id=36 

我GE t空白頁

編輯:@RunarJørgensen提供了修復。只是試圖從SQL注入保護它現在

+0

首先,打開錯誤報告。其次,回來並將錯誤消息輸出添加到您的問題。哦,而且你的代碼對** SQL注入**是大量開放的。 – rdlowrey 2012-01-05 21:47:46

+0

變量在php中區分大小寫,因此第二行應該是'$ _GET ['id'];' – 2012-01-05 21:48:51

+0

如果您在'$ result'上執行轉儲會發生什麼? – 2012-01-05 21:50:45

回答

1

你的腳本中有一些錯誤,應該糾正。您應該在開發過程中啓用錯誤,以便查看哪些內容不適用於您的腳本。

首先:變量是區分大小寫的,如果您的鏈接是out.php?id=36那麼您應該使用$_GET['id']而不是$_GET['ID']

其次:據您所知,您正在重定向到未設置的網址。您應該編輯標題標籤,如下所示:header("Location: " . $row['Url']);

您還應該瞭解SQL注入,並瞭解如何處理它們。

+0

Doh。我的錯誤。然後把這部分留下來,謝謝,這兩個問題解決了它,現在要弄清楚如何防止SQL注入,請多多指教:) – elzi 2012-01-05 22:01:26

+0

這是幾種防止SQL注入的方法。這裏有一些你可以閱讀:http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – 2012-01-05 22:02:29

+0

優秀。謝謝您的幫助。 – elzi 2012-01-05 22:06:28