搜尋
首頁後端開發php教程PHP高级技巧全放送(上)_PHP

全球超过300万个互联网网站的管理员都在使用PHP使得它成为最为普及的服务器端脚本语言之一。其特点是运行速度快、稳定可靠、跨平台而且是开放源代码软件。随你使用的水平不同PHP可以很简单也可以很复杂可以只使用它发送HTML表格元素还可以在PHP应用程序中集成Java和XML。 

如果你对PHP有一定的了解或者看过一些初步的教材
这些技巧可以扩展你对PHP的认识使你掌握一些常见的和高级的PHP功能。 

一、把PHP安装为Apache的DSO 

PHP在Linux
/Unix平台上经常与Apache搭配使用在安装PHP时有三种安装方式可供选择静态模式、动态模式DSO、CGI二进制模式。 

由于易于维护和升级
我强烈建议以DSO方式安装PHP。例如初次安装时如果安装的PHP仅支持数据库随后希望再安装支持加密的模块只要运行“make clean”添加新的配置选项然后再运行“make”和“make install”即可一个新的PHP模块就会安装在Apache中适当的位置上然后重新启动Apache而无需重新编译Apache。 

下面的步骤将安装一个全新的Apache
并以DSO方式安装PHP 

1、从Apache软件基金会得到最新版本的Apache源代码
 

2、把得到的源代码放到
/usr/local/或者/opt/目录下或者你指定的任意目录中 

3、运行Gunzip对文件进行解压缩
得到后缀为.tar的文件 

4、运行下面的命令
把文件安装到apache_[version]目录中 

tar
-xvf apache_[version].tar 

5、进入
/usr/local/apache_[version]目录或者在步骤4中安装压缩文件的目录 

6、键入下面的命令为编译Apache作准备
用你自己的路径替换其中的[path]例如/usr/local/apache[version]现在已经设置了mod_so的新值它将允许Apache使用DSO模块 

7、回到提示符状态后键入make
并等待再次回到提示符状态 

8、执行“make install”命令。 

至此
Apache已经安装完毕系统将重回到提示符状态。接下来我们开始安装PHP 

1、在PHP主页的下载区中找到最新版本的链接
 

2、把文件下载到一个适当的目录中
例如/usr/local//opt/或者你指定的任意目录中 

3、运行Gunzip对文件进行解压缩
得到后缀为.tar的文件 

4、执行下面的命令把文件安装在php
-[version]目录中 

tar
-xvf php-[version] 

5、进入
/usr/local/php-[version]目录或在步骤4中指定的目录 

至此
已经作好了以DSO方式安装PHP的准备工作唯一需要修改的配置选项是with-apxs这是Apache的bin目录中的一个文件。为了得到较高的性能我没有安装对MySQL的支持模块。 

.
/configure --with-mysql=/[path to mysql] --with-apxs=/[path to apxs] 

6、回到提示符状态后执行make命令
等待重新返回到提示符状态 

7、执行make install命令。 

至此
系统以DSO方式在Apache的模块目录中安装了PHP并对Apache的httpd.conf文件作适当的修改后返回到提示符状态。回到提示符状态后你还需要对Apache的httpd.conf文件作一些修改。 

1、找到包含有ServerAdmin的一行
添加你的电子邮件地址如下所示 

ServerAdmin you
@yourdomain.com 

2、找到以ServerName开头的行
把它改为真正的值例如 

ServerName localhost 

3、找到内容如下所示的小节


# And for PHP 4.x, use: 



#AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps 

修改这些行的内容,使PHP 4.0的AddType不再成为注释,并添加希望在PHP中使用的文件后缀名,上面的内容变为如下所示的内容:

# And for PHP 4.x, use: 



AddType application/x-httpd-php .php .phtml 

AddType application/x-httpd-php-source .phps 

保存文件,回到上一级目录,执行下面的命令重新启动Apache: 

./bin/apachectl start 

如果在启动时没有出现错误提示信息,就可以通过创建一个名为phpinfo.php的只有如下所示一行内容的文件,对安装的Apache、PHP进行测试: 

