2011-11-05 66 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,請發表評論。 –