目前分類:PHP (21)

瀏覽方式: 標題列表 簡短摘要

考題不會太難,而且完全沒考到物件觀念,感覺比較像PHP4的考試啦!

已下是憑回憶列出的題目:

1.請說明GET和POST的不同

2.請說明MVC架構,和妳知道的幾種MVC framework

3.列出以下結果畫面並說明

    $str= "03/26/2010";
    echo ereg_replace("{[0-9]*}/{[0-9]*}/{[0-9]*}", "\\2/\\1/\\3", $str);


4.
說明sort() asort() ksort()的不同

5.HTTP Redirect的指令要如何寫,例如將http://xxx/a.php 轉到http://xxx/b.php

6.HTTP rewrite和HTTP Redirect的差異,如果要將網址rewrite http://xxx.xx.xx/index.php轉到http://xxx.xx.xx/index.php?lang=jp要如何設定?

7.要把以下的 apache log彙整各網址的總數,請用linux語法列出統計

miggo 發表在 痞客邦 留言(2) 人氣()

PHP函數太好用了,例如陣列的排序,通常都用sort()或asort()就處理掉了

導致很多基礎都忘掉了,把基礎的東西[排序]撿起來練習一下

以下是氣泡排序法的實作,重點在 list + each 的交換技巧

<?

function bubble_sort(&$array){

    $num = count($array);

    //只是做迴圈
    for($i = 0 ; $i < $num ; $i++){

        //從最後一個數字往上比較,如果比較小就交換
        for($j = $num-1 ; $j > $k ; $j--){

            if($array[$j] < $array[$j-1]){

                //交換兩個數值的小技巧,用list+each

miggo 發表在 痞客邦 留言(0) 人氣()

有沒有想過,如果程式採用以下的資料庫連線方式

include("db.php");

$db = new DB();

$db->query(.....);

 

如果開啟五個頁面,資料庫會重新new五個資料庫連線去做連接動作,連線數應該會爆漲吧!

有沒有改進的方式?

可採用singleton模式來改寫成如下:

class DB
{
    private static $_conn = null;
        static function getInstance(){

miggo 發表在 痞客邦 留言(0) 人氣()

如果已取得字串,例如:

 

$content =  fread($fp , "a+");

第一個字元就是 $content{0}

以此類推

 

轉成16進位顯示,可以用

hexdec($content{0}) ;

 

如果要再將每個字元合併,可用

chr(hexdec($content{0})) . chr(hexdec($content{1}));

 

miggo 發表在 痞客邦 留言(0) 人氣()


(1).self
是參照到目前的class,$this是參照到目前的object ( 已經被宣告的實體上 )

(2).self 可使用在static上,$this不行

static method 因為沒有物件的實體,所以需要注意不可以使用 $this ,要用self::
可以直接存取 static method ( 如self::method() ),但是無法直接存取 static property 中的預先宣告的值

(3). 可用 new self() 呼叫自己

 

以下是(1)的範例:

<?
class name

miggo 發表在 痞客邦 留言(7) 人氣()

php環境設定

 

//程式串寫時建議將error_report全部開啟,已嚴謹方式進行撰寫

error_report(E_ALL);

 

//正式上線的production請務必設定此項,避免錯誤回報

ini_set("display_errors","0");

 

//啟用錯誤log紀錄

ini_set("log_errors","1");

 

//POST/GET/SESSION/COOKIE變數分開,PHP 5以後預設為關閉的

miggo 發表在 痞客邦 留言(0) 人氣()

 

以往在多國語系的寫法支 援上

通常是寫在程式內,例如 以下此種寫法和設定

$lang = “zh_TW”;

$lang_file = “$lang” . “.php”

Include_once(“./lang/$lang_file”);

 

另外一種方法,則是採用 系統語系檔的支援方式

此種方式比較上一種的方 法,優點是可自動擷取程式內需處理的字串,如程式內使用gettext函數,用系統指令xgettext就可自動產生PO檔^^

 

可以嘗試以下的簡單範 例:

<?php

miggo 發表在 痞客邦 留言(0) 人氣()

 

php的變數不用指定,就 可以在各種型態中轉換

 

例如:


$str = '1234'; //為字串

$str = 1234; //為整數

 

 

如果要強制型態,則直接指定型別


miggo 發表在 痞客邦 留言(0) 人氣()

網頁作檔案傳輸,能不能不要用 html預設元件?

 

其實是可以的喔,直接利用 Zend 函數就可達到檔案傳輸效果

這裡要抱怨一 下Zend的文件中有錯誤啦....

 $client->submit('POST');

根本就不能用.....


以下是實作方法:

 <?php

require_once 'Zend/Http/Client.php';

miggo 發表在 痞客邦 留言(0) 人氣()

如何用Zend函數模擬出表格資料送出到下一頁呢?

以下是可實作的程式:

 

 <?php

require_once 'Zend/Http/Client.php';

 

//Zend_Http_Client 宣告

$client = new Zend_Http_Client();

 

//設定要送出資料到哪個網址

$client->setUri('http://localhost/test/zend_post/test1.php');

 

miggo 發表在 痞客邦 留言(0) 人氣()

就是 pam_auth!

 

找很久終於找到了

麻煩的是系統需安裝....好像要用到sudo給系統權限

使用方式倒是很簡單:

 <?

$username = "account" ;

$password = "password" ;

$error = "NO OK";

if (pam_auth($username, $password, &$error)) {

    echo "OK";

} else {

miggo 發表在 痞客邦 留言(1) 人氣()

好用的小程式

$from  = 'USD';  // 美元  

$to     = 'TWD'; // 新台幣  

//重點只有這行 知道匯率擷取的位址

$uri = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s='. $from . $to .'=X';  

 

$content = file_get_contents($uri);  

$content = explode(',', $content);  

echo "$from => $to 匯率: ".$content[1];

echo "<br>";

echo "匯率擷取時間: ".$content[2].$content[3];

$rate = $content[1];

miggo 發表在 痞客邦 留言(0) 人氣()

使用Zend_mail在utf-8編碼的郵件中

通常寫法是這樣

     $mail = new Zend_Mail('utf-8');

    $mail->setBodyText('測試信件');

    $mail->setBodyHtml($str);

    $mail->setFrom('aaa@xxx.com');

    $mail->addTo($email, $email);

    $mail->setSubject('測試信件');

    $mail->send();

 

在信件的主旨內容如太長,就會出現亂碼

可修改成以下的:

miggo 發表在 痞客邦 留言(0) 人氣()

 

接下來就是把上篇所定義的Controller 程式的實作

 

一、先把網站內,所有網頁的處理,引導到index.php中作控制

很簡單的設定 [.htaccess] 就可達到這目的了

RewriteEngine on

RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

 

語法是很簡單的

可以嘗試打任一的php網頁,都會導向index.php作處理

但是$_SERVER["REQUEST_URL"]還是使用者要求的網頁喔~~這點很重要

因為開發的物件,就要利用這點來進行撰寫

miggo 發表在 痞客邦 留言(0) 人氣()

剛接觸MVC的各種framework時(例如CakePHP)

最感困惑的就是程式的架構方式

以MVC的整體架構而言,是由Controller進行掌控的

這樣講或許有點模糊,以下是常見到的MVC架構圖


MVC.PNG


Controller 是程式的進入點,掌控整體流程,也是事件的觸發器 

或許這樣講有點模糊,清楚的用"輸入"與"想要的輸出"來表示,可能會清楚很多

miggo 發表在 痞客邦 留言(0) 人氣()

前言:研究PHP MVC的動機

從最早接觸的PHP 3.x 版本,開發時都是採用html + php 程式的方式進行

我想這就不用談了,大部分剛開始的PHP教學書籍,都是採用此種寫法作介紹吧!

較進階的是使用Smarty,程式和視覺分開撰寫,感覺上比較有系統,

優點非常明顯,就是視覺和程式的同步修改,彼此的影響干擾很小

但在陸續執行幾個網站後,慢慢就發現僅是Smarty的架構是不夠的~

採用Smarty的程式,大略是長成這樣的

 

網址傳入

 http://www.xxx.com/message.php?EditMode=edit

 

message.php內容長的像這樣子:

miggo 發表在 痞客邦 留言(0) 人氣()

網頁charset採用UTF-8編碼,理論上JavaScript alert訊息應該也是UTF-8的

但實際上如果頁面沒有header,採用的編碼預設以預設為主

經常會出現亂碼狀況

有指定Script的編碼

 <script charset="UTF-8">

 似乎無效

解決方式有:

1.alert訊息前,加入meta的編碼設定,可是需每個程式修改,不是很好的方法。

2.更改php.ini預設編碼

 ; PHP's built-in default is text/html

default_mimetype = "text/html"

miggo 發表在 痞客邦 留言(2) 人氣()

Kiwi格網技術開發站(進階php程式設計-介紹MVC與Cakephp)

 http://kiwi.csie.chu.edu.tw/blog/archives/39

透視 WebMVC

http://www.jaceju.net/resources/webmvc/


miggo 發表在 痞客邦 留言(0) 人氣()

好文章紀錄:

http://www.ichiayi.com/wiki/tech/mantis_coding

 


miggo 發表在 痞客邦 留言(0) 人氣()

今天上傳將PHP程式,上傳到一台虛擬主機中

出現以下的錯誤訊息

Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in /home/XXX/XXX/inc_log.php on line 6

檢查一下,原來是PHP不建議此種寫法

function aaa($id){ }

aaa(&$id);

 

要修改成以下方式就可以了

function aaa(&$id){ }

aaa($id);

 

解決方法還可以將php.ini中

miggo 發表在 痞客邦 留言(0) 人氣()

1 2