2011-02-28 57 views
4

爲了以下目的,我必須使用哪些函數來編碼/解碼/轉義/ stripslash數據?運行由PHP與先前從JS接收到的數據,以防止MySQL的一個MySQL查詢時don%27t_use_%23_and_%25_in_URL_params 逃避數據的最佳方式JS-> PHP-> MySQL,反之亦然

  • page.php?data=don't_use_#_and_%_in_URL_params
  • 當PHP腳本接收的參數從JS一樣:

      從JS像調用PHP腳本時
    1. (可以說我需要在數據庫中插入以下字符序列:"``'
    2. 當我需要在MySQL語句中比較包含"``'序列的字段值時
    3. 當我需要從MySQL表中檢索字段值並且該字段包含"``'並且我想在PHP eval()宏中使用它時
    4. 當我必須在AJAX響應中將數據從PHP發送到JS並且它包含"``'字符
    5. 最後我要的eval()以前在迴應JS

    是這樣的圖:

    JS(編碼) - >(解碼)PHP(編碼) - > (解碼?)MySQL(編碼?) - >(解碼)MySQL(編碼) - >(解碼)JS

    如果有人來回答,或者糾正我,如果我在這裏犯任何錯誤的時間和樂趣,感謝在數據庫中預先

  • 回答

    2
    1. encodeURIComponent
    2. $_GET
    3. PDO bound parameters
    4. PDO bound parameters。否則它只是PHP中的一個字符串
    5. 不知道。你真的應該爲每個問題提出一個問題。 eval雖然味道不好。
    6. 選擇一種數據格式並使用適當的編碼。 JSON是常見的。
    7. 唯一一次你應該去eval()附近是JS當你在沒有本地版本的瀏覽器中實現對json的支持時(你可以使用Crockford的json2.js)。所以不要。
    +0

    2。$ _GET永遠不會將我的JS編碼字符串「don%27t_use_%23_and_%25_in_URL_params」轉換爲「don't_use _#_和_%_ in_URL_params」我期望在$ _GET [「data」中得到) – SYNCRo 2011-02-28 10:07:35

    +0

    @Iulian你確定嗎? – 2011-02-28 11:10:26

    +0

    是的。 PHP在填充'$ _GET'時爲URL編碼數據做正確的事情。 – Quentin 2011-02-28 11:50:57

    1
    1. 越獄()
    2. 不需要任何操作。 3-4。數據源在這裏並不重要。有建立查詢的常用規則,我相信你已經知道這一切。如果不是 - 請參閱this complete explanation
    3. 從來沒有做到這一點。這是您應用程序中摩天大樓的一個洞。你沒看到嗎?
    4. json_encode()
    5. eval?你確定?爲什麼不發送數據只有所有的代碼已經存在於JS?
    相關問題