2010-01-16 53 views
0

我已經使用「echo $查詢」來查看它是否獲取價值或不是,但它沒有顯示任何內容在頁面上。什麼是另一種方式來看看它獲得了什麼價值?回聲不顯示值

我使用Aptana Studio 2.0 PDT,但我無法設置斷點。相當新的。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

    $ulName = $_GET['ControlName']; 
    $query = $_GET['SqlQuery']; 
    echo $query; 
    mysql_connect('localhost:3306','pffsddsf','dfsdfsd'); 
    mysql_select_db('publicdb'); 
    $result=mysql_query("select * from electioncategorymaster"); 
?> 
<ul id="<?php echo $ulName; ?>" name="<?php echo $ulName; ?>"> 
<?php while($row=mysql_fetch_array($result)) 
{ ?> 
    <li><?php echo $row[1]; ?></li> 
<?php } ?> 
</ul> 

回答

4

您可能沒有與

var_dump($_GET); 

得到你所期望的參數,所以開始你的腳本來看看你的網頁實際上得到。

儘管我很欣賞你只是在學習,但接受逐字傳遞給數據庫服務器和客戶端瀏覽器的參數是一個安全禁止。

取$ ulName變量 - 我可以在那裏注入我選擇的HTML,那麼爲什麼不把它約束爲字母數字?

if (preg_match('/[^a-z0-9_]/i', $ulName) 
    die("Invalid ControlName specified"); 

至於通過參數接受SQL,我真的不會做,除非你完全信任你的應用程序的用戶....

?SqlQuery=DROP+DATABASE+publicdb 

可怕吧?現在如果你把這兩個缺陷結合起來,那麼怎麼樣?我可以製作一個顯示你的頁面的鏈接,但是嵌入了一個包含該查詢的隱藏字段的表單,沿着這個表單有一個大按鈕,表示「點擊我的滑稽貓視頻」。現在我只需要發送的鏈接在那裏,等待別人做我的惡招投標:)

+0

說這是一個「不 - no」接近沒用的新手......告訴他爲什麼這是一個壞主意。 – 2010-01-16 10:40:39

+0

我以爲我做過,但我擴大了SQL注入警告,以包括一個適當的可怕的例子... – 2010-01-16 10:43:01

+0

謝謝。我會記下這一點。在哪裏寫var_dump()? – RKh 2010-01-16 10:44:05

1

嘗試var_dump($query);(還將報告/顯示空字符串)

如果你的頁面是完全空白走進一看你的Apache(或網絡服務器您所選擇的)errorlogs也可能是有幫助的。

1

試試這個:

var_dump($query); 
exit; 

,看看有什麼會發生。

0

當這個簡單的方法無法顯示任何值時,自然會產生這樣的問題:「回聲工作還是沒有值顯示?

我做了類似前一段時間的東西,而不是使用echo,我用

printf("[%s]", $query); 

所以,我可以看空[]在沒有價值的$_GET

0

第一回:啓用錯誤日誌記錄並且還記錄到日誌文件。

error_reporting(E_ALL); 
ini_set('display_errors','On'); 

你可以,如果你的錯誤日誌通過執行以下工作嘗試:

error_log("This Error should be displayed!", 0); 

看到更多的有關錯誤處理和記錄在php.net網站:http://www.php.net/manual/en/book.errorfunc.php

1

這聽起來無用的,但你也應該複製你正在使用的「示例」URL。

PHP是區分大小寫的(特別是當涉及到數組鍵時),所以我會檢查您調用的URL在使用GET參數時是否使用了正確的大小寫。

+0

一個很好的答案。 www.example.com/script.php?ControlName=foo會起作用。 www.example.com/script.php?controlname=foo不會。 – 2010-01-16 11:53:39