四月 29
在 PHP 上有個 Crypt 函式是用來加密字串的
很多都用的到,例如:LDAP 上的密碼加密
那麼要如何在 .net 上實現這個函式呢
其實已經有人寫好,等我們去用了
A C# implementation of Unix crypt()
把原始檔案下載下來後是個 C# 的程式檔
先在 Visual Studio 中開一個新類別庫專案(C#),把檔案加入
然後就可以建成 dll 檔來使用了
本來有想說改成 VB.Net 的版本,不過轉換過後有些地方怪怪的就放棄了
這邊有打包好的版本,有興趣的可以下載回去研究

四月 27
如果你是使用 KMD 的 OSCommeric 在 PHP5 上執行會有一些小問題
在後台按下 "客戶/訂單" 會出現下面的訊息
Warning: array_merge() [function.array-merge]: Argument #1 is not an array in
/var/www/osc/admin/customers.php on line 763
Warning: array_merge() [function.array-merge]: Argument #2 is not an array in
/var/www/osc/admin/customers.php on line 765
Warning: reset() [function.reset]: Passed variable is not an array or object in
/var/www/osc/admin/includes/classes/object_info.php on line 17
Warning: Variable passed to each() is not an array or object in
/var/www/osc/admin/includes/classes/object_info.php on line 18
要解決此問題要修正2個檔案
在 admin/customers.php 中找到下面程式
line 7XX: $customer_info = array_merge($country, $info, $reviews);
line 7XX: $cInfo_array = array_merge($customers, $customer_info);
修改成
$customer_info = array_merge((array)$country, (array)$info, (array)$reviews);
$cInfo_array = array_merge((array)$customers, (array)$customer_info);
---------------------------------------------------------------------------------------
在 admin/includes/classes/object_info.php 中找到下面程式
class objectInfo {
// class constructor
function objectInfo($object_array) {
reset($object_array);
while (list($key, $value) = each($object_array)) {
$this->$key = tep_db_prepare_input($value);
}
}
}
修改成
class objectInfo {
function objectInfo($object_array) {
$object_array = is_array($object_array) ? $object_array : array($object_array);
reset($object_array);
while(list($key, $value) = each($object_array)) {
$this->$key = tep_db_prepare_input($value);
}
}
}
這就子就解決了
四月 22
做個備忘,說明如何把GridView或其他WebControl輸出成html碼
以下文章轉錄自topcat姍舞之間的極度凝聚
如果我們想要在CodeFile中取得某控制項運作後將會送出的HTML內容可以透過以下的Function來處理。
Public Function GetHTML(ByVal objWebControl As WebControl) As String
Try
'以 StringWriter 取得HTML
Dim w As New System.IO.StringWriter
Dim a As New HtmlTextWriter(w)
objWebControl.RenderControl(a)
Return w.ToString
Catch ex As Exception
Throw
End Try
End Function
Public Function GetHTML(ByVal objHtmlControl As HtmlControl) As String
Try
'以 StringWriter 取得HTML
Dim w As New System.IO.StringWriter
Dim a As New HtmlTextWriter(w)
objHtmlControl.RenderControl(a)
Return w.ToString
Catch ex As Exception
Throw
End Try
End Function
如果想在CodeFile中取得GridView結果的HTML內容,首先會遇到這樣的錯誤訊息:
型別 'GridView' 的控制項 'GridView1' 必須置於有 runat=server 的表單標記之中。
這個問題,可以在您的CodeFile中加入以下這段來解決
Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
'處理'GridView' 的控制項 'GridView' 必須置於有 runat=server 的表單標記之中
End Sub
如果您的GridView沒有設定分頁,應該就可以正常的執行了。但是如果有設定分頁,很快的又遇到了另外一個問題!出現以下的錯誤訊息:
RegisterForEventValidation 只能在 Render(); 期間呼叫
這個問題,可以設定aspx原始檔中<%Page%>的以下兩個設定解決
EnableEventValidation = "false" AutoEventWireup="true"
參考資料:
解決GridView使用RenderControl取得HTML出現的問題
在CodeFile中取得控制項將輸出Clinet端的HTML內容
使用 BasePage 來解決 GridView 執行 RenderControl 產生的錯誤
四月 21
WordPress 預設是不支援放入 iframe 的
要可以插入 iframe 必需先裝一個外掛,外掛的名字是 Embed Iframe
你可以選擇用上傳壓縮檔或是直接用網頁的方式安裝
外掛安裝好,使用方式為在發表的內容中加入下面這行樣版
[iframe 網址 寬 高]
例如本站的即時匯率就是使用 iframe 來完成的
四月 20
最近有個需求,就是固定時間內把某個資料夾內的檔案(不含子資料夾),壓縮成1個自解檔
而這個自解檔於執行時必需自動將檔案解壓到特定目錄,解壓完成後自動執行某個檔案
看起來似乎很複雜,不過事實上流程簡化後只有2個步驟
1.把檔案加入壓縮檔,並且引入解壓縮的參數
2.於 Windows 內的排程執行此指令
關於第2步驟 google 找一下就一堆教學了,在此不再贅述
第一步驟則是比較麻煩一點
首先,先建立一個檔案名為 config.txt 的文字檔,內容如下
Path=C:\Test_Dir
Title=測試自動解壓縮
Overwrite=1
Silent=2
Setup=setup.exe
這個檔為 WinRAR 要自動解壓縮時的參數檔
上面這些參數的意思代表
1.按下自解檔時,不詢問,自動執行解壓縮 (Silent=2)
2.要把檔案解壓縮到 C:\Test_Dir 這個目錄 (Path=C:\Test_Dir)
3.如果檔案存在就蓋過去 (Overwrite=1)
4.解壓縮完後自動執行 setup.exe (Setup=setup.exe)
接下來是使用指令模式來建立 WinRAR 的自解檔
先建立檔名為 run.bat 的批次檔,內容為
del "C:\out.exe"
path=%path%"C:\Program Files\WinRAR\";
winrar a -m2 -sfx -ibck -ep -zC:\config.txt "C:\out.exe" "C:\Target_Dir"
上面的意思表示
1.建立前先把舊的檔案刪除,如果沒刪除會一直累加進去壓縮檔 (del "C:\out.exe")
2.把 Winrar 的路徑加入 Path 以便使用 (path=%path%"C:\Program Files\WinRAR\";)
3.使用建立自動解壓縮檔的模式 (-sfx)
4.壓縮率設為一般 (-m2)
5.去掉檔案的完整路徑 (-ep)
6.於背景中壓縮檔案 (-ibck)
7.把解壓縮時的參數檔引入 (-zC:\config.txt)
8.壓縮檔完成時的存放位置 ("C:\out.exe")
9.要壓縮的檔案位置 ("C:\Target_Dir")
P.s 如果想要壓縮目標要包含子資料夾請加上一個參數 -r 就行了
接下來把 run.bat 放到 Windows 排程中執行就可以了
如果大家對參數檔有興趣,可以使用 WinRAR 的"參數產生器"來玩玩
先隨便找個檔案加入壓縮檔,接下來就看圖說故事



.
最後產生出來的參數會放在註解裡面
