2015-02-10 66 views
-1

我想找到一种方法,我怎么能插入东西到我的MySQL数据库没有刷新页面,也不会造成安全漏洞。PHP - 插入数据库不刷新页面(OOP)

的努力,寻找一些小时后我有这样的:

<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)或类似的方法。

在这里谁能给我一些技巧?

+0

这就是所谓的AJAX。如果在输入字段中输入像'&'这样的字符,您将需要urlencode发送给'insert.php'的值。安全真的取决于'insert.php'中的代码而不是JS/HTML。 – ceejayoz 2015-02-10 16:02:07

+1

问题是:“XmlHttpRequest的安全性是否比'正常'请求低?” 。不,在这两种情况下,请在服务器端进行检查。 – Debflav 2015-02-10 16:02:32

+0

SQL相关代码在哪里? – undefined 2015-02-10 16:03:36

回答

1

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

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

  • 总是默认 :)检查用户输入和不信任人类 - 其过滤,消毒它,信任它被保存在数据库或任何使用它之前才尽千个检查。

这你必须在PHP端做。再次,你可以过滤自己,或者你可以使用库或MVC来帮助你。在我看来,推荐一些东西有点棘手。有时候这些信息会带来很多额外的信息,可能会引发更多的麻烦。

通过试验一个JS库和一个简单的PHP脚本来学习如何工作,然后你可以从那里移动。

+0

谢谢你的回答:) – Andurit 2015-02-11 12:29:40

0

你想要什么叫做'ajax'请求。如果你在这个学期google你会发现一些有趣的例子。

你可能wanne考虑使用一个库,例如jQuery的,这basicly它抽象为一个不错的function

0

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

相关问题