[PHP] 如何保護Querystring?

Posted by yoren on 2008年 05月 28日

David Walsh的文章:Tips for Protecting Querystring Keys & Values in PHP,建議了以下五種保護Querystring參數和值的方法:

  1. 整數需指定資料型態(Typecast Value when Expecting Numbers):確保整數不會被當成字串而造成錯誤。
  2. $id = (int) $_GET['i'];
  3. 淨化輸入值(Sanitize Input):建立各種類型資料的處理函式,確保資料傳遞時的一致性與安全性。類似在Dreamweaver裡面的GetSQLValueString函式。
  4. 關閉REGISTER_GLOBALS(Make Sure REGISTER_GLOBALS is Off)。
  5. 不使用有意義的變數名稱(Don’t Make Variable Names Meaningful):David原本的建議如下,但是有一位仁兄在回應中則持反對的意見,認為這並無助於安全性(還是可以從數值的一致性猜出變數的意義)。
  6. <!-- no! -->
    <a href="/profile.php?user_id=<?php echo $user_id; ?>">Your Profile</a>
    <!-- yes! -->
    <a href="/profile.php?q=<?php echo $user_id; ?>">Your Profile</a>
    
  7. 將數值加密(Encrypt Querystring Values):使用md5來加密參數值。
  8. <a href="/profile.php?i=<?php echo md5($user_id); ?>">Click here</a>

最後,請問有人知道「Querystring」的中文怎麼翻譯嗎?

補記:jaceju我的部落格建議Querystring可譯為「網址參數列 (字串) 」,裡面的變數就稱為「網址參數」 (例如 ?abc=123 裡的 abc)

安裝Mobius CMS流程

Posted by antonio on 2008年 05月 28日

安裝Mobius CMS流程 (主機環境必需為PHP 5.0)

  1. 下載取得最新版 CMS zip檔:http://code.google.com/p/mobiuscms/downloads/list 【Fullback.zip】
  2. 將fullback.zip上傳到你想安裝的空間 (以檔名fullback.zip為例)
  3. 進入H-SPHERE 並選擇欲安裝CMS的客戶主機後,點選【FTP帳號】下的【FTP帳號】或下方圖示皆可
  4. 在FTP用戶的【登入】右方,點選【檔案管理(英文版)】
  5. 選取擺放的空間後,點選zip檔,在點選右方籃框中的Uncompress來解壓縮
  6. 可以順便利用FTP開檔案權限 為 可讀 可寫 可執行後,點選change
  7. .htaccess
  8. /cms/resource 資料夾 (若於 H-SPHERE 下,點選資料夾檔左邊小圖示來開權限)
  9. /cms/xml/cms.xml
  10. 到前端的根目錄(http://www.tasteforlife.com.tw/index.php),畫面會自動顯示 install (以index.php驅動)
  11. 6. 執行 install後,點選【執行安裝】

[jQuery] 用Jeditable快速更新MySQL資料

Posted by yoren on 2008年 05月 11日

Jeditable是一個用來達成「就地編輯」(Edit In Place)目的的jQuery plugin,以下簡單介紹這個外掛的用法,以及如何將編輯完成的內容更新到MySQL資料表中。

在本文的範例中,要更新的是如下的資料表:

通常我們會把資料表的資料拉到網頁裡,如下圖,前兩個欄位即是要利用Jeditable來編輯的資料。第一欄(對應資料表category欄)要使用文字框(text input)來編輯,第二欄(對應資料表parent欄)則是用下拉選單(select)編輯。

將要更新的資料以div包住,並加上class和id屬性。請注意id值的數字是用php動態產生的,即是資料表的cId欄位值

日文
語文類

使用這個外掛的語法如下:

$(document).ready(function() {
$(”.category”).editable(”save.php”, {
cancel: ‘取消’,
submit: ‘修改’,
indicator: “儲存中…”,
tooltip: ‘滑鼠點此可編輯…’,
width: “70px”
});

$(”.parent”).editable(”save.php”, {
loadurl : “parents.php”,
type: “select”,
cancel: ‘取消’,
submit : “修改”,
indicator: “儲存中…”,
});
});

在這幾個參數裡面,第一個參數「save.php」即是將更新內容存入資料庫的後端處理程序,其他的參數應該不難理解;比較值得介紹的是「loadurl」這個參數,如果我們希望動態產生下拉選單的內容,就必須使用loadurl來加入外部資料。這個部份請參閱Jeditable官方網頁的「How to use selects?」一節。

完成上述步驟後,就地編輯就會開始作用了。點擊可編輯的文字時,Jeditable會自動產生一張表單,在本例中會依照「type」參數的設定,出現文字框或下拉選單:

按下「修改」送出表單時,Jeditable預設後端(save.php)會接收到兩個POST變數:$_POST['id']和$_POST['value'](變數名稱也是預設的,可以使用id和name兩個參數修改)。$_POST['id']的值等於前述放在div裡的id值,$_POST['value']則是在表單欄位內輸入的值。

後端(save.php)更新資料表的程式碼如下(參考來源:DeviLib.com):

< ?php
$id = $_POST['id'];
$value = $_POST['value'];

//將$_POST['id']用explode函式拆解為$field和$id兩個變數
list($field, $id) = explode('_', $id);

//mysql query
mysql_query("UPDATE tb_category SET $field='$value' WHERE cId='$id'");

//將值傳回前端
echo $value;
?>

完成後的成品網頁請按此測試。有個缺憾是,這個外掛無法直接搭配jQuery Validation一起使用,必須另行客製(有善心人士可以提供嗎?),所以我是用php在後端做資料驗證的。想了解更多資訊,請務必到Jeditable官方網頁一遊。有任何的問題指教,也歡迎與我討論。

RegExr:線上正則表達式測試工具

Posted by yoren on 2008年 05月 08日

2008-05-08_1909

RegExr是由Grant Skinner開發的線上正則表達式(Regular Expressions,RegExp / RegEx)測試工具,它提供了一個簡單的介面讓使用者輸入正則表達式,並即時在可編輯的文字區內標示搜尋結果。在視窗的右側,還提供常用的語法片段與參考範例,透過不斷試誤的過程,讓使用者了解如何運用正則表達式。

RexExr採用Flex 3開發,使用的是ActionScript 3(不十分完美)的正則表達式引擎,所以搜尋的結果未必百分百正確。如果你的電腦(Windows、OSX或Lunix)有安裝AIR 1.0 runtime的話,你也可以使用可安裝的版本

此外,如果寫程式碰到要用到正則表達式卻不知從何寫起時,不妨到Regular Expression Library挖寶,可能一不小心就把答案翻出來了,會節省很多時間喔。

主機圖檔選擇器 - ckfinder

Posted by curtiss on 2008年 05月 07日

適用於 cms 外掛中使用

下載: cms lib - ckfinder

DEMO:

http://mobiuscms.com/cms/lib_store/ckfinder/demo.php

安裝說明:

http://mobiuscms.com/cms/lib_store/ckfinder/readme.txt

 

mobius cms 內建符合 google xml 格式 sitemap

Posted by curtiss on 2008年 05月 05日

Mobius CMS 自2.05版起內建可以提交給 google 的 sitemap,請於 google 網站管理元工具yahoo site explore 提交 sitemap.xml.php

Pages: 1 2 »

Copyright © 2007 Mobius 網站設計. All rights reserved.