簡體   English   中英

登錄表單,選擇名稱選項值

[英]Sign in form, select name option value

我目前設置了三個表。 我希望當有人登錄時,他們在選擇下拉列表中選擇 1 個選項,然后進入該單獨的數據庫。

例如最喜歡的顏色

<select name="color">
        <option value="Red">Red</option>
        <option value="Blue">Blue</option>
        <option value="White">White</option>
        </select> 

所有紅色被選中,進入紅色數據庫,所有藍色進入藍色數據庫等等。

謝謝

您要做的是按特定值分隔數據。 這是很正常的事情,但你試圖做的一切都是錯誤的。 擁有可變表名幾乎從來都不是一個很好的理由——相反,您應該使用列來分隔這些數據。

正確的解決方法:

處理這種情況的更好方法是創建一個表(EG colors ,帶有一列color ,您可以將其分配給選定的變量。

例如:

$query = "INSERT INTO colors (color) VALUES (?)";

其中問號是所討論的變量(在准備好的聲明中)。

這樣,您的所有變量都在一個表中,但仍由用戶選擇的顏色分隔,並且可以按此方式排序。


回答你的問題:

如果您想忽略我上面的多次警告,即您正在以錯誤的方式進行此操作(畢竟您是自己的人,可以為自己做出決定),那么您可以按照您的要求進行操作(但再次,我真的真的真的真的推薦這種方法)。

如果您這樣做,您應該檢查以確保所選的選項與可能的選擇列表匹配:

$possible = ["Red", "Blue", "White"];

if(in_array($_POST['color'], $possible)) {
    $query = "INSERT INTO {$_POST['color']} ...";
}

這樣做將防止通過連接到字符串中的變量進行 SQL 注入。

如果直接插入 users 變量而不先檢查它,用戶可以在客戶端更改下拉列表的實際值,這很容易使您的應用程序處於危險之中。

注意我不建議這樣做 - 它更難維護,而且這不是做這種事情的正確方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM