目前分類:php (48)

瀏覽方式: 標題列表 簡短摘要
在寫 PHP 程式用到 header 函數轉換網頁時經常會看到

Warning: Cannot modify header information -

headers already sent by (output started at xxx/xxx.php:2) in xxx/xxx.php on line 2


尤其對於從 PHP4 (或更早版本) 升級成 PHP5 後
突如其來的一大串英文錯誤 (都是英文吧= =) 感到困惑
對絕大部分人來說 header 應該是很好用的轉換網頁的函數
因為當你按了上一頁後就看不到前面那個網頁啦~~

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

再開始學習PHP時,我們常常需要安裝WEBSERVER,不管是IIS或是Apache;在安裝PHP的版本,若是使用資料庫通常會裝MYSQL。還有一大堆的MYSQL管理工具;喔!!! MYGOD!! 生命請花費到美好的事物上,不想寫程式也請不要去賣雞排。好啦,回歸正題 "VertrigoServ" 是一個OPENSOURCE的計畫,2.05版提供了

  • Apache 2.0.55
  • PHP 5.1.2
  • MySQL 5.0.19
  • SQLite 3.3.4
  • PhpMyAdmin 2.8.0.1
  • ZendOptimizer 2.6.2
  • SQLiteManager 1.1.3
整合介面,若是初學PHP還是建議安裝這一套工具來使用,以下我用一些截圖來說明。

步驟一:
請先到 Vertrigo 下載最新的版本2.05.

步驟二:
執行Vertrigo_205.exe將程式安裝到 預設C:\Program Files\VertrigoServ
(未方便除錯,我自己設的路徑為 C:\MYPHP\VertrigoServ)

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

介紹在WindowsXP(SP2) PHP+IIS的安裝方法(ISAPI方式)

1,把php-5.1.2-Win32.zip解壓放到C:PHP。
2,php.ini-dist改名為php.ini,extension_dir = c:\PHP\ext。
3,在php.ini中找尋extension=php_mysql.dll前面的";" 取消;符號。
4,複製php.ini到C:WINDOWS目錄下。
5.再複製php5ts.dll和libmysql.dll到C:\WINDOWS\system32中。
6.打開IIS,新增應用程式設定. (指向c:\php\php5isapi.dll)
如示:

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

用以下的方式,可以讓大部份瀏覽器 (主要是 IE) 詢問你是否要下載檔案 (而不是直接開啟) 。

<?php
$file_name = "file.name";
$file_path = "/path/to/realfile";
$file_size = filesize($file_path);
header('Pragma: public');
header('Expires: 0');
header('Last-Modified: ' . gmdate('D, d M Y H:i ') . ' GMT');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

關於 ImageMagickimagick 的安裝方式YOGO之在 「ImageMagick應用大全」 中已有詳細說明,若有不清楚的朋友請參考該篇教學,在此YOGO即不再贅述,本篇僅提供幾個應用方式。

1.生成縮圖

首先我們可以看到網站根目錄內有一個 (寬)800像素 X (高)600像素,大小69.5KB,名為 Sunset 的JPG圖檔
16.jpg

開啟一個PHP檔案,然後輸入如下程式碼
$imgFile = 'Sunset.jpg';
$simg = new Imagick($imgFile);

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

關於ImageMagickimagick的安裝方式YOGO之在 ImageMagick應用大全中已有詳細說明,若有不清楚的朋友請參考該篇教學,在此YOGO即不再贅述,本篇僅提供幾個應用方式

1.生成縮圖

a.指定大小
首先我們可以看到網站根目錄內有一個 (寬)800像素 X (高)600像素,大小69.5KB,名為 Sunset 的JPG圖檔01.jpg
開啟一個PHP檔案,然後輸入如下程式碼
exec('im_convert -sample 100x75 Sunset.jpg Sunset-01.jpg');
然後存檔並命名為index.php

02.jpg開啟瀏覽器,並在網址的部份輸入 http://localhost/index.php

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

一般使用者可能會認為在 PHP 下想要使用 iconv 的話,只要把 php.ini 裡面的分號 ; 拿掉就以了:

;extension=php_iconv.dll

  一般像 GD2 之類的 Library 照這樣安裝是沒有錯,但是在 iconv 狀況就不同了,馬上就出現下面的畫面:


  因為要啟動 iconv 的功能,除了 php_iconv.dll 之外,還需要一個 iconv.dll,也就是需要 php_iconv.dll 和 iconv.dll 都可以讓 php 找的到的狀況之下。所以正確安裝的方式是:

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

[Javascript] 請勿用保留字來取 HTML 的標籤名

  剛剛查一個 javascript 的 bug ,原因是 document.form1.submit(); 不能動作。出現的錯誤訊息是「物件不支援此屬性或方法」,這種 document.form1.submit(); 的 javascript 是再平常不過的指令,怎麼可能不支援呢?後來才發現,是美編把 submit 的按鈕取名叫 submit,也就是在 HTML 裡面有一行是:

<input type="submit" name="submit" value="submit">

  這樣 document.form1.submit(); 就無法執行了,因為 document.form1.submit 已經變成那個按鈕的物件了,自然 submit 的 method 也無法動作。

  因為自己不會犯這種用保留字來取 HTML Tag name 的錯誤,不過遇到對程式不熟的美編,還是會遇到這種狀況,只能自求多福了。

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

PHP 跟 Javascript 都有 HTML encoding 的函式,編碼過的結果雖然類似,但是還是有些微的不同,所以不能互轉。

二者的差異可以可參考:

http://web.archive.org/web/20030811181238/http://php.weblogs.com/php_jscript_vbscript_1

節錄如下:

PHP:
urlencode( ) All punctuation, accented characters, and any other non-ASCII characters are replaced with %xx encoding. Spaces converted to +.

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

遞迴篇

  這個需求是在大鳥需要的拍賣網站會用到,其實一般搜尋引擎也常常會用類似這種「搜尋此分類下所有項目」的功能。

  不過這篇不是講如何搜尋,而是要抓出分類之下的所有次分類,有了所有的分類之後,再下搜尋語法就沒什麼困難了。

我們先來定義一個簡單的分類結構範例:

女性用品 ->保養品 ->臉部
->身體

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

如何禁止使用者執行某些 PHP 指令?

  很多指令如 shell_exec、system、passthru、popen 等都是系統相關的指令,如果虛擬主機開放給使用者使用,或是在系統權限沒設定完整的情況下,必然會造成很大的傷害。

  要達到這個需求,只要在 php.ini 裡設定 disble_function 這個選項就能設定禁止執行的指令了。

範例:

disable_functions = phpinfo

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

在 Windows 下安裝 ImageMagick

1. 到 http://www.imagemagick.org/ 下載 Windows Executable 版本。 (建議下載 Stable 穩定版本)
01
02
03

2. 安裝下載回來的ImageMagick-x.x.x-xxx-windows-dll.exe,建議用預設安裝即可;另外安裝時也請勾選 Update executable search path,以讓系統可以找到 ImageMagick 執行檔的位置;其他用不到的選項可以不勾選。
04
05

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

在一般網站程式設計應用中,很多時後會需要用到檔案重新命名與檔案移動,那麼在PHP中該如何實現這2個需求呢?其實很簡單,只要用rename()這個函式即可,其函式原型如下:

rename-檔案重新命名
語法:int rename (string oldname, string newname)
說明:試著將舊名稱oldname重新命名為newname;成功則傳回true,失敗則傳回false。

//如果在同目錄的檔案
rename("1.txt","2.txt");

另外,若不同路徑的話則會變成移動檔案

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

之前YOGO曾在「Mysql的日期加減運算」這篇文章中有提到MYSQL的日期加減運算,而這一篇文章則是提供PHP日期加減運算的解法;所先先來介紹一下4個PHP內建的日期函式,如下所示:

1.date() - 將本地的時間/日期格式化
語法 : string date (string format [, int timestamp])
說明 : 使用給予的timestamp按照格式化字串傳回一格式化字串,如果沒有給予timestamp則使用本地的時間。

或可參考YOGO「php的時間函式(date)應用 」這篇文章。
 
2.mktime() 取得日期的UNIX時間戳記
語法 : int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

YOGO在知識+看到一篇與酷學園相同的問題,分別是 「[php]如何於資料表中到期日前寄出一封信至用戶信箱?」「[求助]如何於資料表中的到期日到時寄出一封信至該用戶信箱?」 ,其中有不少朋友其實已經提出解決之道,只是沒有加以實作而已,有鑑於此YOGO就野人獻曝一下,將之實作出來。

在原始問題中,提問者的原始問題如下:

目前我有做一個客戶資料管理程式,而在這支程式的資料表中我有規劃了用戶的信箱(email)租書到期日(booklimdate)與租片到期日(videolimdate),我想要讓租書到期日與租片到期日前30/15/7/3/1天寄出一封到期通知信給用戶的信箱,【內容比如說:敬愛的顧客xx您好!您向本店租賃的書籍將於$booklimdate到期,敬請注意還書日期,謝謝!! 】請問我該怎麼做呢?

要解決這個問題目前YOGO想的到的方法有2個,一個是用PHP中的date()函式處理,而另一個則是用Mysql的DATE_ADD() 函式來處理,而YOGO的這篇教學是用下Mysql中DATE_ADD()的這個函式來實作,若要用PHP來解決的話,請參考「PHP的日期加減運算」這篇文章,在實作之前我們先來認識一下Mysql中DATE_ADD() 的這個函式,其函式原型如下:

DATE_ADD(date,INTERVAL expr type)

date是一個指定開始日期的DATETIME或DATE值,expr是指定加到開始日期或從開始日期減去的間隔值一個表達式,expr是一個字符串﹔它可以以一個"-"開始表示負間隔。type是一個關鍵詞,指明表達式應該如何被解釋。EXTRACT(type FROM date)函數從日期中返回"type"間隔。下表顯示了type和expr參數怎樣被關聯:

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

在作者所申請的幾個PHP 主頁空間中,能夠提供mail功能的實在不多,總是調用完mail()函數之後就毫無下文了。

但是電子郵件在網上生活中的作用越來越大作用我不想再說了,但是如果主頁空間不支持mail()發送那麼怎麼辦呢?我也想過通過socket來實現郵件 發送,但無奈對用php 進行socket編程不熟悉,再加上發送郵件要用到SMTP協議,又要讀不少的英文了,所以一直也沒有去研究過。

終於有一天我發現了一篇文章,關於用socket編程發送郵件。我如獲至寶般將其拷貝下來,並且將其改造成了一個php可用的類,供大家使用。

原來的文章只是一個簡單的例子,而且還有一些錯誤,在我經過多次的實驗、改造終於將其改成了一個直接使用socket,向指定的郵箱發送郵件的類,如果大家和前面關於發送MIME的文章結合起來,就可以實現在不支持mail()函數的網站上發送郵件了。

因為發送郵件的過程需要時間,可能與mail()的處理機制還不完全一樣,所以速度要慢一些,但是可以解決需要發送郵件功能的燃眉之急,同時你也可以學習用php 進行socket編程。下面就將這個類的實現原理介紹給大家,同時向大家講解一些關於SMTP的基本知識。

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

Google 的 webmaster Eric Higgins 寫了一篇文章介紹怎樣優化 PHP,文章刊登不久,PHP 開發團隊其中一員 Gwynne Raskind 發文提出異議,指 Eric 所說的與事實不符,有些甚至完全相反,在 PHP 5 上幾乎沒有一項 Eric 的優化技巧能帶來實質的好處。我們摘錄了比較具爭議性的幾點,看看誰是誰非。

Eric Higgins: 不要沒來由的複製變量

Eric 說每次我們複製一個變量的時候,便會消耗一些記憶體,一些 PHP 初哥為了使他們的原碼「好讀」,喜歡把一些預定義變量複製到另一個名稱比較簡短、容易記憶的變量,這樣對程式的效能有負面的影響。在下面的例子中,如果用戶輸入了一段 512KB 的文字,程式便會消耗 1MB 的記憶體:

$description = strip_tags($_POST['description']);
echo $description;

我們沒有理由把文字複製到 $description,只需:

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

在 Smashing Magazine 的網站,Glen Stansberry 提出十個進階 PHP 技巧,可以即時提昇你的 PHP 編程實力,其中包括 SQL 注入攻擊的「作弊表」、簡化判斷句中的 else 部分、在不得已的情況下才使用正規表達式、三元運算子、Memcached 數據庫快取系統等等,以下是詳細的內容。

PHP 在 1995 年從一個不起眼的編程語言開始,多年來迅速發展,現在已經是其中一種最流行的網絡開發語言,許多熱門網站均採用 PHP 來開發,絕大多數的程式和網站項目都是由這種流行語言寫成。

由於 PHP 如此受歡迎,任何網站開發人員幾乎都不能不認識 PHP,這份教程是為那些剛剛完成了 PHP 的學習初階,捲起衣袖準備大幹一番的人,下面列出的十個優秀技巧,是 PHP 開發人員必須學習,並在每次編程時使用它們,這些提示可以加快你們對 PHP 的熟練,使程式碼跑得更快捷,更簡潔,性能上更優化。

1. 使用 SQL 注入攻擊作弊表

SQL 注入攻擊是一種非常令人厭惡的東西,它是一種安全漏洞,允許黑客利用程式碼中的漏洞潛入你的數據庫。雖然本文與 MySQL 無關,不過許多 PHP 程式使用 MySQL 數據庫,若果你要寫安全的程式碼,懂得什麼情況需要避開是很有用的。

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

這裡有一篇 Tsung 轉載的「PHP 程式效能優化的 40 條建議」,覺得很不錯,例如使用 str_replace > preg_replace, 但是 strtr 又比 str_replace 快, $row['id'] 比 $row[id] 快 7 倍, 雖然有些龜毛了點, 偶爾注意一下也不錯,提供給有興趣的朋友參考一下。

原文: 40 Tips for optimizing your php code

轉載自翻譯: 優化PHP程式的40條建議

1.如果一個方法可靜態化,就對它做靜態聲明。速率可提升至4倍

2.echo 比 print 快

優購雲端科技 發表在 痞客邦 留言(0) 人氣()

  雖然 PHP 有附 PDFlib,不過使用起來實在有點複雜。







優購雲端科技 發表在 痞客邦 留言(0) 人氣()

«12 3