[PHP] 善用 ignore_user_abort() 函式

話說最近在為了上傳圖片經過縮圖的時間來煩惱,只不過我在想,為甚麼我上傳圖片還要等待縮圖時間才可以,然而無名小站,只需要上傳時間,縮圖是在它機器背景執行,後來發現一個函式非常好用,那就是

ignore_user_abort(true);

http://tw2.php.net/manual/tw/function.ignore-user-abort.php 無名在上傳圖片的php檔案,肯定有加上這個函式,他的好處是使用者如果關掉瀏覽器,但是php還是會繼續執行,也就是無名可以把檔案上傳之後,重新導向到使用者的相簿,程式可以如下

ignore_user_abort(true);
set_time_limit(0);
for($i = 1; $i < 6; $i++){
if($_FILES['userfile' . $i]['size']){
/*
上傳圖檔寫在這裡
*/
}
}
//上傳好導向相簿
if($_POST['mode'] == 'add'){
header("Location:index.php");
}
/*
然後這裡在進行縮圖,他就會在背景中執行
*/
if($_POST['mode'] == 'add'){
for($i = 1; $i < 6; $i++){
convert_sh($upload_floder,$file_name[$i],$small_size[$i]);
}
}
?>
其實 ignore\_user\_abort(true); 根本就是變相的 unix 底下的 crontab ,還蠻好用的,好處很多,不過用的地方要注意就是了,並不是每個php檔案都需要用這個函式。
php 

如何擋掉 google, 大陸百度 搜尋引擎

發現google實在強了,他不只可以讓你網站曝光,如果你上傳一些重要的檔案放在網路上,只要沒有經過帳號密碼的機制,讓google知道你的絕對路徑,那個檔案就完蛋了,因為google還會暫存到他的機器,順便還幫你轉成 html ,夠屌了吧,所以我認為唯一最終解決辦法,就是自己寫一隻下載檔案的function,然後下載檔案都要透過該程式然後在header出來,這樣才不會被google弄到檔案,囧。 當然要如何擋掉搜尋引擎,方法如下,在自己網站底下新增 .htaccess #擋掉百度 SetEnvIfNoCase User-Agent “^Baidu” bad_bot SetEnvIfNoCase User-Agent “^sogou” bad_bot SetEnvIfNoCase User-Agent “^Bloghoo” bad_bot SetEnvIfNoCase User-Agent “^Scooter” bad_bot Deny from env=bad_bot #擋掉google SetEnvIf User-Agent “^Googlebot” google Deny from env=google 其實還有另外一種方法,那就是用 robots.txt 如何攔截 Googlebot?,這個方法也不錯 擋掉的結果如下:

66.249.70.107 - - [20/Jun/2007:15:30:11 +0800] "GET /store/market_list.php??bid=&year=2009&month=10 HTTP/1.1" 403 999 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

61.135.162.53 - - [20/Jun/2007:14:41:00 +0800] "GET /web/news_show.php?bid=30&newsid=189&list= HTTP/1.1" 403 1003 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)"
看到 403 就對了,不過會看到比較多百度的 可以參考底下這篇討論,相當不錯

