2011-11-05 103 views
1

这是我的代码。Php + AJAX,如何隐藏文件名?

getuser.php

... 
    while ($result = @mssql_fetch_assoc($data)) { 
     foreach ($result as $item => $value) { 
      if (is_null($value)) { 
       $result[$item] = 'Empty'; 
      } 
     } 

     foreach ($result as $result => $data) { 
      echo '' . $result . '' . '' . $data . ''; 
     } 
    } 

    echo ""; 
} 

mssql_close($con); 
?> 

index.php

function showUser(str) { 
    if (str=="") { 
     document.getElementById("result").innerHTML=""; 
     return; 
    } 

    if (window.XMLHttpRequest) { 
     xmlhttp=new XMLHttpRequest(); 
    } else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
      document.getElementById("result").innerHTML=xmlhttp.responseText; 
     } 
    }; 

    xmlhttp.open("GET","getchar.php?q="+str,true); xmlhttp.send(); 
} 

这是一个即时搜索,找到一个用户,它只要它的类型得到他们的信息。 基本上我想知道,如果有一种方法可以隐藏AJAX脚本(xml部分)中的PHP页面(getuser.php)的文件名,那么人们不能只访问www.example.com/getuser。 php?q =用户 并获取信息。我需要添加一个& &声明以查看登录的人是否是管理员?所以像

if(isset($_GET)) && isset($_SESSION['user'])) 
{ 
    // do code 
} 
+2

请添加换行符并正确缩进代码。如果你的代码是可读的,这里更多的成员将乐意提供帮助。 –

回答

0

你不能。

浏览器必须知道它将要获取的URL,并且找出浏览器请求的URL(通过查看调试器中的Net选项卡(如果没有其他的话))是微不足道的。

+0

我检查了许多网站的网络标签,但没有显示名称... http://smartlink.co.in/SUPPORT - 这里当我更改类别下拉选项,然后文件名称与当前URL相同 – sqlchild

+0

@ sqlchild - 当我更改分类下拉列表时,该网站发出了两个HTTP请求,这些请求在“网络”选项卡中可见:http://note.io/1sLbzvj – Quentin

0

不,但您只需检测PHP文件中的AJAX请求,以便用户无法导航到浏览器中的该页面。像这样:

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 'xmlhttprequest' == strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])) { 
    // put code here 
} 
+0

幻影downvoter,请发表评论。 –