【发布时间】:2013-01-15 02:38:29
【问题描述】:
我有一个简单的 div 用于显示用户帐户信息,例如名字:
<div id="firstNameChange"><?=$firstName?></div>
我有 jquery 代码用来把它变成一个输入元素:
//execute when nameChange DIV is clicked
$("#firstNameChange").click(function(){
//check if there are any existing input elements
if ($(this).children('input').length == 0){
$("#saveFirstName").css("display", "inline");
//variable that contains input HTML to replace
var inputbox = "<input type='text' class='inputbox' name='firstName' value=\""+$(this).text()+"\">";
//insert the HTML intp the div
$(this).html(inputbox);
//automatically give focus to the input box
$("this .inputbox").focus();
//maintain the input when it changes back to a div
$("this .inputbox").blur(function(){
var value = $(this).val();
$("#firstNameChange").text(value);
});
}
});
我创建了一个 PHP 变量来获取输入元素的内容,但它没有填充变量。出于某种原因,没有使用我在上面创建的 JS 输入元素的名称值设置该变量。任何想法为什么会发生这种情况?
if(isset($_POST['submit'])){
$firstName = $_POST['firstName'];
$sql = "UPDATE `user_accounts` SET `first_name`='$firstName' WHERE email='" . $_SESSION['email'] . "' AND user_id=" . $_SESSION['userID'] ;
$_dbConn->update($sql) or die(mysql_error());
Redirect_To('index.php?page=userProfile');
}
【问题讨论】:
-
您对 SQL 注入攻击完全开放,如果您还没有受到攻击,那么您将会被黑客入侵。学习使用 PDO 或类似的准备好的查询来完全避免这个问题。
-
感谢您的意见。您能对此进行更多扩展吗?这与我的问题相关还是只是一个补充建议?
-
我一定会在这方面做足功课。我是一个新手,我遇到的这个问题更像是一个学习挑战,而不是一个项目。有人对如何解决上述问题有任何建议吗?
-
@massimorai,这不仅仅是一个小建议......而且它与安全性有关。由于没有正确地转义查询中的输入,您实际上已经破坏了查询。如果这只是一个家庭作业项目也没关系。您会遇到某些输入(例如 ` \ ` 或 ` " `)的麻烦,更不用说所有自动机器人都会通过测试 SQL 注入攻击来攻击您的代码。我不能强调足够了,如果你没有使用准备好的/参数化的查询,那么无论项目规模如何,你都做错了,应该学习正确的方法。
标签: php javascript jquery mysql