在我的ajax.php中有:
if(urlvar(2) == 'uploadphoto'){
do... echo '<img... />';
}
但是这个函数只能由一个jquery调用,返回一个特定的div。
但如果我访问URL:[http:// localhost / projectname / ajax / uploadphoto],此页面将返回带有一些错误的函数结果(因为参数是由jquery发送的)
如果在没有jquery的情况下访问文件,我如何防止返回?
的 的 *解决:
在没有jquery方法的情况下无法访问的函数中使用此函数。
function isHttpRequest()
{
if( @$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
return true; //acessed by jquery
}
exit; // or return false -> from access the file without method
}
答案 0 :(得分:0)
当您通过jQuery访问该文件时,您可以编写如下内容:
method: "get"
或method:"post"
(默认情况下,如果没有指定,我认为是GET)
所以,在你的ajax.php的开头 - put:
if(!$_GET){
//[...the ajax.php code, here ...]
}
答案 1 :(得分:0)
我个人在每种形式中创建一个哈希 并且我检查该哈希是否正确,这可以防止人们从其他服务器提交表单,这可能对您的情况有所帮助 http://code.tutsplus.com/tutorials/secure-your-forms-with-form-keys--net-4753 如果哈希是错误的,那么它显然不会来自它应该来自
的形式答案 2 :(得分:0)
修改ajax.php
以检查请求是否为ajax调用。
if(empty($_SERVER['HTTP_X_REQUESTED_WITH'])
|| strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') {
// not an ajax request
} else {
if(urlvar(2) == 'uploadphoto'){
do... echo '<img... />';
}
}
或者只是在ajax.php