精選文章

精彩Scratch作品選

盧楷勛 蕭名哲 A musement park 吳家雨 李欣芸 極地特派員 鄭郁蓉 蘇正甲 228事件 楊蕙禎.董欣慈 恐怖情人 江宜霖 王之妍 如何當一位好觀眾

2008年10月20日 星期一

[網頁設計] PHP 如何解決 Warning: session_start(): Cannot send session cookie - headers already sent by ..

轉貼來的解決方法,有以下兩種:

修改 php.ini:
output_buffering = On
確認 session_start() 的呼叫是在產生任何 HTML 輸出之前:
這是因為 session 的資料儲存在 cookie 裡面,而 cookie 的設置必須在 HTML 之前。
正確範例:





錯誤範例:






如果 session_start() 已經在所有輸出之前,而該警告訊息依然出現,這可能是 PHP 文件格式為 UTF-8 ,此時將 session_start() 改成 @session_start() 即可。

Mysql資料類型

MYSQL中的五種資料類型:字元型,文本型,數值型,邏輯型和日期型字元型
VARCHAR VS CHARVARCHAR型和CHAR型資料的這個差別是細微的,但是非常重要。他們都是用來儲存字串長度小於255的字元。
假如你向一個長度為四十個字元的VARCHAR型欄位中輸入資料Bill Gates。當你以後從這個欄位中取出此資料時,你取出的資料其長度為十個字元——字串Bill Gates的長度。 現在假如你把字串輸入一個長度為四十個字元的CHAR型欄位中,那麼當你取出數據時,所取出的資料長度將是四十個字元。字串的後面會被附加多餘的空格。
當你建立自己的站點時,你會發現使用VARCHAR型欄位要比CHAR型欄位方便的多。使用VARCHAR型欄位時,你不需要為剪掉你資料中多餘的空格而操心。
VARCHAR型欄位的另一個突出的好處是它可以比CHAR型欄位佔用更少的記憶體和硬碟空間。當你的資料庫很大時,這種記憶體和磁碟空間的節省會變得非常重要
文本型
TEXT使用文本型資料,你可以存放超過二十億個字元的字串。當你需要存儲大串的字元時,應該使用文本型資料。
注意文本型資料沒有長度,而上一節中所講的字元型資料是有長度的。一個文本型欄位中的資料通常要麼為空,要麼很大。
當你從HTML form的多行文本編輯框(TEXTAREA)中收集資料時,你應該把收集的資訊存儲于文本型欄位中。但是,無論何時,只要你能避免使用文本型欄位,你就應該不適用它。文本型欄位既大且慢,濫用文本型欄位會使伺服器速度變慢。文本型欄位還會吃掉大量的磁碟空間。
一旦你向文本型欄位中輸入了任何資料(甚至是空值),就會有2K的空間被自動分配給該資料。除非刪除該記錄,否則你無法收回這部分存儲空間。
數值型
SQL支援許多種不同的數值型資料。你可以存儲整數 INT 、小數 NUMERIC、和錢數 MONEY。
INT VS SMALLINT VS TINYINT他們的區別只是字元長度:INT型資料的表數範圍是從-2,147,483,647到2,147,483,647的整數SMALLINT 型資料可以存儲從-32768到32768的整數TINYINT 型的欄位只能存儲從0到255的整數,不能用來儲存負數通常,為了節省空間,應該盡可能的使用最小的整型資料。一個TINYINT型資料只佔用一個位元組;一個INT型資料佔用四個位元組。這看起來似乎差別不大,但是在比較大的表中,位元組數的增長是很快的。另一方面,一旦你已經創建了一個欄位,要修改它是很困難的。因此,為安全起見,你應該預測以下,一個欄位所需要存儲的數值最大有可能是多大,然後選擇適當的資料類型。
MUNERIC為了能對欄位所存放的資料有更多的控制,你可以使用NUMERIC型資料來同時表示一個數的整數部分和小數部分。NUMERIC型資料使你能表示非常大的數——比INT型資料要大得多。一個NUMERIC型欄位可以存儲從-1038到1038範圍內的數。NUMERIC型資料還使你能表示有小數部分的數。例如,你可以在NUMERIC型欄位中存儲小數3.14。
當定義一個NUMERIC型欄位時,你需要同時指定整數部分的大小和小數部分的大小。如:MUNERIC(23,0)
一個 NUMERIC型資料的整數部分最大只能有28位元,小數部分的位元數必須小於或等於整數部分的位元數,小數部分可以是零。
MONEY VS SMALLMONEY你可以使用 INT型或NUMERIC型資料來存儲錢數。但是,專門有另外兩種資料類型用於此目的。如果你希望你的網點能掙很多錢,你可以使用MONEY型資料。如果你的野心不大,你可以使用SMALLMONEY型資料。MONEY型資料可以存儲從-922,337,203,685,477.5808到922,337,203,685,477.5807的錢數。如果你需要存儲比這還大的金額,你可以使用NUMERIC型資料。
SMALLMONEY型資料只能存儲從-214,748.3648到214,748.3647 的錢數。同樣,如果可以的話,你應該用SMALLMONEY型來代替MONEY型資料,以節省空間。
邏輯型
BIT如果你使用核取方塊( CHECKBOX)從網頁中搜集資訊,你可以把此資訊存儲在BIT型欄位中。BIT型欄位只能取兩個值:0或1。
當心,在你創建好一個表之後,你不能向表中添加 BIT型欄位。如果你打算在一個表中包含BIT型欄位,你必須在創建表時完成。
日期型
DATETIME VS SMALLDATETIME一個 DATETIME型的欄位可以存儲的日期範圍是從1753年1月1日第一毫秒到9999年12月31日最後一毫秒。
如果你不需要覆蓋這麼大範圍的日期和時間,你可以使用SMALLDATETIME型資料。它與DATETIME型資料同樣使用,只不過它能表示的日期和時間範圍比DATETIME型資料小,而且不如DATETIME型資料精確。一個SMALLDATETIME型的欄位能夠存儲從1900年1月1日到2079年6月6日的日期,它只能精確到秒。
DATETIME型欄位在你輸入日期和時間之前並不包含實際的資料,認識這一點是重要的。