PHP Mailer

$mail = new PHPMailer();
mb_internal_encoding('UTF-8'); //避免主題亂碼

//Function
function MyMailer($mail, $to, $mailbody, $subject, $attachtrue, $filename) {

global $smtpsecure2, $smtphost2, $smtpport2;
global $username2, $password2, $replyto2;
global $from2, $fromname2;

$mail->IsSMTP();
$mail->SMTPAuth   = true;  // enable SMTP authentication
$mail->SMTPSecure = $smtpsecure2;
$mail->Host       = $smtphost2;
$mail->Port       = $smtpport2;
$mail->Username   = $username2;
$mail->Password   = $password2;
$mail->AddReplyTo($replyto2,$fromname2);
$mail->From       = $from2;
$mail->FromName   = $fromname2;
$mail->Subject    = mb_encode_mimeheader($subject, "UTF-8");
$mail->WordWrap   = 50; // set word wrap
$mail->MsgHTML($mailbody);
$mail->AddAddress($to, "");
//charset
$mail->CharSet="UTF-8";

if($attachtrue == 1) {

for($i = 0; $i < count($filename); $i++) {
$mail->AddAttachment("attach/".$filename[$i]);
}
}

$mail->IsHTML(true); // send as HTML

if(!$mail->Send()) {
echo '<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />';
echo "Error: " . $mail->ErrorInfo;
} else {
echo '<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />';
echo "Success!";
}

}

製作一個Javascript EDITOR, 可以直接存取Windows 系統 ClipBoard(剪貼簿)的資料/圖片,

如果沒有限定瀏覽器當然最好, 但如果功能只能在IE使用也OK.

以下的CODE參考自某論壇,還沒有嘗試過,先在此記錄一下:

function SetToClipboard(text) {
if (isIE)
window.clipboardData.setData(“Text”, text);
else if (isFF) {
try {
netscape.security.PrivilegeManager.enablePrivilege(“UniversalXPConnect”);
} catch (every) { window.alert(jsresClipboardNotAllowed); return null;}
var clip = Components.classes[“@mozilla.org/widget/clipboardhelper;1”].getService(Components.interfaces.nsIClipboardHelper);
clip.copyString(text);
}
}

如果在editor能夠進行裁剪更佳~

還沒實作過, 這個IDEA如果可以實現, 在部落格寫教學將會非常方便. (不用一直使用圖片編輯器來處理圖像)

1. 在linux輸入指令: crontab -e 進行系統排程編輯模式

2. 格式大概如下, 前面5個欄位分別是是執行的日期時間(分 時 日 月 年), 後面的路徑是要執行的程式, 以下的意思是指每天的凌晨12點會執行一次此程式:

 0 0 * * * /usr/local/www/awstats/cgi-bin/awstats.sh

3. 現在我們要排程執行PHP網頁, 因此需要用LINUX的PHP程式來執行PHP網頁, 指令如下:

30 23 * * * /usr/local/bin/php /home/xxx/public_html/mytesting.php >> /host/cron.log 2>&2

以上的指令含意是, 每天的晚上11點30分會使用PHP程式(路徑在/usr/local/bin/)來執行PHP網頁(路徑在/home/xxx/public_html/), 而後面的意思是執行完畢後的紀錄檔會延伸儲存在 /host/cron.log 裡面, 讓你知道執行的結果, 否則執行的狀況你是沒辦法直接看到的.(使用 * 的意思是不管何年何月何日, 若指定日期, 那就表示只會在該日期執行一次) 所以若要系統每天固定時間內替你執行程式, 就要把格式寫清楚囉, crontab的時間格式如下:

field              allowed values
—–             ————–
minute            0-59
hour               0-23
day of month   1-31
month            1-12 (or names, see below)
day of week    0-7 (0 or 7 is Sun, or use names)

 若想知道更詳細的資料, 可以輸入 man 5 crontab, 參考詳細的說明. 除此之外, 要例行執行程式, 寫法也可以如下:

