<?
$route = $_SERVER['HTTP_X_FORWARDED_FOR'];
$ip = split(', ', $route);
$ip = (empty($route))? $_SERVER['REMOTE_ADDR']: $ip[0];
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");
echo "<style type=\"text/css\">*{font:12px Verdana;line-height:20px}</style>";
echo "Your IP Address: <br>";
if(!empty($route)){
echo "$ip (by HTTP_X_FORWARDED_FOR) <br> Route: <br> $route";
}else{
echo "$ip (by REMOTE_ADDR)";
}
?>
2013年12月1日 星期日
2013年10月2日 星期三
2013年10月1日 星期二
在PHP裡面如何做到基本的SQL injection防禦
這裡要介紹的兩個函式分別是mysql_real_escape_string跟addslashes,這兩個函式功能相近,只是mysql_real_escape_string的功能更多,他會處理更多資料,而addslashes只會對「單引號、雙引號、反斜線進行處理」,至於要用哪個就看你自己的選擇,另外在使用這兩個函式之前,要先透過get_magic_quotes_gpc這個函式檢查式有有開啟magic_quotes_gpc模式,如果再開啟magic_quotes_gpc的情況下使用這兩個函式,就會造成重複處理,會出問題
兩個函式的使用都是直接將要處理的變數傳進去就可以了,另外get_magic_quotes_gpc的部份,當返回0代表沒有啟動,返回1代表有啟動。
2013年9月24日 星期二
php 換頁
一般刷新可用以下語法
<?php
//2分鐘後從新整理header("Refresh: 120;");
?>
<?php
//10秒後跳到以下網址header("Refresh: 10; url=http://www.prolong.com.tw");
?>
2013年8月30日 星期五
JavaScript 回到上一頁
在網頁上有時候會看到上一頁或下一頁這樣的按鈕選項,通常有兩種做法,一種是直接透過 PHP 或其它 Server 端程式語言,分配上一頁或下一頁的網址給按鈕,另一種做法是直接用 JavaScript 的 history 來做到(當然 history 也是可以給特定値)。
JavaScript 上一頁語法
範例中的 -1 或 -2 可以根據你的需求而做修改,也可以直接給要前往的頁面網址,要記住的是,如果瀏覽器沒有紀錄該網頁的上一頁,則這樣的寫法可能會無法發生效用。除了返回上一頁之外,JavaScript 也有前往下一頁的方法唷!
JavaScript 前往下一頁語法
使用範例
<a href="javascript:history.go(-1);"></a>
JavaScript 上一頁語法
history.go(-1) // 返回上一頁 history.go(-2) // 返回上兩頁 history.back() // 返回上一頁
範例中的 -1 或 -2 可以根據你的需求而做修改,也可以直接給要前往的頁面網址,要記住的是,如果瀏覽器沒有紀錄該網頁的上一頁,則這樣的寫法可能會無法發生效用。除了返回上一頁之外,JavaScript 也有前往下一頁的方法唷!
JavaScript 前往下一頁語法
window.history.forward() //前往下一頁
使用範例
<a href="javascript:history.go(-1);"></a>
2013年8月22日 星期四
opencart 錯誤與問題
在本機設定opencart的時候會出現的錯誤與解決方式
1.ini_set() [function.ini-set]: A session is active. You cannot change the session module's ini settings at this time. in
解決方式:
將php.ini的參數session.auto_start=0
2.安裝中會發生Warning: mCrypt extension needs to be loaded for OpenCart to work!的錯誤
解決方式:
去修改php.ini的設定值,在windows下的路徑會在C:\windos\ 裡面,找到 ;extension=php_mcrypt.dll 這行把註解拿掉。
接下來把C:\AppServ\php5 裡的 libmcrypt.dll 複製到 C:\WINDOWS\ 下,重新啟動appche就可以了。
目前測試可行
1.ini_set() [function.ini-set]: A session is active. You cannot change the session module's ini settings at this time. in
解決方式:
將php.ini的參數session.auto_start=0
2.安裝中會發生Warning: mCrypt extension needs to be loaded for OpenCart to work!的錯誤
解決方式:
去修改php.ini的設定值,在windows下的路徑會在C:\windos\ 裡面,找到 ;extension=php_mcrypt.dll 這行把註解拿掉。
接下來把C:\AppServ\php5 裡的 libmcrypt.dll 複製到 C:\WINDOWS\ 下,重新啟動appche就可以了。
目前測試可行
2013年8月19日 星期一
[CSS] 定義 a:link / a:visited / a:hover / a:active 的順序
在網站超連結效果使用上常常用到 a:link / a:visited / a:hover / a:active 這幾個css屬性
但是在使用上必須注意到的是這些屬性是有順序的
使用上的順序如下:
/* 未連結 */
a:link
{
color: #000000;
}
/* 已連結過 */
a:visited
{
color: #FF0000;
}
/* 滑鼠移至連結 */
a:hover
{
color: #00FF00;
}
/* 選擇的連結 */
a:active
{
color: #0000FF;
}
a:link
{
color: #000000;
}
/* 已連結過 */
a:visited
{
color: #FF0000;
}
/* 滑鼠移至連結 */
a:hover
{
color: #00FF00;
}
/* 選擇的連結 */
a:active
{
color: #0000FF;
}
a:hover 需放置在 a:link 跟 a:visited 之後,則 a:active 放置在 a:hover 之後。
出處:.Net 蛤什麼?
2013年7月30日 星期二
2013年7月23日 星期二
php 時間限制 開啟與結束
如何將時間限制什麼時候開始與結束
$start_time;
//echo "開始時間".$start_time."<br>";
$end_time;
//echo "結束時間".$end_time."<br>";
date_default_timezone_set('Asia/Taipei'); //時區調整
$time_now = date ("Y-m-d H:i:s");//大寫H表示24小時制 小寫表示12小時
if(strtotime($start_time) - strtotime($time_now ) < 0 && strtotime($end_time) - strtotime($time_now ) > 0){
echo "可正常交易";
}else{
echo "時間未到或是已過期";
}
$start_time;
//echo "開始時間".$start_time."<br>";
$end_time;
//echo "結束時間".$end_time."<br>";
date_default_timezone_set('Asia/Taipei'); //時區調整
$time_now = date ("Y-m-d H:i:s");//大寫H表示24小時制 小寫表示12小時
if(strtotime($start_time) - strtotime($time_now ) < 0 && strtotime($end_time) - strtotime($time_now ) > 0){
echo "可正常交易";
}else{
echo "時間未到或是已過期";
}
觀點:開發很棒的軟體...五個成功秘訣分享(中譯摘要)
Building Great Software...5 Cool Tips For Success! |
Building Great Software...5 Cool Tips For Success!
http://www.loggly.com/blog/2012/03/you-know/
by Brian Schroeder
If you start with "you know what would be cool?", kill the idea.
這聽起來有點刺耳,但是工程師天生就是容易被很酷的技術吸引,例如新的程式語言與工具帶來很棒的特性:Redis, MongoDB, RabbitMQ, Python, Ruby, Clojure, Scala, Node.js 都是很棒的技術,當你用很新奇酷炫的技術做軟體,別人也會覺得你超級酷。但是千萬別忘記:開發軟體是為了做出「有用」的東西而非「酷」。
旨在一切從簡
Aim for simplicity.
當你準備寫下段程式碼,從簡單的開始,別在腦海裡想些複雜而遠超過所需的東西。找出對「你」而言可以最簡單容易達成目標的方法,別去用那些你不會做的。
可以簡單但不能隨便
The simplest solution isn't always best.
有時候用不好的類別繼承方式或耍小手段的演算法,可能是解決問題最輕鬆的方法。但這樣做無疑是在挖洞兼埋地雷,日後發生問題肯定粉身碎骨。要避免差勁的作法,即使看起來很簡單;有時需要用較複雜一點的作法,同時想辦法把複雜度降低。
想要的功能不一定需要
Don't build more than you need.
有些功能看起來很誘人,當你開始想要把每樣東西都加到軟體裡,請再多思考幾次,如果想不出實際的好理由,做出這些功能可能只是想要而非需要。
想遠一點
Think long-term.
乍看之下這點和前面幾項有衝突,如果要以簡單、滿足當前需要為目標,要怎麼把日後的狀況也考慮進來呢?這裡指的是「計畫」要有長遠的眼光,大處著眼,小處著手。
2013年7月18日 星期四
Microsoft windows 8 正版換機器從新安裝
將正版的Windows 8專業版要灌到其他的電腦上時(原本的沒有要開機了),怎麼啟用都不行,
最後選擇了"電話啟用"從XP時代就有的一項功能,但從未使用過正版(誤!)未使用過這樣的啟用
方式,因為時間是半夜,利用0800的服務專線轉輾了好久,終於有真人接聽了,而且是大陸
同胞的客服,不過耗了一晚終於可以再次的使用正版!!
原來要裝不同的機器,不論是什麼版本正式版也好升級版也罷,就是只能先移除原本機器上
的系統(很好奇在我不上網的時候她們怎麼知道我有沒有移除)後才能再次安裝,而且多半是要
打去所謂的電話啟用。
如今終於了解看了十多年的電話啟用是什麼意思了
最後選擇了"電話啟用"從XP時代就有的一項功能,但從
方式,因為時間是半夜,利用0800的服務專線轉輾了好久,終於有真人接聽了,而且是大陸
同胞的客服,不過耗了一晚終於可以再次的使用正版!!
原來要裝不同的機器,不論是什麼版本正式版也好升級版也罷,就是只能先移除原本機器上
的系統(很好奇在我不上網的時候她們怎麼知道我有沒有移除)後才能再次安裝,而且多半是要
打去所謂的電話啟用。
如今終於了解看了十多年的電話啟用是什麼意思了
2013年7月12日 星期五
單圖片按鈕與兩張圖片按鈕切換實例
第一種方式利用兩張圖做切換
HTML代碼:
<a id="theLink"></a>
CSS代碼:
#theLink{
display:block;/*因為標簽a是內鏈元素,所以利用這句話將內鏈元素轉化成塊狀元素,后面的width和height才起作用*/
width:120px;
height:41px;
margin:0 auto;
background:url(../images/normal.gif) no-repeat;
}
#theLink:hover{background:url(../images/press.gif) no-repeat;}
第二種方式利用一張圖有有個圖樣時,調整圖的位置將HTML代碼:
<a id="buttonBlock"></a>
CSS代碼:
#theLink{
display:block;
width:120px;
height:41px;
margin:0 auto;
background:url(../images/buttonBG.gif) no-repeat;
}#theLink:hover{ background:url(../images/buttonBG.gif) no-repeat 0 -41px;}
如何將按鈕(Button)變成圖片按鈕
正常按鈕的Html語法會是這樣寫:
<form id="form1" name="form1" method="post" action="" >
<input type="submit" name="submit_Btn" id="submit_Btn" value="送出" />
<input type="reset" name="reset_Btn" id="reset_Btn" value="取消" />
<input type="reset" name="reset_Btn" id="reset_Btn" value="取消" />
</form>
若是要把正常的按鈕換成圖片按鈕來顯示,可以將寫法改為:
<form id="form1" name="form1" method="post" action="" >
送出按鈕: <input type="image" name="submit_Btn" id="submit_Btn" img src="XXX.jpg" onClick="document.form1.submit()" >
取消按鈕: <input type="image" name="reset_Btn" id="reset_Btn" img src="XXX.jpg" onClick="document.form1.reset()" >
取消按鈕: <input type="image" name="reset_Btn" id="reset_Btn" img src="XXX.jpg" onClick="document.form1.reset()" >
</form>
或是:
<form id="form1" name="form1" method="post" action="" >
送出按鈕: <button type="button" name="submit_Btn" id="submit_Btn" onClick="document.form1.submit()"><img src="XXX.jpg"></button>
取消按鈕: <button type="button" name="reset_Btn" id="reset_Btn" onClick="document.form1.reset()"><img src="XXX.jpg"></button>
</form>
也可以這樣:
<form id="form1" name="form1" method="post" action="" >
送出按鈕: <a href="javascript:document.form1.submit()"><img src="XXX.jpg"></a>
取消按鈕: <a href="javascript:document.form1.reset()"><img src="XXX.jpg"></a>
</form>
或是利用CSS:
<form id="form1" name="form1" method="post" action="" >
送出按鈕: <input type="button" name="submit_Btn" id="submit_Btn" onClick="document.form1.submit()" style="background-image:url(XXX.jpg);width:30px;height:30px;">
取消按鈕: <input type="button" name="reset_Btn" id="reset_Btn" onClick="document.form1.reset()" style="background-image:url(XXX.jpg);width:30px;height:30px;">
</form>
出處:果凍 的 程式備忘簿
2013年7月11日 星期四
PHP 截字、斷字專用 function
<?
//PHP 有支援很方便的 function 可以直接達到此功能.
$string = strip_tags($string);
$string = mb_strimwidth($string, 0, 80, ‘…’, ‘UTF-8′);
//$string 為字串變數,80為長度
?>
//PHP 有支援很方便的 function 可以直接達到此功能.
$string = strip_tags($string);
$string = mb_strimwidth($string, 0, 80, ‘…’, ‘UTF-8′);
//$string 為字串變數,80為長度
?>
2013年7月9日 星期二
訂閱:
文章 (Atom)