[求助]Bot 如果要測試的話,可以利用 fx 的 user.agent 功能,這招超級好用的喔,方法如下 1.在FX網址列輸入about:config 2.然後新增general.useragent.override 選 string『字串』 3.然後看要輸入什麼值,例如 Googlebot/2.1 (+http://www.googlebot.com/bot.html) 都可以 然後就可以測試了 參考這篇:用 htaccess 擋 spam

[生活] 最近在量血壓~

恩 ~ 最近無聊拿我爸爸在量血壓的血壓計來量,我發現我的血壓好像都蠻高的,其實說實在的,我自己也不知道為什麼會這樣,哈哈不過我覺得還好,自己的身體感覺起來都還ok,沒有什麼症狀,不過我爸媽還擔心我高血壓,小時候還說我糖尿病,哈哈真是好笑,不過小時候還因為爸爸一直說我太胖,所以我國中減肥,會不會是因為減肥造成我身高只有 168,撲撲,好像也不是減肥問題,因為我國中畢業才145,囧很矮吧然後現在也才 168 哈哈 矮人一個,不過我自己開心最重要,反正我也不在乎別人講什麼。 哈哈血壓還沒講完呢,話說我最近測量自己血壓,都是在 130-140之間,我自己看到都嚇到,然後吃飽飯測量,竟然看到149,哈哈,很屌吧,在我這個年紀,沒人可以跟我一樣吧不過話說回來,我的飲食很正常說,自從我退伍之後在家裡,早上起來就是1科鳳梨然後一科奇異果,然後中午大概就是我媽媽煮的飯,然後我媽媽就會去上班,我下午大概都會去運動,爬山吧~,然後晚上回來,大概自己去炒個高麗菜,或者是紅蘿蔔炒蛋,這樣應該很健康,睡覺前還弄一杯葡萄牛奶,或者是蘋果牛那喝,奇怪這樣也會血壓高喔~我哥哥不運動喝飲料吃炸的吃滷的樣樣來,結果他血壓 110-120中間,撲撲果然人事間有很多奇妙的事情。

[生活] 第一次看牙醫~ 噗噗

哈哈 出生到現在 24歲了~ 第一次看牙醫~ 囧 而且還是很奇怪的問題 不知道哪一天早上起來 刷牙,然後覺得牙齒酸酸的 想說是不是蛀牙了,人生第一次蛀牙阿~ 哈哈~ 人生還真多第一次,嘿嘿 真開心 不過這還沒什麼,去到牙醫診所,牙醫看完之後,問我說 小朋友 你來亂的喔 你牙齒這麼棒,看啥牙醫,囧,後來醫生看不出來我哪裡有病 所以請一位漂亮的護士幫我照X光,哈哈 不過我還真不好意思,因為那位護士要拿手伸進去我的嘴巴~~ 囧 真對不起那位護士~ 哈哈 後來x光照完了,醫生看了一下~ 臉又囧了~ 因為照出來正常 噗噗~ 我看醫生快哭了~ 後來醫生才免強找到一顆牙,幫我補一下,順便幫我洗牙齒,哈哈 真是辛苦醫生了~

[PHP] 如何更正系統時間 timezone_set

相信很多虛擬主機都會碰到時間的問題,比如說少 8 小時,或者是多 8 小時,現在只要在執行 php 的前端加上

date_default_timezone_set("Asia/Taipei");

這樣就會更新到正確時間了,這樣在使用 mktime() 就沒啥問題了

或者去系統改 php.ini 檔案

;Defines the default timezone used by the date functions
date.timezone = Asia/Taipei

Linux 系統校正時間,可以執行底下 Script:

# check if link file
[ -L /etc/localtime ] && unlink /etc/localtime
# update time zone
ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
aptitude -y install ntpdate
ntpdate time.stdtime.gov.tw
# write time to clock.
hwclock -w

國史館台灣文獻館~發生大事?替代役事件

昨天在公司裡面,突然接到 國史館台灣文獻館 打給我電話,問我是不是去投書廖秘書~ 囧~ 看來以後只要有關於廖秘書事情,好像都會牽拖到我,不過這也沒辦法,在我還在當替代役的時候就跟廖秘書衝突N次,所以大家聯想到我也是很正常,不過總覺得部只有我會這樣做,哈哈 就像有一次鬧到立委打電話萊關切,好像聽說有2-3位立委打電話來,但是不是我找立委吧,雖然其中一位立委是我認識的,但是另外不是我認識的,這表示還有人不喜歡廖秘書,不過整件事情感覺苗頭都是對上我,大家一致認為是我找的~噗噗。 這次聽說是 台北國史館 來函給 國史館台灣文獻館~ 我的這篇文章 替代役不平等待遇 (續) 替代役長官 (廖秘書) 好像造成整理組的轟動,因為學弟在 google 打入 “文獻館替代役”,就搜尋到了,哈哈~ 一堆學弟開始問了,不過告知一下學弟們,請他們自己體會吧,每個人感受不同的 這次台北國史館來函,不知道是因為什麼事情,也沒有人告訴我,只是有館內人員打給我,問我是否有去投書,想也知道我才不會那麼無聊,有必要這樣嗎?我已經退伍了,哈哈,那邊的事情就讓他過去吧,哈哈我也問過了我替代役好友,他也說他沒有投,我跟他平常忙得要命,我早上8點半出門,到晚上7點半才到家,最好是我還有時間去搞這個,要弄也是在我替代役期間就投了,哈哈。 總歸一句話,廖秘書惹上太多人了,至少我敢保證在我當替代役期間,我沒有從其他19位替代役朋友口中,聽到任何一句稱讚過廖秘書的,聽到抱怨多到無比,我想廖秘書自己也該好好檢討吧~,不過我看他的個性,我想不可能改的,哈哈,那可能未來會有更多人投書吧。

[PHP] 日期函數『搭配javascript』

剛剛發現一個好玩的函數,用在購物車的時候,可以選擇發表團購日期,跟結束日期,下面我是設定發起日後14天之內要下架,還不錯用 大家參考看看吧,其實做出很多功能,大家修改函數就可以了 function jmp2_date_ex($str,$str1,$str2,$sy,$ey){ global $$str; $$str=str_replace("-","/",$$str); $nextWeek = time() + (14 * 24 * 60 * 60); $sy=date(“Ymd”); $ey=date(“Ymd”,$nextWeek); echo “”; ?> <? } [/code]

[PHP] header下載檔案 搭配資料庫

剛剛在 ECstart 看到有人詢問 header檔案下載錯誤 發現網站義工有回答到這個function,所以就紀錄下來了

function dl_file($file){

   //First, see if the file exists
   if (!is_file($file)) { die("404 File not found!"); }

   //Gather relevent info about file
   $len = filesize($file);
   $filename = basename($file);
   $file_extension = strtolower(substr(strrchr($filename,"."),1));

   //This will set the Content-Type to the appropriate setting for the file
  switch( $file_extension ) {
     case "pdf": $ctype="application/pdf"; break;
     case "exe": $ctype="application/octet-stream"; break;
     case "zip": $ctype="application/zip"; break;
     case "doc": $ctype="application/msword"; break;
     case "xls": $ctype="application/vnd.ms-excel"; break;
     case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
     case "gif": $ctype="image/gif"; break;
     case "png": $ctype="image/png"; break;
     case "jpeg":
     case "jpg": $ctype="image/jpg"; break;
     case "mp3": $ctype="audio/mpeg"; break;
     case "wav": $ctype="audio/x-wav"; break;
     case "mpeg":
     case "mpg":
     case "mpe": $ctype="video/mpeg"; break;
     case "mov": $ctype="video/quicktime"; break;
     case "avi": $ctype="video/x-msvideo"; break;

     //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
     case "php":
     case "htm":
     case "html":
     case "txt": die("Cannot be used for ". $file_extension ." files!"); break;

     default: $ctype="application/force-download";
   }

   //Begin writing headers
   header("Pragma: public");
   header("Expires: 0");
   header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
   header("Cache-Control: public");
   header("Content-Description: File Transfer");
   
   //Use the switch-generated Content-Type
   header("Content-Type: $ctype");

   //Force the download
   $header="Content-Disposition: attachment; filename=".$filename.";";
   header($header );
   header("Content-Transfer-Encoding: binary");
   header("Content-Length: ".$len);
   @readfile($file);
   exit;
}
php 

wordpress 留言被灌爆 – plugin – WP-ImgCode mod

今天有人問我,blog留言版被灌爆,都是廣告信,我想說 wordpress 不是有內建一個外掛 Akismet 這個外掛可以擋掉很多spam,讓你的留言版不至於有廣告信,不過還是可以加上留言版的驗證圖形,這樣會更安全一點。 今天找到一個國人改寫的 WordPress plugin – WP-ImgCode mod 這個還不錯用,安裝方式如下

安裝啟用
  1. 將解壓縮出來的 wp-imgcode 資料夾放到 WordPress 的 plugin 資料夾,預設為 wp-content/plugins。
  2. 在控制台中啟用這個 plugin。
加入驗證碼
  1. 開啟目前使用佈景的相關檔案,例如 comments.php。
  2. 在要顯示驗證碼的地方,加上這個程式碼:
ID); ?>
明天在去搞定別人的網站吧~ 先紀錄一下~