phpinfo()
?> 

把这个文件保存到Apache的文档根目录
htdocs然后开启浏览器键入http://localhost/phpinfo.php地址,屏幕上就会出现许多的变量和它们的值。 

如果要重新配置PHP,需要再次运行make clean命令,然后执行带有一系列选项的./configure命令,然后再执行make和make install命令,Apache的目录模块中就会出现一个新的模块,只要再重新启动Apache加载这个新的模块,就一切OK了。 

二、使用PHP本身的对话 

PHP 4.0中最令人期待的特性应该是对对话的支持,PHP 3.0的用户必须使用第三方的软件否则就不能使用对话,不支持对话一直是PHP最大的缺憾之一。 

只要用户在浏览你的网站,你就可以利用对话维护与特定用户有关的变量,而无需建立多个cookie、使用隐藏表格字段或将信息存储在数据库中。 

在一个网页上启动一个对话,就会使PHP引擎知道你想启动一个对话(如果还没有启动)或者继续当前的对话: 

session_start(); 

启动一个对话将通过cookie向用户发送一个识别字符串(例如940f8b05a40d5119c030c9c7745aead9),在服务器端,会创建一个与识别字符串匹配的临时文件,例如sess_940f8b05a40d5119c030c9c7745aead9,这个文件中包含注册的对话变量以及它们的值。 

用来显示对话的作用的最常见的例子是访问计数器。启动PHP模块,确保PHP代码是文件的第一行,在PHP代码之前不要有空格、HTML代码和其他的代码。因为对话会发送一个头部,因此如果在session_start()之前有空格和HTML代码,就会得到一个出错信息。 

 

// 如果还不存在一个针对某用户的用户,则启动一个对话: 

session_start(); 

然后注册一个名字为count的变量: 

session_register('count'); 

注册一个对话变量后,只要对话存在,名字为count的变量也就存在。现在,count变量还没有被赋值,如果对它执行加1操作,它的值就变为了1。 

$count++; 

把上述内容综合在一块儿,如果还没有启动一个对话,就会启动一个对话;如果不存在一个对话id,就为用户指定一个好了,注册一个名字为$count的变量,对$count执行加1操作表示用户已经首次访问了该网页。 

要知道用户在当前的对话中访问本页面的次数,只要显示$count变量的值即可: 

echo "

You've been here $count times.

"; 

全部的访问计数器代码如下所示: 

 

session_start(); 

session_register('count'); 

$count++; 

echo "

You've been here $count times.

"; 

?> 

如果重新加载上述的脚本文件
就会发现变量count的值增加了1很酷吧。 

还可以在对话中注册一个数组变量
假设我们注册了一个名字为$faves的变量 

$faves
= array ('chocolate','coffee','beer','linux'); 

可以象注册一个简单变量那样注册一个数组变量
 

session_register
('faves'); 

引用数组变量与引用简单变量没有什么二样
如果一个用户在网页上指出在生活中的爱好时可以把他的爱好注册到一个被称作$faves的数组变量中然后可以在另一个网页中很方便地把这些爱好显示出来 

 

session_start
(); 

echo "My user likes: 

    "
;

