検索

全球超过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 までご連絡ください。
    提高 Python 代码可读性的五个基本技巧提高 Python 代码可读性的五个基本技巧Apr 12, 2023 pm 08:58 PM

    Python 中有许多方法可以帮助我们理解代码的内部工作原理,良好的编程习惯,可以使我们的工作事半功倍!例如,我们最终可能会得到看起来很像下图中的代码。虽然不是最糟糕的,但是,我们需要扩展一些事情,例如:load_las_file 函数中的 f 和 d 代表什么?为什么我们要在 clay 函数中检查结果?这些函数需要什么类型?Floats? DataFrames?在本文中,我们将着重讨论如何通过文档、提示输入和正确的变量名称来提高应用程序/脚本的可读性的五个基本技巧。1. Comments我们可

    使用PHP开发直播功能的十个技巧使用PHP开发直播功能的十个技巧May 21, 2023 pm 11:40 PM

    随着直播业务的火爆,越来越多的网站和应用开始加入直播这项功能。PHP作为一种流行的服务器端语言,也可以用来开发高效的直播功能。当然,要实现一个稳定、高效的直播功能需要考虑很多问题。下面列出了使用PHP开发直播功能的十个技巧,帮助你更好地实现直播。选择合适的流媒体服务器PHP开发直播功能,首先需要考虑的就是流媒体服务器的选择。有很多流媒体服务器可以选择,比如常

    提高Python代码可读性的五个基本技巧提高Python代码可读性的五个基本技巧Apr 11, 2023 pm 09:07 PM

    译者 | 赵青窕审校 | 孙淑娟你是否经常回头看看6个月前写的代码,想知道这段代码底是怎么回事?或者从别人手上接手项目,并且不知道从哪里开始?这样的情况对开发者来说是比较常见的。Python中有许多方法可以帮助我们理解代码的内部工作方式,因此当您从头来看代码或者写代码时,应该会更容易地从停止的地方继续下去。在此我给大家举个例子,我们可能会得到如下图所示的代码。这还不是最糟糕的,但有一些事情需要我们去确认,例如:在load_las_file函数中f和d代表什么?为什么我们要在clay函数中检查结果

    PHP中的多表关联查询技巧PHP中的多表关联查询技巧May 24, 2023 am 10:01 AM

    PHP中的多表关联查询技巧关联查询是数据库查询的重要部分,特别是当你需要展示多个相关数据库表内的数据时。在PHP应用程序中,在使用MySQL等数据库时,多表关联查询经常会用到。多表关联的含义是,将一个表中的数据与另一个或多个表中的数据进行比较,在结果中将那些满足要求的行连接起来。在进行多表关联查询时,需要考虑表之间的关系,并使用合适的关联方法。下面介绍几种多

    Python中简单易用的并行加速技巧Python中简单易用的并行加速技巧Apr 12, 2023 pm 02:25 PM

    1.简介我们在日常使用Python进行各种数据计算处理任务时,若想要获得明显的计算加速效果,最简单明了的方式就是想办法将默认运行在单个进程上的任务,扩展到使用多进程或多线程的方式执行。而对于我们这些从事数据分析工作的人员而言,以最简单的方式实现等价的加速运算的效果尤为重要,从而避免将时间过多花费在编写程序上。而今天的文章费老师我就来带大家学习如何利用joblib这个非常简单易用的库中的相关功能,来快速实现并行计算加速效果。2.使用joblib进行并行计算作为一个被广泛使用的第三方Python库(

    Go语言中的网络爬虫开发技巧Go语言中的网络爬虫开发技巧Jun 02, 2023 am 09:21 AM

    近年来,随着网络信息的急剧增长,网络爬虫技术在互联网行业中扮演着越来越重要的角色。其中,Go语言的出现为网络爬虫的开发带来了诸多优势,如高速度、高并发、低内存占用等。本文将介绍一些Go语言中的网络爬虫开发技巧,帮助开发者更快更好地进行网络爬虫项目开发。一、如何选择合适的HTTP客户端在Go语言中,有多种HTTP请求库可供选择,如net/http、GoRequ

    使用一个神器的指令,能迅速让你的GPT拥有智慧!使用一个神器的指令,能迅速让你的GPT拥有智慧!May 09, 2023 am 08:13 AM

    今天给大家分享二个小技巧,第一个可以增加输出的逻辑,让框架逻辑变的更加清晰。先来看看正常情况下GPT的输出,以用户增长分析体系为例:下来我给加一个简单的指令,我们再对比看看效果:是不是效果更好一些?而且逻辑很清晰,当然上面的输出其实不止这些,只是为了举例而已。我们直接让GPT扮演一个资深的Python工程师,帮我写个学习计划吧!提问的时候只需后面加以下这句话即可!let'sthinkstepbystep接下来再看看第二个实用的指令,可以让你的文章更上一个台阶,比如我们让GPT写一个述职报告,这里

    四种Python推导式开发技巧,让你的代码更高效四种Python推导式开发技巧,让你的代码更高效Apr 22, 2023 am 09:40 AM

    对于数据科学,Python通常被广泛地用于进行数据的处理和转换,它提供了强大的数据结构处理的函数,使数据处理更加灵活,这里说的“灵活性”是什么意思?这意味着在Python中总是有多种方法来实现相同的结果,我们总是有不同的方法并且需要从中选择易于使用、省时并能更好控制的方法。要掌握所有的这些方法是不可能的。所以这里列出了在处理任何类型的数据时应该知道的4个Python技巧。列表推导式ListComprehension是创建列表的一种优雅且最符合python语言的方法。与for循环和if语句相比,列

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    MantisBT

    MantisBT

    Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、