2013年12月1日 星期日

找出使用者IP位置

<?
        $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年10月2日 星期三

2013年10月1日 星期二

在PHP裡面如何做到基本的SQL injection防禦

這裡要介紹的兩個函式分別是mysql_real_escape_stringaddslashes,這兩個函式功能相近,只是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 上一頁語法
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就可以了。


目前測試可行

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:hover 需放置在 a:link 跟 a:visited 之後,則 a:active 放置在 a:hover 之後。

出處:.Net 蛤什麼?

2013年7月30日 星期二

windows8 遠端關機

使用遠端是管理者常用的工具之一,至於windows8遠端關機不用想太多,只要ALT + F4就可以做到你想要做的事情,例如 關機。

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 "時間未到或是已過期";
}

觀點:開發很棒的軟體...五個成功秘訣分享(中譯摘要)

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

作者 Brian 是任職 Loggly 網路公司的開發者。 

丟掉「做這個會很酷」的點子
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的服務專線轉輾了好久,終於有真人接聽了,而且是大陸

同胞的客服,不過耗了一晚終於可以再次的使用正版!!

原來要裝不同的機器,不論是什麼版本正式版也好升級版也罷,就是只能先移除原本機器上

的系統(很好奇在我不上網的時候她們怎麼知道我有沒有移除)後才能再次安裝,而且多半是要

打去所謂的電話啟用。


如今終於了解看了十多年的電話啟用是什麼意思了

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="取消"  />
          </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()" >
          </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為長度
?>

2013年7月9日 星期二

Windows 8 新增網路印表機出現 0x00000002

windows 8 連接印表機如出現 0x00000002 錯誤,可由服務中重啟Print Spooler即可。