我正在通過簡單的步驟從本書PHP & MYSQL開始練習。它涉及一個HTML表單來更新數據庫中的一行,然後使用各種PHP腳本來檢查HTML代碼的輸入數據並將其轉換爲安全格式。但是,這些代碼不符合本書的說法。我去了發佈商的網站,下載了代碼示例,但沒有喜悅。PHP和安全表單
取而代之的是下面一行的名字,而是我得到了表單,然後在下面的「沒有提交有效的新名字」。然後在下面的表中我想改變的行的當前名稱。當我嘗試輸入數據並將其提交到表單時,它沒有任何區別。它顯示完全相同的頁面。代碼如下。
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ensuring security
</title>
</head>
<body>
<form action="secure.php" method="POST">
<p>New Name : <input type="text" name="name">
<input type="submit"></p></form>
<?php
require('../connect_db.php');
if (!empty($POST['name']) && !is_numeric($_POST['name'])) {
$name = $POST['name'];
$name = mysqli_real_escape_string($dbc, $name);
$name = strip_tags($name);
$q = 'UPDATE towels SET name "' . $name . '" WHERE id= 1';
mysqli_query($dbc, $q);
} else {
echo 'No valid new name submitted';
}
$q = 'SELECT * FROM towels WHERE id = 1 ';
$r = mysqli_query($dbc, $q);
while ($row = mysqli_fetch_array($r, MYSQLI_NUM)) {
echo "<p>Name : $row[1] </p>";
}
mysqli_close($dbc);
我很感激這方面的任何想法。我花了大約3個小時在出版商的網站上,但我仍然在廣場上。
獲取不同的書。一個教導[準備好的陳述](http://php.net/manual/en/pdo.prepared-statements.php)。 (更不用說HTML和PHP的混合了,這會讓東西變得難以理解和難以維護。) –
你正在使用'mysqli'錯誤。您應該準備一個語句,然後使用['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)添加'$ name'值。使用字符串連接是非常危險的,因爲一個簡單的錯誤可能是毀滅性的。如果你從書中學習這種技巧,那麼你的書就被打破了。我在這裏和巴特在一起,拿到一本新書。 – tadman
對於初學者,將所有'$ POST'更改爲'$ _POST' –