2016-06-22 69 views
5

我正在努力實現一些我無法將自己的想法包裹起來的東西。 問題是,當一個特定的用戶登錄時,我在會話中存儲用戶並記錄下他。從PHP限制Javascript?

在告訴我是的之前,我知道這不是最佳做法,但此頁面的目的僅在於內部,並且不可能被黑客攻擊,因爲您只能在內部訪問它。

無論如何,重點是表中有一些可編輯的字段,只能由管理員編輯,但只能由其他人看到。

爲了實現可編輯表,我使用了datatables庫以及一些ajax和JQuery。

我想不出一個方法來限制編輯時登錄用戶不是比其他管理員:

var logged = <?php echo $_SESSION['logged_user'];?>; 
if (logged=='admin') { 
    // action here 
} 

你知道一個更好的方法或更容易理解?非常感謝你!

+1

即使你說這是內部的目的,它仍然是可怕的。打開你的F12,看看你的錯誤;) – GuyT

+2

varvar = _?php echo $ _SESSION ['logged_user'];?>;'應該是'var logged ='<?php echo $ _SESSION ['logged_user'];? >';'首先.. –

+0

許多方法來實現這一點,但這一切都取決於你如何提取這種可編輯的數據。我看你已經提到過使用ajax。如果您通過ajax請求表數據,您可以檢查會話中的「admin」,具體取決於您輸出查詢結果的方式,您可以輸出JSON.Example {「Auth」:{「Admin」:true},「Inputs」: {「InputName1」:「Value1」,「InputName2」:「Value2」,「InputName3」:「Value3」,}}使用輸入構建表查詢的顯示並檢查auth以構建可編輯表單。我還建議客戶端嘗試更新表數據時驗證會話。 – NewToJS

回答

3

一個解決方案是將函數/函數用純php進行檢查來代替,所以「普通」用戶不必加載或者甚至不需要看到這樣做的javascript。

<?php If(isAdmin) { ?> 
    Javascript here 
<?php } ?> 

這也使得它正常用戶只是不檢查元素 - >刪除if語句,然後可以做同樣的事情。

+0

我知道這可能不是最好的解決方案,但它很簡單,非常適合我需要的東西。先生非常感謝您! –

3

使字段只讀或使用標籤標籤,而不是輸入時,用戶不是管理員。
如果僅用於內部目的,並且可以稍後通過JavaScript切換此字段,或者您可以將is_admin true設置爲false,並在document.ready()後設置javascript變量,則可以將輸入字段屬性切換爲只讀真或假。

1

用安全令牌調用你的html作爲url參數。

然後你應該發送這個安全令牌回ajax請求中的服務器,並通過它獲取記錄的用戶。

像這樣的事情

www.example.com?231212sdsldkfjsl2131212lskjlkdsj 


var sec = location.search; 

$http.get('testuser.php?' + sec, function(data){ 
    user = data.user; 
});