<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >在新版本的 PHP 中使用旧的 PHP 代码</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="PHP 手册" HREF="index.html"><LINK REL="UP" TITLE="简明教程" HREF="tutorial.html"><LINK REL="PREVIOUS" TITLE="处理表单" HREF="tutorial.forms.html"><LINK REL="NEXT" TITLE="下一步做什么?" HREF="tutorial.whatsnext.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="sect1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >PHP 手册</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="tutorial.forms.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >章 2. 简明教程</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="tutorial.whatsnext.html" ACCESSKEY="N" >下一页</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="tutorial.oldcode" >在新版本的 PHP 中使用旧的 PHP 代码</A ></H1 ><P > 现在,PHP 已经发展成为一种流行的脚本语言,可以在很多公共的资源里找到可以在自己的脚本中重新利用的代码。PHP 语言的开发者为向下兼容性下了很多功夫,因此在新版本的 PHP 下,老版本的代码应该可以在不作任何改动的情况下(理想地)运行。不过实际上,还是必须对老的代码做一些改动。 </P ><P > 有可能影响到老版本的代码的最重要的两点改动分别是: <P ></P ><UL ><LI ><P > 取消了旧的 <CODE CLASS="varname" >$HTTP_*_VARS</CODE > 数组(在函数或者方法中原本是全局变量)。PHP <A HREF="http://www.php.net/releases/4_1_0.php" TARGET="_top" >4.1.0</A > 版本引入了如下<A HREF="language.variables.predefined.html#language.variables.superglobals" >超全局数组变量</A >:<CODE CLASS="varname" >$_GET</CODE >、<CODE CLASS="varname" >$_POST</CODE >、<CODE CLASS="varname" >$_COOKIE</CODE >、<CODE CLASS="varname" >$_SERVER</CODE >、<CODE CLASS="varname" >$_FILE</CODE >、<CODE CLASS="varname" >$_ENV</CODE >、<CODE CLASS="varname" >$_REQUEST</CODE > 以及 <CODE CLASS="varname" >$_SESSION</CODE >。老的 <CODE CLASS="varname" >$HTTP_*_VARS</CODE > 数组,诸如 $HTTP_POST_VARS 等,从 PHP 3 就已经开始使用,它们仍然存在。自 PHP 5.0.0 起,长格式的 PHP <A HREF="language.variables.predefined.html" >预定义变量</A >可以通过设置 <A HREF="ini.core.html#ini.register-long-arrays" >register_long_arrays</A > 来屏蔽。 </P ></LI ><LI ><P > 外部变量不再被默认注册为全局变量。也就是说,从 PHP <A HREF="http://www.php.net/releases/4_2_0.php" TARGET="_top" >4.2.0</A > 版开始,<TT CLASS="filename" >php.ini</TT > 中的设置选项 <A HREF="ini.core.html#ini.register-globals" >register_globals</A > 默认值变成了 <SPAN CLASS="emphasis" ><I CLASS="emphasis" >off</I ></SPAN >。建议用以上提到的超全局数组变量来访问这些值。但可能老的脚本、书籍以及教程都可能建立在该设置为 on 的基础上。如果该选项被设置为 on,则可以在 URL <TT CLASS="literal" >http://www.example.com/foo.php?id=42</TT > 中直接使用变量 <CODE CLASS="varname" >$id</CODE >。但不管被设置为 on 还是 off,<CODE CLASS="varname" >$_GET['id']</CODE > 一直有效。 </P ></LI ></UL > </P ><P > 如果希望了解关于这些改动的细节,请参阅“<A HREF="language.variables.predefined.html" >预定义变量</A >”一章以及其中的连接。 </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="tutorial.forms.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >起始页</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="tutorial.whatsnext.html" ACCESSKEY="N" >下一页</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >处理表单</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="tutorial.html" ACCESSKEY="U" >上一级</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >下一步做什么?</TD ></TR ></TABLE ></DIV ></BODY ></HTML >