PHP - 无需刷新页面(OOP)即可插入数据库

时间:2015-02-10 15:58:40

标签: javascript php mysql ajax

我试图找到一种方法,如何在不刷新页面的情况下向MySQL数据库插入内容,也不会造成安全漏洞。

经过几个小时的尝试和搜索,我得到了这个:

<form name="form1" action="">
Enter Name <input type="text" name="t1" id="t1"></td> <br>
Enter City <input type="text" name="t2" id="t2"></td> <br>
<input type="button" name="button1" value="Insert to DB" onClick="aa()">
</form>
<div id="d1"></div>

<script type="text/javascript">
function aa()
{
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", "insert.php?name=" + document.getElementById("t1").value + "&city=" + document.getElementById("t2").value, false);
    xmlhttp.send(null);

    document.getElementById("d1").innerHTML=xmlhttp.responseText;;
}
</script>

这是一个简单的表单,它调用JS,并且JS将信息重定向到.php文件,其中是用于将数据库插入数据库的SQL命令。

但我不确定这是不是&#34;安全&#34;而且我更愿意调用一些插入(使用MVC)或类似的方法。

这里有人可以给我一些技巧吗?

3 个答案:

答案 0 :(得分:1)

你的问题是合法的。许多网站今天都在使用这种技术,其中页面与服务器通信而不重新加载整个页面,而不发送完整的头文件并重新加载所有资源。这是一种非常有用的技术,几年前由微软开创,然后被所有浏览器采用和支持,具有更加用户友好和更快的优势。您可以使用自己的代码,就像创建AJAX请求或使用库(如jQuery,DOJO,mootools,YUI等)一样,可以解决浏览器之间的许多差异。在我看来,你应该首先使用一个库,因为他们有例子,一开始会帮助你很多。

AJAX请求的基础结构仍然是HTTP谓词:GET和POST主要用于获取新的信息块或保存一些输入。这个JavaScript部分就像在客户端浏览器中在客户端执行的任何其他Javascript一样,默认情况下使其不安全。安全规则是:

  • 始终检查用户输入并默认不信任人 :) - 过滤它,清理它,在信任它保存到您的数据库之前或在任何地方使用之前进行一千次检查。

这是你必须在PHP方面做的。同样,你可以自己过滤,或者你可以使用可以帮助你的库或MVC。在我看来,推荐一些东西有点棘手。有时那些附带了大量额外信息,可能会带来更多麻烦。

通过试验JS库和简单的PHP脚本来了解这些事情是如何工作的,之后您可以从那里开始。

答案 1 :(得分:0)

您想要的是'ajax'请求。如果你google为该术语,你会发现一些有趣的例子。

您可能会考虑使用一个库,例如jquery,它基本上将它抽象为一个很好的function

答案 2 :(得分:0)

我猜你所要求的是安全性。如前所述,如果您不想重新加载页面,您的选项是AJAX,但如果您的主要问题是安全性,那么您必须实施CSRF(跨站点请求伪造)。要避免使用csrf,您应该检查this link