剛好有用到就記錄下來了
<?php
$indicesServer = array('PHP_SELF',
'argv',
'argc',
'GATEWAY_INTERFACE',
'SERVER_ADDR',
'SERVER_NAME',
'SERVER_SOFTWARE',
'SERVER_PROTOCOL',
'REQUEST_METHOD',
'REQUEST_TIME',
'REQUEST_TIME_FLOAT',
'QUERY_STRING',
'DOCUMENT_ROOT',
'HTTP_ACCEPT',
'HTTP_ACCEPT_CHARSET',
'HTTP_ACCEPT_ENCODING',
'HTTP_ACCEPT_LANGUAGE',
'HTTP_CONNECTION',
'HTTP_HOST',
'HTTP_REFERER',
'HTTP_USER_AGENT',
'HTTP_CONTENT_TYPE',
'CONTENT_LENGTH',
'CONTENT_TYPE',
'HTTPS',
'REMOTE_ADDR',
'REMOTE_HOST',
'REMOTE_PORT',
'REMOTE_USER',
'REDIRECT_REMOTE_USER',
'SCRIPT_FILENAME',
'SERVER_ADMIN',
'SERVER_PORT',
'SERVER_SIGNATURE',
'PATH_TRANSLATED',
'SCRIPT_NAME',
'REQUEST_URI',
'PHP_AUTH_DIGEST',
'PHP_AUTH_USER',
'PHP_AUTH_PW',
'AUTH_TYPE',
'PATH_INFO',
'ORIG_PATH_INFO') ;
echo '<table cellpadding="10">' ;
foreach ($indicesServer as $arg) {
if (isset($_SERVER[$arg])) {
echo '<tr><td>'.$arg.'</td><td>' . $_SERVER[$arg] . '</td></tr>' ;
}
else {
echo '<tr><td>'.$arg.'</td><td>-</td></tr>' ;
}
}
echo '</table>' ;
?>
2015年3月20日 星期五
2015年1月12日 星期一
DNS - ISC BIND 設定檔範例備份
"BIND path"\etc\named.conf:
options {
directory "C:\Windows\System32\dns\zone";
};
key "rndc-key" {
algorithm hmac-md5;
secret "H42yg4KaMNqHcPSFuBRuWg==";
};
controls {
inet 127.0.0.1 port 953 allow { localhost; } keys { "rndc-key"; };
};
zone "dstestdns.com" IN {
type master;
file "mydomain.txt";
allow-transfer { none; };
};
zone "dstestgods.com" IN {
type master;
file "gotods.txt";
allow-transfer { none; };
};
logging
{
channel default-log {
file "C:\Windows\System32\dns\log\BIND_default.log" versions 10 size 200m;
severity info;
print-time yes;
};
channel lamer-log {
file"C:\Windows\System32\dns\log\BIND_lamer.log" versions 3 size 100m;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
channel query-log {
file "C:\Windows\System32\dns\log\BIND_query.log" versions 10 size 1000m;
severity info;
print-time yes;
};
channel security-log {
file"C:\Windows\System32\dns\log\BIND_security.log" versions 3 size 100m;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
category lame-servers { lamer-log; };
category security { security-log;};
category queries { query-log;};
category default { default-log;};
};
options {
directory "C:\Windows\System32\dns\zone";
};
key "rndc-key" {
algorithm hmac-md5;
secret "H42yg4KaMNqHcPSFuBRuWg==";
};
controls {
inet 127.0.0.1 port 953 allow { localhost; } keys { "rndc-key"; };
};
zone "dstestdns.com" IN {
type master;
file "mydomain.txt";
allow-transfer { none; };
};
zone "dstestgods.com" IN {
type master;
file "gotods.txt";
allow-transfer { none; };
};
logging
{
channel default-log {
file "C:\Windows\System32\dns\log\BIND_default.log" versions 10 size 200m;
severity info;
print-time yes;
};
channel lamer-log {
file"C:\Windows\System32\dns\log\BIND_lamer.log" versions 3 size 100m;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
channel query-log {
file "C:\Windows\System32\dns\log\BIND_query.log" versions 10 size 1000m;
severity info;
print-time yes;
};
channel security-log {
file"C:\Windows\System32\dns\log\BIND_security.log" versions 3 size 100m;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
category lame-servers { lamer-log; };
category security { security-log;};
category queries { query-log;};
category default { default-log;};
};
//=======================================================
"BIND path"\zone\mydomain.txt:
$TTL 600
@ IN SOA dstestdns.com. root.dstestdns.com. (
2006102001 ; Serial 僅作為序號而已
28800 ; Refresh slave 伺服器的更新時間
14400 ; Retry 當 slave 主機更新失敗,多久再重新更新一次
720000 ; Expire 重複 retry 多久後就宣告不治....不再更新
86400 ) ; Minimum 可視為 TTL ,尤其是你沒有設定 $TTL 時
@ IN NS dstestdns.com.
www IN A 192.168.11.227 //將www.dstestdsn.com轉到192.168.11.227
dns IN A 192.168.11.166
@ IN A 192.168.11.166
IN MX 10 dns
IN MX 20 dns
IN MX 30 dns
blog IN CNAME www
ftp IN CNAME www
photo IN CNAME www
mail IN CNAME www
//=======================================================
"BIND path"\zone\gotods.txt:
//=======================================================
"BIND path"\zone\gotods.txt:
$TTL 600
@ IN SOA dstestdns.com. root.dstestdns.com. (
2006102001 ; Serial 僅作為序號而已
28800 ; Refresh slave 伺服器的更新時間
14400 ; Retry 當 slave 主機更新失敗,多久再重新更新一次
720000 ; Expire 重複 retry 多久後就宣告不治....不再更新
86400 ) ; Minimum 可視為 TTL ,尤其是你沒有設定 $TTL 時
@ IN NS dstestdns.com.
www IN A 61.31.237.201 //將www.dstestdsn.com轉到61.31.237.201
dns IN A 192.168.11.166
@ IN A 192.168.11.166
IN MX 10 dns
IN MX 20 dns
IN MX 30 dns
blog IN CNAME www
ftp IN CNAME www
photo IN CNAME www
mail IN CNAME www
2014年12月30日 星期二
2014年12月1日 星期一
C 取得當前時間
#include < time.h >
char g_szDateTime[64]; //當前時間
int main()
{
GetCurrentDateTime();
printf(g_szDateTime);
}
//取得當前時間,最後存入char array g_szDateTime
void GetCurrentDateTime()
{
time_t timer;
struct tm * timeinfo;
time(&timer); /* get current time; same as: timer = time(NULL) */
timeinfo = localtime(&timer);
sprintf(g_szDateTime, "%d-%.2d-%.2d %.2d:%.2d:%.2d", 1900 + timeinfo->tm_year, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
}
2014年11月12日 星期三
C 標準函數庫 - time.h mktime() 時間轉秒數
轉自 http://pydoing.blogspot.tw/2010/07/c-mktime.html
time.h 的函數 mktime() 以指向結構 tm 的指標當作參數,回傳此 tm 所表示的日曆時間。
以下程式示範使用 mktime() 的結果
time.h 的函數 mktime() 以指向結構 tm 的指標當作參數,回傳此 tm 所表示的日曆時間。
以下程式示範使用 mktime() 的結果
#include < stdio .h >
#include < time .h >
int main(void)
{
time_t n;
struct tm t1;
t1.tm_sec = 8;
t1.tm_min = 12;
t1.tm_hour = 3;
t1.tm_mday = 22;
t1.tm_mon = 3;
t1.tm_year = 1999-1900;
t1.tm_wday = 1; //可省略
t1.tm_yday = 81; //可省略
t1.tm_isdst = -1; //可省略
n = mktime(&t1);
printf("西元 1999 年 3 月 22 日 3 點 12 分 8 秒共累計了 %u 秒....\n", n);
return 0;
}
/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:cmktime.c
功能:示範 time.h 中函數 mktime() 的使用
作者:張凱慶
時間:西元2010年6月 */
2014年10月28日 星期二
術語「參數」(Parameter) 與「引數」(Argument) 的區別
簡單的說
定義時稱為「參數」(Parameter)
ex:
void myFunction(int i){ // i 為參數
//ToDo...
}
呼叫時稱為「引數」(Argument)
ex:
int i = 10;
myFunction(i); // i 為引數
2014年9月25日 星期四
C++ 字串切割
Arguments AnalyticArguments(int argc, _TCHAR* argv[])
{
//初始化
Arguments args;
args.strAction = "";
args.strVMName = "";
args.strSnapshotName = "";
if(argc >= 3)
{
//歷遍所有參數
for(int i=0 ; i -1)
{
//取得一個參數 ex:/Action=start
string strArgument = argv[i];
//初始化
int iTok = -1;
//=========================判斷參數keyword=========================
if((iTok = strArgument.find("/Action")) > -1)
{
iTok = strArgument.find("=");
int strLength = strArgument.length();
//判斷等號右邊是否有文字
if(iTok > -1)
args.strAction = strArgument.substr(iTok+1, strLength);
}
else if((iTok = strArgument.find("/VMName")) > -1)
{
iTok = strArgument.find("=");
int strLength = strArgument.length();
//判斷等號右邊是否有文字
if(iTok > -1)
args.strVMName = strArgument.substr(iTok+1, strLength);
}
else if((iTok = strArgument.find("/SnapshotName")) > -1)
{
iTok = strArgument.find("=");
int strLength = strArgument.length();
//判斷等號右邊是否有文字
if(iTok > -1)
args.strSnapshotName = strArgument.substr(iTok+1, strLength);
}
//=================================================================
}
}
return args;
}
C++ 讀文字檔
listlisVMNames; char line[100]; fstream fin; //讀檔 fin.open("D:\\Joyce\\TXTs\\BigFarmer.txt",ios::in); while(fin.getline(line,sizeof(line),'\n')) { //將一行文字存入list lisVMNames.push_back(line); }
2014年9月22日 星期一
C# 字串切割
string[] strParameter = args[i].Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
以範例來說,以等號切割字串後,由字串陣列接收
關鍵字可用string,而不僅限於char
2014年9月9日 星期二
C# 列出目錄及子目錄之所有檔案或特定檔案
轉貼自:http://note.tc.edu.tw/446.html
C# 列出目錄及子目錄之所有檔案
用遞迴的方法,列出目錄及子目錄之所有檔案。以下的方法如果目錄或檔名太長會出錯。
C# 列出目錄及子目錄之所有檔案
用遞迴的方法,列出目錄及子目錄之所有檔案。以下的方法如果目錄或檔名太長會出錯。
using System.IO;
using System.Collections;
private void GetFiles(DirectoryInfo di, string searchPattern, ref ArrayList MyFiles)
{
//取得檔案
foreach (FileInfo fi in di.GetFiles(searchPattern))
{
MyFiles.Add(fi.FullName);
}
// Search in subdirctories
foreach (DirectoryInfo d in di.GetDirectories())
{
GetFiles(d, searchPattern, ref MyFiles); //遞迴方法
}
}
VisualStudio 2012 CrystalReport 無法載入crdb_adoplus.dll
轉貼來自:
http://fms-dot-net-notes.blogspot.tw/2011/09/crystalreport2010-crdbadoplusdll.html
在VS2012中使用CrystalReport 會出現一個錯誤
發生"無法載入檔案或組件’file:///C:\Program Files\SAP BusinessObject\Crystal Report for .Net Framework 4.0\Common\SAP BusinessObject Enterprise XI 4.0\win32_x86\donet1\crdb_adoplus.dll’或其相依性的其中之一系統找不到指定的檔案"
奇怪的是,裝好CrystalReport後卻沒有 donet1 這個資料匣!!
crdb_adoplus.dll 這個檔案卻是在 win32_x86 這個資料匣下...... XD
解決方式就是在 C:\Program Files\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86 目錄下新增一個資料匣 dotnet1
再把 crdb_adoplus.dll 複製過去
好........
執行後就會發現又出現了另一個錯誤~~
混合模式組件是針對版本 ‘v2.0.50727′ 的執行階段建置的,無法在沒有其他組態資訊的情況下載入 4.0 執行階段中。
解決方式~
如果是 Web 就開啟 web.config 如果是 WinForm 就開啟 app.conifg
找到
並在 startup 加上 useLegacyV2RuntimeActivationPolicy="true"
http://fms-dot-net-notes.blogspot.tw/2011/09/crystalreport2010-crdbadoplusdll.html
在VS2012中使用CrystalReport 會出現一個錯誤
發生"無法載入檔案或組件’file:///C:\Program Files\SAP BusinessObject\Crystal Report for .Net Framework 4.0\Common\SAP BusinessObject Enterprise XI 4.0\win32_x86\donet1\crdb_adoplus.dll’或其相依性的其中之一系統找不到指定的檔案"
奇怪的是,裝好CrystalReport後卻沒有 donet1 這個資料匣!!
crdb_adoplus.dll 這個檔案卻是在 win32_x86 這個資料匣下...... XD
解決方式就是在 C:\Program Files\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86 目錄下新增一個資料匣 dotnet1
再把 crdb_adoplus.dll 複製過去
好........
執行後就會發現又出現了另一個錯誤~~
混合模式組件是針對版本 ‘v2.0.50727′ 的執行階段建置的,無法在沒有其他組態資訊的情況下載入 4.0 執行階段中。
解決方式~
如果是 Web 就開啟 web.config 如果是 WinForm 就開啟 app.conifg
找到
< startup >
< supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" / >
< /startup >
並在 startup 加上 useLegacyV2RuntimeActivationPolicy="true"
< startup useLegacyV2RuntimeActivationPolicy="true" >
< supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" / >
< /startup >
2014年9月4日 星期四
C++ Command Line 傳入參數方法
#include < iostream >
using namespace std;
int main(int argc,char **argv){
for(int i=0;i < argc ; i++)
cout << "Argument " << i << " is " << argv[i] << endl;
return EXIT_SUCCESS;
}
當透過Dos模式呼叫test.exe時,如果需要傳入參數,可傳入以下指令
test.exe hello! this is a test!
結果如下:
2014年8月28日 星期四
2014年8月24日 星期日
MFC 字串切割
//========================================
//mapKey、*liAtkIP為一組IP+Port
//將port移除只保留IP
char szBuf[100];
char mapKeyIP[100];
const char *del = ":";
strcpy(szBuf, (LPCTSTR)*liAtkIP);
*liAtkIP = strtok( szBuf, del);
strcpy(mapKeyIP, (LPCTSTR)mapKey);
mapKey = strtok( szBuf, del);
//=========================================
2014年8月20日 星期三
JavaScript 兩個select透過js互相對應改變選取項目
function changeSelectIndex(selectID, changeID){
//取得被改變的select元件
var selectDOC = document.getElementById(selectID);
//取得另一個要被改變的select元件
var changeDOC = document.getElementById(changeID);
//取得被改變的select的value (必須給index)
var selectValue = selectDOC.value;
//改變另一個select的選取index
changeDOC.selectedIndex = selectValue;
}
JavaScript 使用<input>呈現與切換圖片
在html的部分宣告方式如下,將input宣告為image的型態,注意input預設滑鼠移入會變成可以點擊的手型
<input type="image" id="status1" src="images/ONbutton.jpg" value='1' onClick="ChangeImage(this.id);" />在 onClick="ChangeImage(this.id);" 傳入的參數為自身元件的ID,然後我們可以在function中透過ID操作該元件
//透過ID找到元件,就可以變更src、value等屬性,也可以利用value判斷要執行什麼動作
function ChangeImage(id){
var str = document.getElementById(id);
if(str.value == 1){
str.src = "../../images/OFFbutton.jpg";
str.value = 2;
}else if(str.value == 2){
str.src = "../../images/ONbutton.jpg";
str.value = 1;
}
}
JavaScript 修改、移除td
有空再整理
HTML:
<tr>
<td><input style="display:none" id="1_fields1" type="text" value="" size="12" /><span id="1_mySapns1">RulesName1</span></td>
<td><input style="display:none" id="1_fields2" type="text" value="" size="10" /><span id="1_mySapns2">59.118.67.104</span></td>
<td><input style="display:none" id="1_fields3" type="text" value="" size="10" /><span id="1_mySapns3">120.58.164.22</span></td>
<td><input style="display:none" id="1_fields4" type="text" value="" size="10" /><span id="1_mySapns4">XP_REG, UNION SELECT, ‘;DROR</span></td>
<td><input style="display:none" id="1_fields5" type="text" value="" size="10" /><span id="1_mySapns5">SYSTEM21, CMD.EXE</span></td>
<td><input style="display:none" id="1_fields6" type="text" value="" size="10" /><span id="1_mySapns6">GET, POST, HEAD, COPY, POLL</span></td>
<td><input style="display:none" id="1_fields7" type="text" value="" size="10" /><span id="1_mySapns7">Directory Traversal Exploits in URL, Directory Traversal Exploits in Query</span></td>
<td><input style="display:none" id="1_fields8" type="text" value="" size="10" /><span id="1_mySapns8">Encoding Abuse Exploits in URL, Encoding Abuse Exploits in Query String, Encoding Abuse Exploits in Post Data</span></td>
<td><input style="display:none" id="1_fields9" type="text" value="" size="10" /><span id="1_mySapns9">Maximum URL Length Allowed</span></td>
<td><input style="display:none" id="1_fields10" type="text" value="" size="10" /><span id="1_mySapns10">High Bit Shellcode Protection in Post Data, High Bit Shellcode Protection in Header</span></td>
<td style="text-align:center">
<span id="1_ModifySpan1" style="display:block"><input type="button" value="修改" onClick="modify('1_ModifySpan', '1_fields', '1_mySapns');"></span>
<span id="1_ModifySpan2" style="display:none"><input type="button" value="確認" onClick="modify('1_ModifySpan', '1_fields', '1_mySapns');"></span>
</td>
<td style="text-align:center"><input type="button" value="刪除" onClick="deleteRow(1);"></td>
</tr>
JavaScript:
<script>
var rowsTotal = 0;
function modify(id, inputsID, spansID){
//取得btn ID
var btn1 = document.getElementById(id + '1');
var btn2 = document.getElementById(id + '2');
if(btn1.style.display == 'block'){
btn1.style.display = 'none';
btn2.style.display = 'block';
for(var i=1 ; i<11 ; i++){
var spans = document.getElementById(spansID + i);
var fields = document.getElementById(inputsID + i);
var strInner = document.getElementById(spansID + i).innerHTML;
spans.innerHTML = '';
fields.value = strInner;
fields.style.display = 'block';
}
}else{
btn1.style.display = 'block';
btn2.style.display = 'none';
for(var i=1 ; i<11 ; i++){
var spans = document.getElementById(spansID + i);
var fields = document.getElementById(inputsID + i);
var strInner = fields.value;
spans.innerHTML = strInner;
fields.value = '';
fields.style.display = 'none';
}
}
} //function end
function deleteRow(RowNum){
//取得目前td數量
var num = document.getElementById("myTable").rows.length;
if(rowsTotal == 0)
rowsTotal = num;
var num2 = rowsTotal - num;
if(RowNum - num2 == 0){
document.getElementById("myTable").deleteRow((RowNum));
}else{
document.getElementById("myTable").deleteRow((RowNum - num2));
}
}
</script>
CSS 位置 position: absolute 、relative、fixed
在 CSS 中的 position 屬性預設為 static 其結果如下圖:
以絕對位置 (position: absolute) 而言,故名思義,它是以父元素的邊界為絕對起點。
例如如果我們設定 top: 50px ,那麼這個元素就會在距離父元素內容區上邊界 50px 的地方呈現,如下圖:
補充:如果父元素的 position 不是 absolute 或 relative 時,那麼元素的位置就會再對應到父元素的上層元素;
如果其親代元素的 position 都沒有設定 absolute 或 relative 時,就以螢幕視窗最大可視範圍邊界為基準。
而以相關位置 (position: relative) 而言,其意義就是相對於原本的位置。例如我們指定 top: 50px 時,
那麼這個元素就會從原本應該呈現的位置往下移動 50px 。如下圖,紅色虛線部份就是未設定 position: relative 前,元素原該應該在的位置:
那麼這個元素就會從原本應該呈現的位置往下移動 50px 。如下圖,紅色虛線部份就是未設定 position: relative 前,元素原該應該在的位置:
而固定位置 (position: fixed) 指的就是固定在螢幕視窗最大可視範圍上,如果不指定位置 (top, left, right, bottom) 時,那元素就會固定在原本的位置;
而指定位置後,就會以螢幕視窗最大可視範圍的邊界為絕對基準點。如果頁面內容超過螢幕視窗最大可視範圍大小時,
那麼不論我們如何捲動頁面,元素都會固定在螢幕視窗最大可視範圍上我們所指定的位置。
而指定位置後,就會以螢幕視窗最大可視範圍的邊界為絕對基準點。如果頁面內容超過螢幕視窗最大可視範圍大小時,
那麼不論我們如何捲動頁面,元素都會固定在螢幕視窗最大可視範圍上我們所指定的位置。
===========================================================================================
以下為position:fixed(不受捲軸影響的絕對位置)範例html程式碼,雖然很醜不過看得懂就好0.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
<style type="text/css">
body{
pdding: 0;
margin: 0;
}
#container {
background-color: #000;
width: 100%;
float: left;
height: 1600px;
position: relative;
}
#test2 {
background-color: #0F0;
position:fixed;
top: 0;
left: 0;
height: 750px;
width: 25%;
}
#test1 {
float: left;
width: 30%;
height: 800px;
background-color: #CCC;
}
</style>
</head>
<body>
<div id="container">
<div id="test1"> id "test1" 的內容放在這裡</div>
<div id="test2"> id "test2" 的內容放在這裡</div>
</div>
</body>
</html>
CSS 子元素選擇器[>]
以下示範子元素選擇器[>]使用方法,子元素選擇器不會影響孫元素
<style type="text/css">
//css one
.div1 > p {
color: #F00;
}
//css two
.div2 p {
color: #F00;
}
</style>
<!-- css one 只會影響div1內的p(子元素),但不會影響span內的p(孫元素) -->
<div class="div1">
<p>test</p>
<span>
<p>test</p>
</span>
</div>
<!-- css two 會影響所有div2內的p -->
<div class="div2">
<p>test</p>
<span>
<p>test</p>
</span>
</div>
訂閱:
文章 (Atom)