while (list(,$v) = each ($faves)) { 

echo "
  • $v"
  • ; } 

    echo ""; 

    ?> 

    然后你就得到了一个关于用户爱好的清单。 

    对话变量不能被查询字符串覆盖
    也就是说我们不能输入http:///www.yourdomain.com/yourscript.php?count=56给注册变量$count指定一个新值,这一点对于安全很重要:只能在服务器端的脚本中删除一个没有注册的对话变量。 

    如果要完全删除一个对话变量,首先需要从系统中注销它: 

    session_unregister('count'); 

    要完全删除一个对话变量的脚本是非常简单,如下所示: 

    session_destroy(); 

    使用对话变量可以减少访问数据库的频率,使代码更加清晰,而且可以减少对用户发送的cookie的数量,它是最简单的方法了。 

    三、文件是我们的朋友

    无论你在开发的网站规模的大小,都应该意识到代码重用的重要性,无论这些代码是HTML、还是PHP代码。例如,你必须至少每年改变一次包含版权信息的页脚,如果你的网站含有1000个页面,每年修改一次也是个很烦人的事儿。

    在PHP中,至少有几个函数可以帮助你实现代码重用的目的,所使用的函数取决于你所重用的代码,主要的函数有:

    * include() and include_once()

    * require() and require_once()

    include()函数包含并对给定的文件进行计算,例如:

    include('/home/me/myfile');

    在include文件中的任何代码都在include()出现的代码范围内执行,你可以通过联合使用include()和fopen()在自己的服务器上包含静态文件,在另一台服务器上包含目标文件。

    include_once()的功能与include()相同,二者之间的区别在于它会检查一个文件中的代码是否已经包含在现有的脚本中,如果代码已经存在,则不会再次包含它。

    require()函数用给定文件的内容取代它本身,这一代替过程发生在PHP引擎编译代码期间,而不是在执行期间进行,它不象include()那样会首先进行计算。require()函数更多地用在静态元素中,而include()更多地用于动态元素中。与include_once()类似的是,require_once()将首先检查是否已经插入给定的代码,如果代码已经存在,就不再插入了。

    为也了解其内容,在版权信息、静态文字和其他不包含变量的元素或者依赖其他正在执行的脚本的元素中我更趋向于使用require函数。例如:



    Something



    [a lot of content]



    // insert copyright

    require('/home/me/mycopyright');

    ?>

    /BODY>

    /HTML>

    另一方面
    我经常在文件的开始使用include()来控制许多的函数



    //得到函数库

    include('/home/me/myfunctions');

    // do PHP things with my functions
    ?>

    HTML>

    HEAD>TITLE>Something/TITLE>/HEAD>

    BODY>

    [a lot of content]

    /BODY>

    /HTML>

    下一个问题就该是“
    includerequire文件在哪里对这个问题简单的回答是“系统中的任意地方。”如果你的代码中包含有带有用户名和口令的数据库连接你肯定不会将它们都放在文档根目录中向所有的人都开放。

    included或required文件可以在系统上的任何地方
    只要PHP运行的系统上的用户可以访问这些文件即可你可以使这些文件具有任何后缀或者不使用后缀。

    使用
    include()require()对在网站中的元素进行具体化是一种普遍的现象并在需要对网站升级时给你带来很大的方便。

    四、PHP和文件系统的维护

    PHP中有许多与文件系统有关的函数
    这些函数不仅可以打开文件还可以显示目录中的内容、移动文件和其他一些功能许多人甚至用PHP开发基于互联网的文件资源管理器。

    关于文件路径的解释
    在Windows中可以在路径中使用/和符号而在其他的操作系统中只能使用/符号。出于一致性的缘故我们统一使用/符号。

    下面的脚本样例可以显示一个目录清单
    注释已经包含在代码中

    /*把要读取的目录的全路径名存入一个名字为$dir_name的变量中。 */

    $dir_name
    = "/home/me/";

    /* 创建一个句柄,其值是打开一个给定目录的结果*/

    $dir
    = opendir($dir_name);

    /* 建立一个文字块,用以放置列表元素(文件名字)*/

    $file_list
    = "
      "
    ;

    /* 使用一个while语句,读取已经打开的目录中的所有元素,如果文件的名字不是“.”或“..”,则显示列表中的名字*/

    while ($file_name = readdir($dir)) {

    if (($file_name != ".") && ($file_name != "..")) {

    $file_list .
    = "
  • $file_name"
  • ;

    }

    }

    $file_list .
    = "";

    /*关闭打开的目录,结束PHP模块*/

    closedir
    ($dir);

    ?>

    !-- Start your HTML -->

    HTML>

    HEAD>

    TITLE>Directory Listing/TITLE>

    /HEAD>

    BODY>

    !-- Use PHP to print the name of the directory you read -->

    P>Files in: echo "$dir_name"; ?>/p>

    !-- Use PHP to print the directory listing -->

    echo "$file_list"; ?>

    /BODY>

    /HTML>

    好了
    我们已经得到了一个目录清单。需要注意的是要读取一个文件稍后我们将进行讲解或目录的内容PHP运行的系统上的用户必须至少有读取文件的权限。

    下面是一个如何拷贝文件的例子


    /*把你要拷贝的原文件的全路径赋给一个名字为$original的变量中把拷贝的文件的全路径赋予一个

    陳述
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    PHP電子郵件:分步發送指南PHP電子郵件:分步發送指南May 09, 2025 am 12:14 AM

    phpisusedforsendendemailsduetoitsignegrationwithservermailservicesand andexternalsmtpproviders,自動化intifications andMarketingCampaigns.1)設置設置yourphpenvenvironnvironnvironmentwithaweberswithawebserverserververandphp,確保themailfunctionisenabled.2)useabasicscruct

    如何通過PHP發送電子郵件:示例和代碼如何通過PHP發送電子郵件:示例和代碼May 09, 2025 am 12:13 AM

    發送電子郵件的最佳方法是使用PHPMailer庫。 1)使用mail()函數簡單但不可靠,可能導致郵件進入垃圾郵件或無法送達。 2)PHPMailer提供更好的控制和可靠性,支持HTML郵件、附件和SMTP認證。 3)確保正確配置SMTP設置並使用加密(如STARTTLS或SSL/TLS)以增強安全性。 4)對於大量郵件,考慮使用郵件隊列系統來優化性能。

    高級PHP電子郵件:自定義標題和功能高級PHP電子郵件:自定義標題和功能May 09, 2025 am 12:13 AM

    CustomHeadersheadersandAdvancedFeaturesInphpeMailenHanceFunctionalityAndreliability.1)CustomHeadersheadersheadersaddmetadatatatatataatafortrackingandCategorization.2)htmlemailsallowformattingandttinganditive.3)attachmentscanmentscanmentscanbesmentscanbestmentscanbesentscanbesentingslibrarieslibrarieslibrariesliblarikelikephpmailer.4)smtppapapairatienticationaltication enterticationallimpr

    使用PHP和SMTP發送電子郵件的指南使用PHP和SMTP發送電子郵件的指南May 09, 2025 am 12:06 AM

    使用PHP和SMTP發送郵件可以通過PHPMailer庫實現。 1)安裝並配置PHPMailer,2)設置SMTP服務器細節,3)定義郵件內容,4)發送郵件並處理錯誤。使用此方法可以確保郵件的可靠性和安全性。

    使用PHP發送電子郵件的最佳方法是什麼?使用PHP發送電子郵件的最佳方法是什麼?May 08, 2025 am 12:21 AM

    ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

    PHP中依賴注入的最佳實踐PHP中依賴注入的最佳實踐May 08, 2025 am 12:21 AM

    使用依賴注入(DI)的原因是它促進了代碼的松耦合、可測試性和可維護性。 1)使用構造函數注入依賴,2)避免使用服務定位器,3)利用依賴注入容器管理依賴,4)通過注入依賴提高測試性,5)避免過度注入依賴,6)考慮DI對性能的影響。

    PHP性能調整技巧和技巧PHP性能調整技巧和技巧May 08, 2025 am 12:20 AM

    phpperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovessetimes.2)優化

    PHP電子郵件安全性:發送電子郵件的最佳實踐PHP電子郵件安全性:發送電子郵件的最佳實踐May 08, 2025 am 12:16 AM

    ThebestpracticesforsendingemailssecurelyinPHPinclude:1)UsingsecureconfigurationswithSMTPandSTARTTLSencryption,2)Validatingandsanitizinginputstopreventinjectionattacks,3)EncryptingsensitivedatawithinemailsusingOpenSSL,4)Properlyhandlingemailheaderstoa

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    VSCode Windows 64位元 下載

    VSCode Windows 64位元 下載

    微軟推出的免費、功能強大的一款IDE編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    mPDF

    mPDF

    mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver Mac版

    Dreamweaver Mac版

    視覺化網頁開發工具