2013-11-27 171 views
0

我想設置一個變量值,如果表單沒有提交(值來自哪裏)。下面我有:設置變量值如果爲空(PHP)

if (empty($order)) { 
    $order = 'ORDER BY product_name DESC'; 
} 

else { $order=$_POST['order']; } 

這總是將值設置爲'ORDER BY product_name DESC'並忽略窗體。可能只是一個小問題,但我無法挑選出來。

任何想法?

謝謝!

+0

'$ order'顯然總是空的。在嘗試使用它之前,你確定它已被設置嗎?同樣,你的代碼是不安全的,因爲它對sql注入是開放的。 –

+3

可愛[SQL注入攻擊](http://bobby-tables.com)漏洞... –

+1

使用準備好的語句來屏蔽SQL注入的應用程序。 – user3033490

回答

0

使用isset

if (isset($order) && empty($order)) { 
    $order = 'ORDER BY product_name DESC'; 
}else { 
    $order=$_POST['order']; 
} 
0

這是因爲$順序總是空的。所以去找出爲什麼$ order永遠不會被設置或者具有null或空字符串的值。或者使用isset($ order)。

0

嘗試使用isset

if (isset($_POST['order'])) { 
$order = 'ORDER BY product_name DESC'; 
} else { 
$order=$_POST['order']; 
} 
0

變量$order if語句之前未設置。因此empty($order)將始終評估爲true。我認爲你正在尋找更多的下列:

if(empty($_POST['order'])) { 
    $order = 'ORDER BY product_name DESC'; 
} else { 
    $order = $_POST['order']; 
} 
+0

就是這樣!謝謝! – NewToThis

+0

@AlexW沒問題。快樂的編碼哥們! :) – War10ck

0

你檢查$訂單是空的或設置,當你想檢查是否$ _ POST [「秩序」]有一個值。但是,您不應該直接使用提交的值,但至少應驗證它是您期望的值。否則,你會讓你的應用程序打開SQL注入。

$order = false; 

if (empty($_POST['order'])) 
{ 
    // validate if $_POST['order'] has a valid value and set $order 
} 

if (!$order) 
{ 
    // set a default order instead, as there either wasn't a POST-value or an invalid value. 
} 
1
$order = isset($_POST['order']) ? $_POST['order'] : 'ORDER BY product_name DESC';