2014年3月28日 星期五

寄郵件的過程(如何看懂郵件的原始檔)

先了解幾個對象:
1. 寄件人
2. 寄件人的SMTP
3. 收件人的SMTP
4. 收件人

寄件人寫郵件的格式:
From: 寄件人郵件地址
Subject: 主題
Date: 時間(寄mail的時間)
To: 收件人郵件地址

再了解一些名詞:
Delivery Date: SMTP 收到或relay的時間
Return-Path: 回信的位置(Reply-To:)

Received:基本上這個字是"收到"的意思,所以真的重要的是從哪收到和藉著哪收到
Received: from 從哪收到 ip 或 domain , 可以知道發信的 SMTP
Received: by 藉著哪收到 ip 或 domain , 可以知道一些節點
X-Received: by 最後的節點

寄送過程:
寫完email送到寄件人的SMTP去relay,我們看到的格式和時間:
Received: from 寄件人的SMTP加IP address
(例如 Received: from [11.11.111.111] by mail.emailprovider.com)
by: 寄件人的SMTP
for: 收件人
SMTP id
時間(例如Tue, 29 Mar 2005 15:11:45 -0800 (PST)

寄件人的SMTP relay到收件人的SMTP到 格式和時間如下:
Delivered-To: 郵件的目的地電子郵件地址
Received: by IP address(節點) with SMTP id 時間
(例如 : Received: by 10.36.81.3 with SMTP id e3cs239nzb;Tue, 29 Mar 2005 15:11:47 -0800 (PST))

大致過程如此,但不同的mailserver解出來的還是有點差異。

其他名詞
Mime-Version: 多用途互聯網郵件擴展版本

Content-Type: format, html or plain text (例如:Content-Type: text/plain; Content-Type: text/html)

charset: 編碼

X-Spam-Status: spam score

X-Spam-Level: spam score

2014年3月26日 星期三

我們公司應該選哪種寬頻上網

現今不論是個人還是企業上網的方案不段的增加,有些人對於該怎樣做出選擇越來越不容易。希望看完本文之後能稍微了解。本篇文章只想用最簡易的方式幫助大家了解上網的方案,並沒有做很詳盡的專業技術解釋。另外由於電信和固網業者基於利潤的考量下,現有的技術其實還可以帶給我們更快的速率為什麼沒有,這裡也不討論。

xDSL
先不管網路,回想在那個沒有網路的時代大家都靠著電話來彼此聯繫。假設你想要以最快的方式讓大家能有網路的訊號到府上或公司,你會想從哪裡開始發展。沒錯!用電話線。就是大家熟知的數位用戶迴路(Digital Subscriber Line,縮寫:DSL),是通過銅線或者本地電話網提供數位連接的一種技術。發展到現在有:
   
    ADSL(非對稱用戶數位線)
    HDSL(高速用戶數位線)
    RADSL(速率自適應數位用戶線路)
    SDSL(對稱數位用戶線路,標準版HDSL)
    VDSL(超高速用戶數位線)
    G.SHDSL(ITU-T標準替換早期SDSL)

最新有所謂VDSL2 更大幅提高數據傳輸速率。當然藉著電話線來傳輸數據的技術還有T1、T2……等,就是家所熟知的專線〈LeaseLine〉租用。也可以上下行對等速率,目前還有很多企業使用。
但隨著多媒體影音的快速發展,解析度的快速提升,網路傳輸影音〈HDTV〉的需求增加。xDSL已越來越不符使用。同樣粗細的水管你就算加壓還是同一條水管,看有沒有比較粗的水管比較實在。



Cable Modem 纜線數據機
隨著第四台〈CATV使用同軸電纜coaxial cable做傳輸媒介〉的使用率不斷普及,業著當然也想分享網路數據傳輸這塊大餅。同理同軸電纜也可以藉著Cable Modem作訊號的轉換來達成上網的目的。雖然不可否認的是它的傳輸技術和速率不斷在提升,所以使用率不斷在增加,但很可惜還是一條小水管。〈ps:本篇文章不討論Cable Modem 與xDSL哪一個比較好和快,因為那牽涉的不是單一的因素。〉


光世代網路〈光纖網路〉
也作光纖通訊,是指一種利用光與光纖(optical fiber)傳遞資訊的一種方式。屬於有線通訊的一種。光經過調變(modulation)後便能攜帶資訊。看來你做過一番研究似乎為你或你的公司找到大水管準備換水管了。但請別高興得太早。


在台灣中華電信已積極地在鋪設光纖主幹,所謂的有線電視(CATV)業者也在架設鋪設HFC(Hybrid Fiber Coaxial)光纖同軸網路。但是請你先想像一下你在高速公路飆車飆得很過癮,但下交流道不是紅綠燈就是塞車的景況。光纖目前也是如此。

FTTCab:光纖到交換箱 (Fiber To The Cabinet)
FTTC:光纖到路邊 (Fiber To The Curb)
FTTB:光纖到大樓 (Fiber To The Building)
FTTH:光纖到府 (Fiber To The Home)
查查看網路高速公路的交流道下到你家的哪裡,大部分只到交換箱或路邊吧!後面還是加上〈電話線〉VDSL2吧!

乙太網路〈Ethernet〉
你可能會問,我們家或公司的內部網路不是挺快的,傳高畫質影音不也很流暢嗎?為什麼電信業著不用這種方法當主幹接到我們家或公司呢?不要懷疑!隨著乙太網路傳輸技術的進步〈標準長距離超高速乙太網路Gigabit Ethernet〉,歐美用乙太網路做主幹的電信業者已行之有年了!台灣也有一些固網提供乙太網路的專線,我們等著看他會不會成為大水管。


其實網路傳輸的技術不斷進步,每一種規範都在進步中。甚至新的技術或混合不斷的被提出。但是電信業著的良心會不會越來越敏銳,我們拭目以待吧!

2014年3月8日 星期六

超全域變數—$_Cookie 和 $_Session


  Session有別於Cookie是Cookie Data存放在Client端。Session 的功能簡單的說就是將變數儲存在伺服器端。php.ini 中有一個設定session.save_path = "" 即是存放Session的地方。

  但其是Session也運用Cookie的技術。當Session_start()的時候會有一組Session id 存放在Client端。存放Client端就是Cookie的技術。當Client端禁用Cookie時,session_id將無法傳遞,此時Session失效。不過php5在Linux/UNIX平台可以自動檢查Cookie狀態,如果客戶端設置了禁用,則係統自動把Session_id附加到url上傳遞。 windows主機則無此功能。

  使用Session_start()之前瀏覽器不能有任何輸出,否則會發生以下錯誤: Warning: Cannot send session cache limiter - headers already sent. 所以像 echo() 和 Html tag要在Session_start() 之後。

  Session到底有什麼用處呢?網上購物時的購物車,你可以隨時把你選購的商品加入到購物車中,其實還未存入資料庫。結帳後才存入資料庫。在整個過程中購物車一直扮演著臨時存貯被選商品的角色,它可以用於用戶身份認證,程序狀態記錄,頁面之間參數傳遞等。
 

  php5下不再使用Session_register()Session_unregisterSession_is_registered,除非在php.ini裡把register_globals = on,不過出於安全考慮,強烈建議register_globals = off。  

  php5使用$_SESSION['name'] = name註冊Session這個超級全域變數(superglobals)。和$_GET、$_POST、$_COOKIE 、$_SERVER的使用方法相似。



  Session id :


<?php
$sessionId = session_id();
if(empty($sessionId)) session_start();

echo "Session id = ".session_id()."<br \>";
?>

  註冊Session變數name :

<?php
$sessionId = session_id();
if(empty($sessionId)) session_start();

$_SESSION['name'] = 'Jonh';

echo "Session變數name值為:".$_SESSION['name']."<br \>";

?>

  刪除Session

<?php
$sessionId = session_id();
if(empty($sessionId)) session_start();

$_SESSION['name'] = 'Jonh';

unset($_Session['name']);

echo "Session變數name值為:".$_SESSION['name']."<br \>";

?>

$_COOKIE
通過HTTP Cookies 方式傳遞給當前腳本的變數的陣列。

範例
<?php
echo 'Hello ' . htmlspecialchars($_COOKIE["name"]) . '!';
?>
假設之前發送了 "name" Cookie

以上例程的輸出類似於:
Hello Hannes!

2014年3月5日 星期三

PHP 引入檔 路徑搜尋

#PHP 引入檔有 :
include
include_once
require
require_once

include
include () 這一個用法和require的用法很像不過他的運作理念和require有一些差異也就是當程式執行include的時候,會先進行插入才會讀取檔案!
(先插入程序再執行:錯誤警告)
所以當程式用require時 ,遺失了檔案程式就會發生錯誤,但在include插入的模式下,就不會終止程式。


require
REQUIRE('檔案') 這一個用法和C 語言的前端處理程式 #include 很像,他的運作方式是把本身以指定的檔案置換,置換檔案時先執行script
( 先執行再傳回結果:錯誤跳離)

絕對路徑
假設主機的根目錄有 :
LinuxHost:/home
LinuxHost:/wwwroot
則 :
/home , /wwwroot 是絕對路徑

相對路徑
假設Apache的文件根目錄(DocumentRoot)設定是 wwwroot
php.ini 的設定裡 include_path 如下
unix: "/path1:/path2"
include_path = ".:/usr/share/php5:/usr/share/php5/PEAR"
則程式中 :
<?php
require_once("System.php");
?>

搜尋順序是 :
/wwwroot/System.php
/usr/share/php5/System.php
/usr/share/php5/PEAR/System.php