PHP 國曆轉西元日期

<?php
// 國曆西元日期
//echo ROC_years_to_date('70/8/8');
//echo ROC_years_to_date('71/8/8','Y/m/d');
function ROC_years_to_date($date,$format='Y-m-d')
{
$arr = array();
preg_match_all("/[0-9]+/", $date , $arr);
        $y = intval($arr[0][0])+1911;
$m = intval($arr[0][1]);
$d = intval($arr[0][2]);
return date($format,strtotime($y.'/'.$m.'/'.$d));
}
?>

[……]

閱讀更多

PHP 取年齡或年資 get age of date

取年齡或年資

/*
 取年資
 https://vector.cool 

 date $date          到職日 ex:2006/3/8
 date $date2 = null  離職日 ex:2017/5/14
 return int 年資
*/
function get_age($date,$date2=NULL){
	$time = (empty($date2))?time():strtotime($date2);
	$time = $time - strtotime($date);
	return intval($time / (365*24*60*60));
}

用法:

這邊有個要注意的地方,使用這方法須先設定時區

date_default_timezone_set()

第二個參數不帶則為還在職,也就是取目前時間

date_default_timezone_set("Asia/Taipei");
echo get_age('2007/6/25');
echo get_age('2007/7/28','2017/12/23');

 [……]

閱讀更多

PHP 時間運算 取2日期間共幾年 get years between two dates

php get years between two dates

取2日期間共幾年

/*
 get years between two dates
 https://vector.cool 

 date $date ex:2006/3/8
 date $date2 ex:2017/5/14
 return int
*/
function get_years_between_two_dates($date,$date2=NULL){
	$time = (empty($date2))?time():strtotime($date2);
	$time = $time - strtotime($date);
	return intval($time / (365*24*60*60));
}

用法:

這邊有個要注意的地方,使用這方法須先設定時區

date_default_timezone_set()
date_default_timezone_set("Asia/Taipei");
echo get_years_between_two_dates('2007/7/28','2017/12/23');

 [……]

閱讀更多

PHP PHPMailer無法透過Gmail發信,在帳號密碼正確的情況下

我打算用PHPMailer透過Gmail來發信,

但今天一直遇到很怪的問題,帳號密碼都確定正確,
該Google帳密可以登入Gmail,證明帳密是沒錯的,
但還是一直拋出SMTP Error: Could not authenticate.的錯誤訊息,
非常悶,搞好久,最後發現應該是密碼強度問題,
其實我密碼強度已經設很強咧,到底要多強!!
我是用下方亂碼、密碼產生器所產生的密碼,理應不會有問題,
但還是一直拋出SMTP Error: Could not authenticate.的錯誤訊息,
我用下方的「亂碼、密碼產生器」改到第五次才成功,
挑有英文自母大小寫+數字+符號的字串當密碼,
終於成功了 ,呼~搞半天,由此可證:
網頁能登入Gmail不代表該帳密能透過外部的SMTP來發Gmail信,
好像由外部的SMTP來發信的密碼強度有一定規則,
應該是要超強,才有辦法用PHP透過Gmail SMTP來發信
以下為官方的說明文件

Gmail說明 – 用戶端不接受我的使用者名稱和密碼
https://support.google.com/mail/answer/14257

Gmail說明 – 選用安全強度高的密碼
https://support.google.com/accounts/answer/32040

亂碼、密碼產生器http://lab.sp88.com.tw/genpass/

[……]

閱讀更多

PHP SQL 篩選時間

需要用日期來篩選指定日期區間的資料,剛好看到艾倫郭寫的這一篇,用了BETWEEN我覺得還蠻好用的,此篇文章也寫了好幾種方式,十分受用~


若SQL Server裡的 table 裡有一個日期欄位,只會放日期,那麼您可以寫成
SELECT …. FROM xxx WHERE xxx=’2008/1/15′SELECT …. FROM xxx WHERE xxx BETWEEN ‘2008/1/15’ AND ‘2008/1/20’

若日期欄位有包含時間, 由於時間可能值為 2008/1/15 23:59:59.50 如果您想找 2008/1/15 這一天裡的所有記錄(不拘時間), 卻將篩選條件寫成
SELECT …. FROM xxx WHERE xxx=’2008/1/15′ –>會找不到符合的記錄
SELECT …. FROM xxx WHERE xxx BETWEEN ‘2008/1/15’ AND ‘2008/1/16’ –>會連 2008/1/16 的記錄也被找到
SELECT …. FROM xxx WHERE xxx >= ‘2008/1/15’ AND xxx<= ‘2008/1/15 23:59:59’ –>若記錄值是2008/1/15 23:59:59.50 ,會找不到
因此,可以寫成
SELECT …. FROM xxx WHERE xxx >= ‘2008/1/15’ AND xxx < ‘2008/1/16’
就沒什麼問題了

本文出自
http://www.allenkuo.com/EBook5/view.aspx?TreeNodeID=13&id=374
[……]

閱讀更多

.htaccess 限制允許ip存取指定目錄

# 限制ip 放在指定目錄裡
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 114.32.147.146, 119.77.220.104
</Limit>

把上面這堆字放到.htaccess檔案中,
放到要限制僅允許ip可存取的目錄下就可以了[……]

閱讀更多

PHP imagettftext(): Could not find/open font 解決方法

新的主機PHP版本換成5.5.9版本
原本可用的驗証碼圖驗程式跑出 E_WARNING 的 error reporting如下

imagettftext(): Could not find/open font

無法開啟字型檔,導致圖片無法正常顯示,解法如下:
在imagettftext()前加入putenv(‘GDFONTPATH=’ . realpath(‘.’));

putenv(‘GDFONTPATH=’ . realpath(‘.’));
imagettftext( … );


搞定!!

參考網址
http://stackoverflow.com/questions/6089393/imagettftext-cannot-open-font-file

[……]

閱讀更多