我在HTML創建的窗體(查詢形式)的帖子下面的代碼:表單驗證PHP /避免注射
<?php
if(isset($_POST['submit']))
{
$name = mysql_real_escape_string((string)$_POST['name']);
$surname = mysql_real_escape_string((string)$_POST['surname']);
$email = mysql_real_escape_string((string)$_POST['email']);
$phone = mysql_real_escape_string((string)$_POST['phone']);
$country = mysql_real_escape_string((string)$_POST['country']);
$message = mysql_real_escape_string((string)$_POST['message']);
$sql = "INSERT INTO contact
(name, surname, email, phone, country, message)
VALUES('$name', '$surname', '$email', '$phone', '$country', '$message')";
mysql_select_db($db);
$retval = mysql_query($sql, $conn)or die(mysql_error());
echo 'Thank you '.$name.' '.$surname.'. Your enquiry has been forwarded to our team. <br><br>Please check you email inbox for further information.<br><br>Return to homepage:<br><br><button class="search" onclick="/">Return to homepage</button>';
mysql_close($conn);
}
?>
我很納悶,我怎麼能顯示錯誤和無效時,停止形式發佈或輸入零數據?
在學習如何在網上創建表單時,我也聽說過SQL注入。我受保護了嗎?
非常感謝。
...只要你逃脫所有的**字符串值**你在一個SQL查詢,而不是變量嵌入。 –
@Col。基本上,所有提交的值都是字符串。數值('「123」')和整數('123')之間是有區別的。因此,我發現最好將int列的值轉換爲整數,此外還要轉義字符串輸入。 –
我的意思是對於SQL來說,唯一的字符串值是一個用引號括起來的值 –