PHP字串長度找子字串與取代字串的常用函數

PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...

2015年4月30日 星期四

實用Swift Mailer類庫用來發送php電子郵件

        Swift Mailer是一款功能特別強大的PHP物件導向的發送電子郵件的類別函式庫。它可以讓你透過內建的mail()函數、SMTP、postfix、甚至是你自己客製化的通訊協定來達到寄送email的目的。還可以有效的阻擋email的表頭遭到注入式攻擊,真的確是一個簡單容易使用的PHP郵件發送類庫。下載連結:http://swiftmailer.org/download

一個簡單發送SMTP Gmail電子郵件的範例

<?php
require_once 'swiftmailer-5.x/lib/swift_required.php';
 
// 採用預設的mail()數函發email
// $transport = Swift_MailTransport::newInstance();

// 使用SMTP的方式來發送gmail
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
  ->setUsername('Your username')
  ->setPassword('Your password')
  ;
 
// 填寫email的主旨、內容、寄件者、收件者 
$message = Swift_Message::newInstance();  

$message->setTo(array(
  "jason@gmail.com" => "Jason.Terry"
  //,"abc@yahoo.com" => "Mike.Porter"
));
$message->setSubject("Swift Mail測試中...");
$message->setBody("恭喜您! Swift測試郵件發送成功。");
$message->setFrom("swiftmailer@gamil.com", "Swift-mailer");
 
// Send the email
$mailer = Swift_Mailer::newInstance($transport);
$mailer->send($message);

echo 'Send Swift mail successfully!!';




2015年4月29日 星期三

常用的三種PHP加解密方法

        談起PHP的資料加密、解密方式,一般我們會聯想到的一定是私密的資料或是重要的數據,才需要經過加密的演算,產生一串人肉眼無法辯識的字串編碼,透過網路傳遞到接收端,再經過解密的演算,還原回原始的內容。就目前而言mcrypt_encrypt, md5與base64是PHP常常使用到的加解密方法,下面我們會個別介紹:

1. MD5
它是一種以128bit的固定長度表示字串的密碼雜湊函數。

<?php
    // 加密
    echo md5("測試字元!");
?>

2. Base64
Base64是一種採用英文字母大小寫、阿拉伯數字、加號「+」或斜槓「/」,所組合而成的字串編碼方式,習慣應用於MIME格式的email、儲存於XML的複雜資料。

<?php
    // base64加密
    echo base64_encode("測試字元!");

    // base64解密
    echo base64_decode("測試字元!");
?>

3. mcrypt_encrypt
一個簡單PHP內建加密、解密的函數。

<?php
    
    // 設定金鑰, 負責對資料進行加解密 
    $key = "ac181c517bdf24ce053556bb280a2dcb";

    /**
     * 加密函數
     */
 function encrypt($str)
 {
  $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
  $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);  
  return base64_encode(trim(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, self::$key, $str, MCRYPT_MODE_ECB, $iv)));  
 }

      /**
     * 解密函數
     */
 function decrypt($str)
 {
  $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
  $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, self::$key, base64_decode($str), MCRYPT_MODE_ECB, $iv));  
 } 
?>