• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    PHP 應用技巧七則

    發布: 2007-7-14 19:53 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 12次 | 進入軟件測試論壇討論

    領測軟件測試網


    PHP (Hypertext Preprocessor)是一種 HTML 內嵌式的語言,也是目前比較流行的網頁編程語言。它支持的后端數據庫種類凡多,幾乎含蓋了當前的所有數據庫系統。同時它包含了一般語言有的數學運算、時間處理、文件系統、字符串處理、行程處理等功能,再加上它是免費的系統,使得成本與效益比,幾乎等于無限大。

    下面是我在用PHP做網站時,總結出一些小技巧,拿出來饗以大家。

    1、判斷某個函數是否被支持

    由于在PHP中我們可以靈活的使用增加或者減少php支持的模塊,所以有的時候我們在使用PHP之前,總是會首先確定某個模塊是否被加載,比如,看看GD圖形模塊是否被支持,可以用下面的這段代碼:

    if(!function_exists('imagecreate')) {
    die('這個主機目前不支持GD圖形模塊');
    }
    ?>

    同樣的道理,我們可以利用類似的代碼,測試 MSSQL,OCI等模塊是否被支持。

    2、在字符串中把網址改成超級鏈接

    在網頁中提交表單時,經常在提交的說明文本中出現一些網址,比如個人主頁等信息,如果在顯示時自動將其轉為超級鏈接,那將是一件很愜意的事,就像用WORD編輯文檔時自動出現超級鏈接一樣。下面這段代碼就很好的實現了其功能。

    $string = "連接賽迪網http://www.ccidnet.com 站點";
    //注意:連接后需要有個空格或回車。
    $string = eregi_replace("http://([^ ,rn]*)","<a href={CONTENT} tarrget=_blank>{CONTENT}</a>",$string);
    $string = eregi_replace("ftp://([^ ,rn]*)","<a href={CONTENT} target=_blank>{CONTENT}</a>",$string);
    print $string;
    ?>

    3、用PHP處理多個同名復選框

    如果一個表單中有多個同名復選框,在提交到php時卻只有一個值,而并不像asp那樣是一串用逗號分割的值。解決的方法是利用數組。將復選框的name后面加上[],例如: 改為:。這樣php將得到一個叫pp的陣列。在提交的表單中先用Count(pp)來判斷數組的個數即選中的個數,然后對數組進行分別處理就行了。

    同樣的道理也適應于處理下拉框的多選問題。

    4、利用static實現表格的顏色隔行顯示

    我們用PHP從數據庫查詢數據,并將結果輸出到瀏覽器上,如果結果有很多行,表格的bgcolor(背景色)如果全是單色的,瀏覽者會感覺不太舒服。那么怎樣做使表格各行的顏色不同呢?請看下面代碼:

    function getcolor()
    {
    static $colorvalue;//定義一個靜態變量
    if($colorvalue=="#eeeeee")
    $colorvalue="#F5F5F5";
    else $colorvalue="#eeeeee";
    return($colorvalue);
    }
    print("<table border=1>n");//下面輸出10行
    for($i=0;$i<10;$i++)
    {
    $bcolor=getcolor();//換背景顏色
    print("<tr bgcolor=$bcolor>n");
    print("<td>$i</td>n");
    print("</tr>");
    }
    print("</table>n");
    ?>

    說明:

    此程序中定義了一個靜態變量static $colorvalue意思是在函數調用結束后,此變量$colorvalue還保留值,沒有消失。當再次調用getcolor()函數時,變量$colorvalue的值是上次函數調用結束時$colorvalue的值。

    5、在php中避免重復引用的辦法

    大家知道,在C語言中,我們可以用#define來定義一個MACRO名字,通過檢查是否該MACRO名字定義過來決定該頭文件是否被引用。在PHP中也有同樣的問題,比如:A引用B,C, B引用C,如果不采取措施,C將被引用2次。這樣可能會導致一些奇怪的問題。解決辦法:定義一個全局變量,并且通過檢查該變量是否定義過來解決這個問題.辦法很簡單,類似C。 只是這個全局變量我建議都用['user_packages'] ['headfilename']的命名規則。

    if (!empty($GLOBALS['FOODTAILS']['GLOBALDEFINE'])) return;
    $GLOBALS['FOODTAILS']['GLOBALDEFINE'] = true;
    class FOODTAILS {...
    };
    ?>

    另外,在主程序中盡量采用require_once "headfiles.php"; 以避免重復引用。

    6、如何避免表單的重復提交

    我們在做網站時,常常為一些灌水文章而煩惱。有時,由于網絡狀況等原因用戶不知道提交是否成功,也會再次提交同一份表單,這就造成了表單的重復提交不起。有一個簡單的方法可以避免同一表單的重復提交。 首先,先定義一個session變量用來保存一個表單的提交序列號。這里我定義為“$userLastAction”。然后在表單里加入一個hidden變量,把值設為$userLastAction+1:> 最后,在處理提交之前判斷表單是否已被提交過。

    if($lastAction>$userLastAction){
    $userLastAction++; // 序列號加1
    // 處理表單數據
    }
    ?>

    這個技巧的主要原理是不允許用戶回退后再次提交,也就是說回退后修改再提交也是不允許的,但是還是不能避免Ctrl-C/Ctrl-V的灌水辦法。

    7、下載文件的下載次數回填

    我們在下載軟件時,經常會看到此軟件的下載統計次數,而這些統計數給網站管理員分析軟件的受歡迎程度帶來了方便。其實現原理是:在后端數據庫中存放軟件的唯一標識和下載數,在用戶下載軟件時,首先更新對應軟件的下載次數即下載次數加1,然后再到下載文件上正式開始下載。請看下面的實現代碼:

    a、先建一數據表download (后端用MySql)

    download表中含有下列兩個字段:

    id    下載的文件的唯一標識

    downnum 下載次數,默認值為0

     

    b、實現

    假設已經從數據庫取出:描述文件名 五筆字型 ;下載文件名:wbzx.zip ;標識號id值為2

    處理后生成的超級鏈接代碼為:

    五筆字型

    下面的代碼download.php處理下載次數累計及根據傳遞的文件名定位下載文件。

    //連接Mysql數據庫代碼略
    $res=mysql_query("update download set downnum=(downnum+1) where id='$id'" ,$db);
    header("location:$filename");
    ?>

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>