我制作了一个 php 函数和一个 jquery 函数,目的是能够从任何 html 表单更新我的任何数据库表。
我所要做的就是将适当的 TABLE 标记添加到表单中,并将适当的 ROW 标记添加到输入中。
它工作正常,但我从安全方面担心它。
请注意,我在 where 子句中使用$query=mysql_real_escape_string(stripslashes($query));
了 and ,"ACCOUNT_ID=".$_SESSION['account']
它应该防止一个用户能够覆盖另一个用户的数据。
但是我徘徊在我可能错过的其他内容或可能出现的其他问题?
数据库.php
<?
class Database {
public function __construct() {
$server = "localhost";
$username = "user";
$pass = "password";
mysqli_connect($server, $username, $pass) or die("cannot connect");
mysqli_select_db("database") or die("cannot select DB");
}
public function Update($query) {
$query=mysql_real_escape_string(stripslashes($query));
$response = mysqli_query($query);
return $response;
}
?>
更新.php
<?
require_once 'database.php';
session_start();
Update($_POST);
function Update($fields) {
$db = new Database();
$table = $fields['TABLE'];
unset($fields['TABLE']);
$qry = array();
foreach ($fields as $key => $value) {
array_push($qry, " " . $key . "='" . $value . "'");
}
$qry = implode(",", $qry);
$update = "UPDATE $table SET";
$clause = "WHERE ID=" . $fields['ID'] . " AND ACCOUNT_ID=".$_SESSION['account'];
$sqlQry = $update . $qry . $clause;
$response = $db->Update($sqlQry);
return $response;
}
?>
user_details.php
<head>
<script src="Scripts/jquery-1.8.3.min.js" type="text/javascript"></script>
</head>
<body>
<form id="myForm" TABLE="USERS">
<input id="name" type="text" ROW="USER_NAME"/>
<input id="age" type="text" ROW="USER_AGE"/>
<input id="email" type="text" ROW="EMAIL"/>
<input class="submit" type="submit" value="update"/>
</form>
<script>
$(function(){
$('.submit').click(function(){
var data = {};
var form = $(this).parent();
data.TABLE = form.attr('TABLE');
var fields=$('form input, form select');
$(fields).each(function(i, e) {
var input = $(e);
var dbKey = input.attr('ROW');
var value = input.attr('value');
if (dbKey && value) {
data[dbKey] = value;
}
$.post('update.php',data);
});
});
</script>
</body>