2014-01-05 19 views
1

我開發使用HTML5(英特爾XDK)的移動應用程序,並用PHP編碼服務器端。在我的應用程序中,用戶可以將圖像從手機上傳到服務器。但是當我更改服務器端代碼來檢查是用戶用會話登錄時,會話變量返回null。我的代碼如下所示。使用XMLHttpRequest的與PHP會議

var par= new FormData(document.getElementById('form')); 
var obj= new XMLHttpRequest(); 
... 
obj.open('POST', 'url.com/upload.php'); 
obj.send(par); 

而在服務器端代碼,我想檢查會話變量。

if($_SESSION['user_logged_in'] == 1) 

我在SO搜索這個問題,但結果有一些問題。例如,在下面的帖子中,回答說會話ID必須保留在客戶端,但我認爲這不是一個好的解決方案,因爲安全問題。

How to pass php session with XMLHttpRequest

是否有良好的iplementation這個問題? 在此先感謝。

編輯:我是在session_start,如果我在檢查移除記錄它的工作原理。我用Ajax調用的其他頁面會到達會話變量。我對安全性的懷疑是,我的會話ID將在源代碼中看到,這不是安全問題嗎?

+0

你能檢查(使用提琴手,鉻工具等)是否會話cookie被與請求發送?你是否在upload.php的開頭調用了session_start()? – johnnycardy

+1

傳遞會話ID應該不成問題。你認爲瀏覽器如何正常工作? – geedubb

+0

@johnnycardy是的,我打電話會話開始。 – PepeDeLew

回答

0

如果你不保持會話ID的客戶端,你怎麼可以由服務器來識別呢? 您可以使用強生成的會話ID來更改會話ID,這是最好的方法。

並請,驗證是否啓用了Cookie,等等等等 所以,你必須做一些調試。

+0

我檢查我的代碼,會話正在我用ajax帖子調用的頁面上工作。 – PepeDeLew

1

您可以使用App Security API Cordova插件來改進會話令牌/標識上的保護措施, 您可以在此Cordova插件here上找到更多詳細信息。 也可爲你的鏈接爲「在安全存儲器中存儲」和here「從安全存儲器中讀取」代碼段。

順便說一下,英特爾XDK支持App Security API,您可以使用插件管理菜單 - >精選插件 - > App Security API - >點擊添加插件將其添加到您的應用程序中」。