string            meaning
——           ——-
@reboot        Run once, at startup.
@yearly         Run once a year, “0 0 1 1 *”.
@annually      (same as @yearly)
@monthly       Run once a month, “0 0 1 * *”.
@weekly        Run once a week, “0 0 * * 0”.
@daily           Run once a day, “0 0 * * *”.
@midnight      (same as @daily)
@hourly         Run once an hour, “0 * * * *”.

如果我想要每分鐘執行一次, 要怎麼寫?

*/1 * * * * /usr/local/bin/php /home/xxx/public_html/mytesting.php >> /host/cron.log 2>&2

*/1 就是讓你連續每分鐘執行一次的關鍵寫法.

想在您的WEB APPLICATION加入GD的功能嗎?

想要自己做出漂亮精緻的報表嗎?

那就要好好學習GD了, 它是跟PHP搭配得非常棒的圖像模組,

若您已經對PHP瞭如指掌,那學習GD將會讓您的WEB程式設計功力更加大增.

以下網站將GD的功能與教學都說明得很清楚, 若您是GD入門者, 這個網站將非常適合您.

http://www.nyphp.org/content/presentations/GDintro/gd1.php

GD 管方網站: http://www.boutell.com/gd/

Some of you might be using the following directive to do Random Picking from your MYSQL database, which is mysql_query(“SELECT * FROM table ORDER BY RAND() LIMIT 10″);

However, It is not a good way if your website is in a high-flow-situation, Using such directive might causing a big loading in your hosting machine, here’s the alternative way to replace such directive, (special thanks to Nicky Soo for providing this method),

The code should be look like this:

mysql_query(” SELECT *
FROM news AS r1 JOIN
(SELECT (RAND() *
(SELECT MAX(newsid) FROM news)) AS newsid) As r2
WHERE `display` =1
AND r1.newsid >= r2.newsid
AND r1.counter >50
LIMIT 0 , 10  “)

Cheers!

<?php

//This gets today’s date
$date =time () ;

//This puts the day, month, and year in seperate variables
$day = date(‘d’, $date) ;
$month = date(‘m’, $date) ;
$year = date(‘Y’, $date) ;

//Here we generate the first day of the month
$first_day = mktime(0,0,0,$month, 1, $year) ;

//This gets us the month name
$title = date(‘F’, $first_day) ;

//Here we find out what day of the week the first day of the month falls on
$day_of_week = date(‘D’, $first_day) ;

//Once we know what day of the week it falls on, we know how many blank days occure before it. If the first day of the week is a Sunday then it would be zero
switch($day_of_week){
case “Sun”: $blank = 0; break;
case “Mon”: $blank = 1; break;
case “Tue”: $blank = 2; break;
case “Wed”: $blank = 3; break;
case “Thu”: $blank = 4; break;
case “Fri”: $blank = 5; break;
case “Sat”: $blank = 6; break;
}

//We then determine how many days are in the current month
$days_in_month = cal_days_in_month(0, $month, $year) ;

//Here we start building the table heads
echo “<table id=wp-calendar summary=Calendar>”;
echo “<CAPTION>$title $year </CAPTION>”;
echo “<tr>
<TH title=Monday scope=col abbr=Monday>M</TH>
<TH title=Tuesday scope=col abbr=Tuesday>T</TH>
<TH title=Wednesday scope=col abbr=Wednesday>W</TH>
<TH title=Thursday scope=col abbr=Thursday>T</TH>
<TH title=Friday scope=col abbr=Friday>F</TH>
<TH title=Saturday scope=col abbr=Saturday>S</TH>
<TH title=Sunday scope=col abbr=Sunday>S</TH>”;

//This counts the days in the week, up to 7
$day_count = 1;

