2012-07-27 88 views
2

我對如何接近當前項目有一個理論問題。這是一個使用JS + PHP的相當簡單的匹配測驗。我只是照顧服務器上的業務邏輯(回答檢查,分數更新),以便大致遵循MVC約定。基於會話的服務器端數據設置和檢索

我的當前設置:

  • HTML + JS網頁,允許用戶拖放到答案的問題。在成功刪除後,將問題+答案組合發送到以下地址:
  • 服務器端PHP頁面根據XML文件檢查答案的正確性。我在某個XML客戶端中返回了一些數據,比如true/false和某個問題的嘗試次數。 此外,如果答案正確,我會在服務器上增加一個會話變量以跟蹤用戶的分數。

我的問題是圍繞設置上述會話變量來跟蹤分數的最佳實踐。我明白,一個更加持久的設置是最有可能的最好,在電腦關閉,瀏覽器意外關閉等情況......但嚴格在此基礎上設置 -

  1. 這是用於存儲得分的安全方法最終插入到數據庫中?
  2. 我最終將不得不在遊戲結束時將服務器的分數降低(甚至在遊戲中期)。我應該創建一個簡單的'getter'PHP頁面來降低分數,只需訪問會話變量並將其發送給客戶端?
  3. 目前,用戶實際上有權訪問php服務器端頁面,因爲它位於與實際測驗相同的文件夾中。這可能是一個禁忌 - 但是,從用戶的窺視中隱藏這個僅限服務器的文件(無需使用身份驗證)的常見做法是什麼?

回答

2

這是一個安全的方法來存儲最後插入數據庫的分數嗎?

這是安全的。但是我沒有看到爲什麼你不會更新數據庫中的分數。這樣持久。

我最終將不得不在遊戲結束時將服務器的分數降低(甚至在遊戲結束時)。我應該創建一個簡單的'getter'PHP頁面來降低分數,只需訪問會話變量並將其發送給客戶端?

聽起來像一個計劃。

目前,用戶實際上有權訪問php服務器端頁面,因爲它與實際測驗位於同一個文件夾中。這可能是一個禁忌 - 但是,從用戶的窺視中隱藏這個僅限服務器的文件(無需使用身份驗證)的常見做法是什麼?

只要文件是.php文件並由web服務器解析,用戶只能對文件做請求,就是這樣(如果我理解問題正確的話)。

+0

謝謝!關於最後一個問題 - 如果他們訪問.php頁面,它實際上會吐出XML,就好像我的Javascript頁面已經調用它一樣,並且它正在返回一個答案。它甚至會因爲PHP頁面被調用而增加「嘗試」和變量。對我來說似乎很奇怪...... :) – 2012-07-27 20:43:19

+0

@SpencerAllenGardner我不認爲有一種方法可以阻止用戶直接進入鏈接。 – PeeHaa 2012-07-27 20:53:46