2017-07-19 28 views
0

對不起,如果標題不夠清楚,下面是解釋: 我有一個名爲「perso」的MYSQL數據庫,其中包含「perso_name」。 perso_name與我選擇的表單中的值相同。下面是HTML代碼:如果選項值在選擇窗體中不可用,顯示錯誤

<form method="post"> 
<select name="selectperso" onchange="showUser(this.value)"> 
    <option value="op1">Option1</option> 
    <option value="op2">Option2</option> 
</select> 
<input type="submit" name="validperso" value="Confirm"> 
</form> 

這裏是PHP代碼:

<?php 
$error = 0; 
if (isset($_POST['validperso'])) { 

    if ($error !== 0) { 

     echo"<script>alert(\"Error\")</script>"; } 

    else { 

     echo "<script>alert(\"Working\")</script>"; 

    } 

} 
?> 

現在,我想要做的是有點棘手。

比方說,我在我的數據庫中有「op3」,但用戶不能擁有它。問題是用戶可以將值「op1」修改爲「op3」,然後他將擁有op3。我想提出一個條件,說:「如果用戶選擇在選擇中可用的」op「值之一,那麼沒關係,否則,錯誤++。」

感謝您的幫助!

+0

您需要檢查一行是否存在 –

+0

op3確實存在tho。 – Eleyox

+0

然後你需要檢查用戶是否可以使用'op3' –

回答

0

好的,我寫了關於您的問題的更多信息。

通常你需要的是whitelisting - 你創建了一些允許用戶使用的東西。

它可以是簡單的數組,如:

$allowed_options = ['op1','op2','op3']; 
if (!in_array($userInput, $allowed_options)) { 
    // input not allowed, do something 
} 

或更復雜的邏輯就像一個查詢到MySQL:

select * from table where option = "USER_INPUT" and user_role = 'SOME_ROLE' 

總之,只有作爲開發者知道如何限制用戶的活動。

如果,例如,您從值陣列創建select

foreach ($values as $v) { 
    echo '<option value="' . $v . '">VALUE</option>"; 
} 

然後使用相同陣列$values檢查,如果用戶輸入是允許的。

與mysql查詢或其他獲取所需內容的方式相同。

+0

哇,這正是我所尋找的,非常感謝!我唯一的問題是,我不能在my_array中使用「$ _POST ['validperso']」,因爲這是一個關鍵,但我可以從這裏工作,我想,謝謝! – Eleyox

0

要實現您的目標更好的方式,您需要將用戶與DB (即,Like用戶名和密碼)中的選項綁定,然後每次驗證用戶和選項。

另一種方式,你可以把一個隱藏的領域與正確的選項和用戶映射。每次您可以將用戶選擇的選項與隱藏字段值進行匹配。這不是安全的方法。

相關問題