echo “<tr>”;
//first we take care of those blank days
while ( $blank > 0 )
{
echo “<td></td>”;
$blank = $blank-1;
$day_count++;
}

//sets the first day of the month to 1
$day_num = 1;

//count up the days, untill we’ve done all of them in the month
while ( $day_num <= $days_in_month )
{
if($day_num == $day) {
echo “<td id=today> $day_num </td>”;
} else {
echo “<td > $day_num </td>”;
}
$day_num++;
$day_count++;

//Make sure we start a new row every week
if ($day_count > 7)
{
echo “</tr><tr>”;
$day_count = 1;
}
}

//Finaly we finish out the table with some blank details if needed
while ( $day_count >1 && $day_count <=7 )
{
echo “<td> </td>”;
$day_count++;
}

echo “</tr></table>”;

?>

有時候我們會在同一個頁面同時使用兩個資料庫,

若連線字串是放在CLASS的CONSTRUCTOR裡面, 通常我們都只要NEW 一次, 就可以一直保持資料庫連線,

但若兩個資料庫交替使用, 則會發生連線字串混亂的狀況.

此時應該在CLASS裡面每個FUNCTION都的MYSQL_QUERY之前都指定連線字串,

這樣就可以保持一MYSQL_QUERY對應一個資料庫的狀況了.

class sample {

function DATABASE() {
include(“db1.php”);

}

function FIRSTCONNECT() {
$this->DATABASE();
mysql_query(“…..”);
}

}

class sample2 {

function DATABASE2() {
include(“db2.php”);

}

function ANOTHERCONNECT() {
$this->DATABASE2();
mysql_query(“…..”);
}

}

$firstclass = new sample;

$secondclass = new sample2;

$secondclass->ANOTHERCONNECT(); //讀取自DB2 的資料庫

$firstclass->FIRSTCONNECT(); //讀取自DB1 的資料庫

最近在撰寫PHP程式的時候遇到了兩個花費我不少時間的問題.

第一個問題:

我們常常在設計表單的時候都會設計 新增, 刪除, 編輯的功能, 在完成這些功能之後, 我們習慣用 header(“Location: xx.php”); 回到瀏覽列表. 但有時候我們在編輯成功回到瀏覽列表後(沒有錯誤訊息), 但資料卻沒有被編輯修改成功. 最糟糕的是MYSQL_ERROR() 也帶不出到底問題出在哪裡. 這個時候就可以推斷是ID 沒有被送入MYSQL.

比如說: mysql_query(“UPDATE products SET title = ‘$title’ WHERE id = ‘$id'”) or die(mysql_error());

這個時候, 如果你的$id 變數值是 “” 也一樣會通過指令, MYSQL 不會告訴你有錯誤. 所以無論你怎麼試都還是發現指令明明就沒問題但怎樣就是沒辦法UPDATE成功.

第二個問題:

還有另一個可能性是出在一個天殺的錯誤:

<input type=”hidden” name=”id” values=”<?php echo $_GET[‘id’]; ?>” />

當我們想要用隱藏表單傳送ID值的時候, 會用以上的HTML來傳送, 你發現問題出在哪裡嗎?

答案很明顯, 就是 “values” ! values 是沒有 “s”的, 多了一個”s” 你的表單就送不出去ID這個值了.

正解: <input type=”hidden” name=”id” value=”<?php echo $_GET[‘id’]; ?>” />

若這個問題剛好與以上的問題碰在一起, 肯定會在DEBUG上花很時間.

表面上看起來很簡單的問題, 有時候會搞到我們抓狂都找不到BUG. 在這裡與大家分享經驗.

想要自己用PHP動態做出美麗的圖? 卻又不想花大錢去買別人寫好的套件?

不用慌張, 因為這個網站會教你怎麼一步一步學GD, 趕快用你的PHP中內建的GD function來畫圖吧!

動一動腦筋可以做出意想不到的效果呢.

http://www.nyphp.org/content/presentations/GDintro/