PHP-插入数据库而不刷新页面(OOP)


PHP - Insert to database without refresh page ( OOP )

我正试图找到一种方法,在不刷新页面的情况下,如何在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命令。

但我不确定这是否"安全",而且我更喜欢调用一些将插入(使用MVC)的方法或类似的方法。

有人能给我一些诀窍吗?

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

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

  • 始终检查用户输入,默认情况下不信任人类:)-过滤、消毒,在信任将其保存在数据库中或在任何地方使用之前进行一千次检查

这是你必须在PHP端完成的。同样,你可以过滤自己,也可以使用库或MVC来帮助你。在我看来,推荐一些东西有点棘手。有时,这些会带来很多额外的信息,可能会带来更多的头痛。

通过试用JS库和简单的PHP脚本来了解这些东西是如何工作的,以后你就可以从那里开始了。

您想要的被称为"ajax"请求。如果你在谷歌上搜索这个词,你会发现一些有趣的例子。

您可能会考虑使用一个库,例如jquery,它基本上将它抽象为一个漂亮的函数

我想您所要求的是安全性。如前所述,如果你不想重新加载页面,你的选择是AJAX,但如果你的主要问题是安全性,那么你必须实现CSRF(跨站点请求伪造)。为了避免csrf,您应该检查此链接。