当前位置:  编程技术>php
本页文章导读:
    ▪php使用ICQ网关发送手机短信       通过ICQ网关发送手机短信的php源程序 代码如下:<?//###########################################################//// For questions and comments// Roland (alias -=: Vlieg :=-)// icq #78354631// mail: vlieg@atoomnet.net//// NB: This scr.........
    ▪PHP分页详细讲解(有实例)       1、前言分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常.........
    ▪php预定义变量使用帮助(带实例)       自 php 4.1.0 起,取得外部变量的首选方法是用下面提及的超全局变量。在此之前,人们要么依赖 register_globals,要么就是长长的预定义 PHP 数组($HTTP_*_VARS)。自 PHP 5.0.0 起,长格式的 PHP 预定.........

[1]php使用ICQ网关发送手机短信
    来源: 互联网  发布时间: 2013-11-30

通过ICQ网关发送手机短信的php源程序

代码如下:

<?
//###########################################################
//
// For questions and comments
// Roland (alias -=: Vlieg :=-)
// icq #78354631
// mail: vlieg@atoomnet.net
//
// NB: This script won't work on free hosting pages, because of the secure mode!
// NB: You must have registered your ICQ# at http://web.icq.com/sms/login/ in order for this script to work
//###########################################################

//****************************************************************\//Config:
$uin=""; //your ICQ number
$passw=""; //your ICQpassWord
$PRefix=""; //sms prefix
$phonenumber=""; //sms phone number
$message = "Hello!"; //sms message

//****************************************************************\// EN: calculate the content length
$contentlength= ( 37+
strlen($uin)+
strlen($passw)
);
//****************************************************************\// Openen van de inlogpagina
// EN: open loginpage
$htmlreply="";
$post ="POST http://web.icq.com/karma/dologin/1,,,00.html HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-Powerpoint, application/vnd.ms-Excel, application/msword, */*
Referer: http://web.icq.com/sms/login/1,,,00.html
Accept-Language: nl
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
Host: web.icq.com
Content-Length: ".$contentlength."
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cookie: uin=".$uin."; sms_country=".$prefix."; KarmaService1=Yes; uin=".$uin."; sms_country=".$prefix."; KarmaService1=Yes
uService=1&uLogin=".$uin."&uPassword=".$passw."&x=0&y=0";
$remote = fsockopen("web.icq.com", 80, &$errno, &$errstr, 30);
global $remote;
global $post;
fputs($remote, $post);
while (!feof($remote)) { $htmlreply.=fgets($remote,120); }
//UNCOMMENT FOR OUTPUT: echo "".htmlspecialchars($htmlreply)."";
fclose($remote);
//****************************************************************\//persoonlijke cookie uit de inlogpage halen
// EN: fetch personal cookie from login page
$splited = split("\n",$htmlreply);
$cookies = $splited[3];
$cookies = str_replace("Set-Cookie: KarmaLogin=","",$cookies);
$cookies = str_replace("; path=/","",$cookies);
$cookies = str_replace("\n","",$cookies);
//UNCOMMENT VOOR OUTPUT: echo $cookies;
if (strlen($prefix) == 2) { $contentprefix = ' '.$prefix; } else { $contentprefix = $prefix; }
$charcount = (160-strlen($message));
$contentlength= ( 1561+
strlen($message)+
strlen($charcount)+
strlen($phonenumber)+
strlen($prefix)
);
//****************************************************************\//Verzendpagina openen met de opgehaalde cookie
// EN: open send page with fetched cookie
$htmlreply="";
$post ='POST http://web.icq.com/sms/send_history/1,,,00.html HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer: http://web.icq.com/sms/send_session/1,,,00.html?prefix=+'.$prefix.'&carrier=&tophone='.$phonenumber.'
Accept-Language: nl
Content-Type: multipart/form-data; boundary=---------------------------7d12442eab4
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
Host: web.icq.com
Content-Length: '.$contentlength.'
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cookie: uin='.$uin.'; sms_country='.$prefix.'; KarmaService1=Yes; KarmaLogin='.$cookies.'; uin='.$uin.'; sms_country='.$prefix.'; KarmaService1=Yes; KarmaLogin='.$cookies.'
-----------------------------7d12442eab4
Content-Disposition: form-data; name="carrier"

-----------------------------7d12442eab4
Content-Disposition: form-data; name="prefix"
'.$contentprefix.'
-----------------------------7d12442eab4
Content-Disposition: form-data; name="tophone"
'.$phonenumber.'
-----------------------------7d12442eab4
Content-Disposition: form-data; name="uSession"
1
-----------------------------7d12442eab4
Content-Disposition: form-data; name="uReply"

-----------------------------7d12442eab4
Content-Disposition: form-data; name="uLastId"

-----------------------------7d12442eab4
Content-Disposition: form-data; name="uSend"
1
-----------------------------7d12442eab4
Content-Disposition: form-data; name="uNextId"

-----------------------------7d12442eab4
Content-Disposition: form-data; name="uHistoryCounter"
1
-----------------------------7d12442eab4
Content-Disposition: form-data; name="count"
0
-----------------------------7d12442eab4
Content-Disposition: form-data; name="uSubmitCount"
0
-----------------------------7d12442eab4
Content-Disposition: form-data; name="checkNewMsg"
180000
-----------------------------7d12442eab4
Content-Disposition: form-data; name="charcount"
'.$charcount.'
-----------------------------7d12442eab4
Content-Disposition: form-data; name="msg"
'.$message.'
-----------------------------7d12442eab4
Content-Disposition: form-data; name="x"
30
-----------------------------7d12442eab4
Content-Disposition: form-data; name="y"
16
-----------------------------7d12442eab4--
';
$remote = fsockopen("web.icq.com", 80, &$errno, &$errstr, 30);
global $remote;
global $post;
fputs($remote, $post);
while (!feof($remote)) { $htmlreply.=fgets($remote,120); }
//UNCOMMENT FOR OUTPUT: echo "".htmlspecialchars($htmlreply)."";
fclose($remote);
//****************************************************************\// check if message is send if send 'moved permanently' is returned
if (eregi('Moved Permanently',$htmlreply))
{ echo "Sms message successfully sent!"; }
else
{ echo "Sms not sent!"; }
?>


    
[2]PHP分页详细讲解(有实例)
    来源: 互联网  发布时间: 2013-11-30

1、前言
分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解。本文适合初学者阅读,所有示例代码均使用php编写。
2、原理
所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:
每页多少条记录($PageSize)?
当前是第几页($CurrentPageID)?
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PReviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以MySQL数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。
前10条记录:select * from table limit 0,10
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10
……
这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:
select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize
拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。
3、简单代码
请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。

代码如下:

<?php
// 建立数据库连接
$link = mysql_connect("localhost", "mysql_user", "mysql_passWord")
      or die("Could not connect: " . mysql_error());
// 获取当前页数
if( isset($_GET['page']) ){
   $page = intval( $_GET['page'] );
}
else{
   $page = 1;
}
// 每页数量
$PageSize = 10;
// 获取总数据量
$sql = "select count(*) as amount from table";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row['amount'];
// 记算总共有多少页
if( $amount ){
   if( $amount < $page_size ){ $page_count = 1; }               //如果总数据量小于$PageSize,那么只有一页
   if( $amount % $page_size ){                                  //取总数据量除以每页数的余数
       $page_count = (int)($amount / $page_size) + 1;           //如果有余数,则页数等于总数据量除以每页数的结果取整再加一
   }else{
       $page_count = $amount / $page_size;                      //如果没有余数,则页数等于总数据量除以每页数的结果
   }
}
else{
   $page_count = 0;
}

// 翻页链接
$page_string = '';
if( $page == 1 ){
   $page_string .= '第一页|上一页|';
}
else{
   $page_string .= '<a href=/blog_article/page/1/gt;第一页/lt;/a/gt;_/lt;a.html href=/blog_article/page/.html'.($page-1).'>上一页</a>|';
}
if( ($page == $page_count) || ($page_count == 0) ){
   $page_string .= '下一页|尾页';
}
else{
   $page_string .= '<a href=/blog_article/page/.html'.($page+1).'>下一页</a>|<a href=/blog_article/page/.html'.$page_count.'>尾页</a>';
}
// 获取数据,以二维数组格式返回结果
if( $amount ){
   $sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
   $result = mysql_query($sql);

   while ( $row = mysql_fetch_row($result) ){
       $rowset[] = $row;
   }
}else{
   $rowset = array();
}
// 没有包含显示结果的代码,那不在讨论范围,只要用foreach就可以很简单的用得到的二维数组来显示结果
?>


4、OO风格代码
以下代码中的数据库连接是使用的pear db类进行处理
代码如下:

<?php
// FileName: Pager.class.php
// 分页类,这个类仅仅用于处理数据结构,不负责处理显示的工作
Class Pager
{
   var $PageSize;             //每页的数量
   var $CurrentPageID;        //当前的页数
   var $NextPageID;           //下一页
   var $PreviousPageID;       //上一页
   var $numPages;             //总页数
   var $numItems;             //总记录数
   var $isFirstPage;          //是否第一页
   var $isLastPage;           //是否最后一页
   var $sql;                  //sql查询语句

  function Pager($option)
   {
       global $db;
       $this->_setOptions($option);
       // 总条数
       if ( !isset($this->numItems) )
       {
           $res = $db->query($this->sql);
           $this->numItems = $res->numRows();
       }
       // 总页数
       if ( $this->numItems > 0 )
       {
           if ( $this->numItems < $this->PageSize ){ $this->numPages = 1; }
           if ( $this->numItems % $this->PageSize )
           {
               $this->numPages= (int)($this->numItems / $this->PageSize) + 1;
           }
           else
           {
               $this->numPages = $this->numItems / $this->PageSize;
           }
       }
       else
       {
           $this->numPages = 0;
       }

       switch ( $this->CurrentPageID )
       {
           case $this->numPages == 1:
               $this->isFirstPage = true;
               $this->isLastPage = true;
               break;
           case 1:
               $this->isFirstPage = true;
               $this->isLastPage = false;
               break;
           case $this->numPages:
               $this->isFirstPage = false;
               $this->isLastPage = true;
               break;
           default:
               $this->isFirstPage = false;
               $this->isLastPage = false;
       }

       if ( $this->numPages > 1 )
       {
           if ( !$this->isLastPage ) { $this->NextPageID = $this->CurrentPageID + 1; }
           if ( !$this->isFirstPage ) { $this->PreviousPageID = $this->CurrentPageID - 1; }
       }

       return true;
   }

   /***
    *
    * 返回结果集的数据库连接
    * 在结果集比较大的时候可以直接使用这个方法获得数据库连接,然后在类之外遍历,这样开销较小
    * 如果结果集不是很大,可以直接使用getPageData的方式获取二维数组格式的结果
    * getPageData方法也是调用本方法来获取结果的
    *
    ***/

   function getDataLink()
   {
       if ( $this->numItems )
       {
           global $db;

           $PageID = $this->CurrentPageID;

           $from = ($PageID - 1)*$this->PageSize;
           $count = $this->PageSize;
           $link = $db->limitQuery($this->sql, $from, $count);   //使用Pear DB::limitQuery方法保证数据库兼容性

           return $link;
       }
       else
       {
           return false;
       }
   }

   /***
    *
    * 以二维数组的格式返回结果集
    *
    ***/

   function getPageData()
   {
       if ( $this->numItems )
       {
           if ( $res = $this->getDataLink() )
           {      
               if ( $res->numRows() )
               {
                   while ( $row = $res->fetchRow() )
                   {
                       $result[] = $row;
                   }
               }
               else
               {
                   $result = array();
               }

               return $result;
           }
           else
           {
               return false;
           }
       }
       else
       {
           return false;
       }
   }

   function _setOptions($option)
   {
       $allow_options = array(
                   'PageSize',
                   'CurrentPageID',
                   'sql',
                   'numItems'
       );

       foreach ( $option as $key => $value )
       {
           if ( in_array($key, $allow_options) && ($value != null) )
           {
               $this->$key = $value;
           }
       }

       return true;
   }
}
?>
<?php
// FileName: test_pager.php
// 这是一段简单的示例代码,前边省略了使用pear db类建立数据库连接的代码
require "Pager.class.php";
if ( isset($_GET['page']) )
{
   $page = (int)$_GET['page'];
}
else
{
   $page = 1;
}
$sql = "select * from table order by id";
$pager_option = array(
       "sql" => $sql,
       "PageSize" => 10,
       "CurrentPageID" => $page
);
if ( isset($_GET['numItems']) )
{
   $pager_option['numItems'] = (int)$_GET['numItems'];
}
$pager = @new Pager($pager_option);
$data = $pager->getPageData();
if ( $pager->isFirstPage )
{
   $turnover = "首页|上一页|";
}
else
{
   $turnover = "<a href='/blog_article/page/1/amp;numItems/.html".$pager->numItems."'>首页</a>|<a href='/blog_article/page/.html".$pager->PreviousPageID."&numItems=".$pager->numItems."'>上一页</a>|";
}
if ( $pager->isLastPage )
{
   $turnover .= "下一页|尾页";
}
else
{
   $turnover .= "<a href='/blog_article/page/.html".$pager->NextPageID."&numItems=".$pager->numItems."'>下一页</a>|<a href='/blog_article/page/.html".$pager->numPages."&numItems=".$pager->numItems."'>尾页</a>";
}
?>

需要说明的地方有两个:
这个类仅仅处理数据,并不负责处理显示,因为我觉得将数据的处理和结果的显示都放到一个类里边实在是有些勉强。显示的时候情况和要求多变,不如自己根据类给出的结果处理,更好的方法是根据这个Pager类继承一个自己的子类来显示不同的分页,比如显示用户分页列表可以:

代码如下:

<?php
Class MemberPager extends Pager
{
   function showMemberList()
   {
       global $db;

       $data = $this->getPageData();
// 显示结果的代码
       // ......
   }
}
/// 调用
if ( isset($_GET['page']) )
{
   $page = (int)$_GET['page'];
}
else
{
   $page = 1;
}
$sql = "select * from members order by id";
$pager_option = array(
       "sql" => $sql,
       "PageSize" => 10,
       "CurrentPageID" => $page
);
if ( isset($_GET['numItems']) )
{
   $pager_option['numItems'] = (int)$_GET['numItems'];
}
$pager = @new MemberPager($pager_option);
$pager->showMemberList();
?>

第二个需要说明的地方就是不同数据库的兼容性,在不同的数据库里截获一段结果的写法是不一样的。
mysql: select * from table limit offset, rows
pgsql: select * from table limit m offset n
......
所以要在类里边获取结果的时候需要使用pear db类的limitQuery方法。

ok,写完。


    
[3]php预定义变量使用帮助(带实例)
    来源: 互联网  发布时间: 2013-11-30

自 php 4.1.0 起,取得外部变量的首选方法是用下面提及的超全局变量。在此之前,人们要么依赖 register_globals,要么就是长长的预定义 PHP 数组($HTTP_*_VARS)。自 PHP 5.0.0 起,长格式的 PHP 预定义变量可以通过设置 register_long_arrays 来屏蔽。
服务器变量:$_SERVER
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_SERVER_VARS。
$_SERVER 是一个包含诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。数组的实体由 web 服务器创建。不能保证所有的服务器都能产生所有的信息;服务器可能忽略了一些信息,或者产生了一些未在下面列出的新的信息。这意味着,大量的这些变量在 CGI 1.1 规范中说明,所以应该仔细研究一下。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_SERVER; 访问它,就如同使用 $HTTP_SERVER_VARS 一样。
$HTTP_SERVER_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_SERVER_VARS 和 $_SERVER 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_SERVER 和 $HTTP_SERVER_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。
或许会发现下面列出的某些 $_SERVER 元素并不可用。注意,如果以命令行方式运行 PHP,下面列出的元素几乎没有有效的(或是没有任何实际意义的)。
“PHP_SELF”
当前正在执行脚本的文件名,与 document root 相关。举例来说,在 URL 地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将会得到 /test.php/foo.bar 这个结果。__FILE__ 常量包含当前(例如包含)文件的绝对路径和文件名。
如果 PHP 以命令行方式运行,该变量在 PHP 4.3.0 之前无效。
“argv”
传递给该脚本的参数。当脚本运行在命令行方式时,argv 变量传递给程序 C 语言样式的命令行参数。当调用 GET 方法时,该变量包含请求的数据。
“argc”
包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
“GATEWAY_INTERFACE”
服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
“SERVER_NAME”
当前运行脚本所在服务器主机的名称。如果该脚本运行在一个虚拟主机上,该名称是由那个虚拟主机所设置的值决定。
“SERVER_SOFTWARE”
服务器标识的字串,在响应请求时的头信息中给出。
“SERVER_PROTOCOL”
请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
“REQUEST_METHOD”
访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
注: 如果请求的方式是 HEAD,PHP 脚本将在送出头信息后中止(这意味着在产生任何输出后,不再有输出缓冲)。
“REQUEST_TIME”
请求开始时的时间戳。从 PHP 5.1.0 起有效。
“QUERY_STRING”
查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。
“DOCUMENT_ROOT”
当前运行脚本所在的文档根目录。在服务器配置文件中定义。
“HTTP_ACCEPT”
当前请求的 Accept: 头信息的内容。
“HTTP_ACCEPT_CHARSET”
当前请求的 Accept-Charset: 头信息的内容。例如:“iso-8859-1,*,utf-8”。
“HTTP_ACCEPT_ENCODING”
当前请求的 Accept-Encoding: 头信息的内容。例如:“gzip”。
“HTTP_ACCEPT_LANGUAGE”
当前请求的 Accept-Language: 头信息的内容。例如:“en”。
“HTTP_CONNECTION”
当前请求的 Connection: 头信息的内容。例如:“Keep-Alive”。
“HTTP_HOST”
当前请求的 Host: 头信息的内容。
“HTTP_REFERER”
链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是真实正确的。
“HTTP_USER_AGENT”
当前请求的 User-Agent: 头信息的内容。该字符串表明了访问该页面的用户代理的信息。一个典型的例子是:Mozilla/4.5 [en] (X11; U; linux 2.2.9 i586)。也可以使用 get_browser() 得到此信息。
“HTTPS”
如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。
“REMOTE_ADDR”
正在浏览当前页面用户的 IP 地址。
“REMOTE_HOST”
正在浏览当前页面用户的主机名。反向域名解析基于该用户的 REMOTE_ADDR。
注: 必须配置 Web 服务器来建立此变量。例如 Apache 需要在 httpd.conf 中有 HostnameLookups On。参见 gethostbyaddr()。
“REMOTE_PORT”
用户连接到服务器时所使用的端口。
“SCRIPT_FILENAME”
当前执行脚本的绝对路径名。
注: 如果脚本在 CLI 中被执行,作为相对路径,例如 file.php 或 ../file.php,$_SERVER['SCRIPT_FILENAME'] 将包含用户指定的相对路径。

“SERVER_ADMIN”
该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。
“SERVER_PORT”
服务器所使用的端口。默认为“80”。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
“SERVER_SIGNATURE”
包含服务器版本和虚拟主机名的字符串。
“PATH_TRANSLATED”
当前脚本所在文件系统(不是文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
注: PHP 4.3.2 之后,PATH_TRANSLATED 在 Apache 2 SAPI 模式下不再和 Apache 1 一样隐含赋值,而是若 Apache 不生成此值,PHP 便自己生成并将其值放入 SCRIPT_FILENAME 服务器常量中。这个修改遵守了 CGI 规范,PATH_TRANSLATED 仅在 PATH_INFO 被定义的条件下才存在。
Apache 2 用户可以使用 httpd.conf 中的 AcceptPathInfo On 来定义 PATH_INFO。
“SCRIPT_NAME”
包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 包含当前文件的绝对路径和文件名(例如包含文件)。
“REQUEST_URI”
访问此页面所需的 URI。例如,“/index.html”。
“PHP_AUTH_DIGEST”
当作为 Apache 模块运行时,进行 HTTP Digest 认证的过程中,此变量被设置成客户端发送的“Authorization”HTTP 头内容(以便作进一步的认证操作)。
“PHP_AUTH_USER”
当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
“PHP_AUTH_PW”
当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
“AUTH_TYPE”
当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。

环境变量:$_ENV
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_ENV_VARS。
在解析器运行时,这些变量从环境变量转变为 PHP 全局变量名称空间(namespace)。它们中的许多都是由 PHP 所运行的系统决定。完整的列表是不可能的。请查看系统的文档以确定其特定的环境变量。
其它环境变量(包括 CGI 变量),无论 PHP 是以服务器模块或是以 CGI 处理方式运行,都在这里列出了。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_ENV; 来访问它,就如同使用 $HTTP_ENV_VARS 一样。
$HTTP_ENV_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_ENV_VARS 和 $_ENV 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_ENV 和 $HTTP_ENV_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。
HTTP Cookies:$_COOKIE
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_COOKIE_VARS。
通过 HTTP cookies 传递的变量组成的数组。是自动全局变量。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_COOKIE; 来访问它,就如同使用 $HTTP_COOKIE_VARS 一样。
$HTTP_COOKIE_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_COOKIE_VARS 和 $_COOKIE 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_COOKIE 和 $HTTP_COOKIE_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。
HTTP GET 变量:$_GET
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_GET_VARS。
通过 HTTP GET 方法传递的变量组成的数组。是自动全局变量。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_GET; 来访问它,就如同使用 $HTTP_GET_VARS 一样。
$HTTP_GET_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_GET_VARS 和 $_GET 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_GET 和 $HTTP_GET_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。
HTTP POST 变量:$_POST
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_POST_VARS。
通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_POST; 来访问它,就如同使用 $HTTP_POST_VARS 一样。
$HTTP_POST_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_POST_VARS 和 $_POST 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_POST 和 $HTTP_POST_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。
HTTP 文件上传变量:$_FILES
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_POST_FILES。
通过 HTTP POST 方法传递的已上传文件项目组成的数组。是自动全局变量。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_FILES; 来访问它,就如同使用 $HTTP_POST_FILES 一样。
$HTTP_POST_FILES 包含着同样的信息,但是不是一个自动全局变量(请注意 PHP 是把 $HTTP_POST_FILES 和 $_FILES 这两个变量当作不同的变量来处理的)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_FILES 和 $HTTP_POST_FILES 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。
Request 变量:$_REQUEST
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,没有等价的数组。
注: 在 PHP 4.3.0 之前,$_FILES 也被包括在 $_REQUEST 数组中。
此关联数组包含 $_GET,$_POST 和 $_COOKIE 中的全部内容。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味着它在所有的脚本中都有效。在函数或方法中不需要使用 global $_REQUEST; 来访问它。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_REQUEST 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。
session 变量:$_SESSION
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_SESSION_VARS。
包含当前脚本中 session 变量的数组。参阅 Session 函数文档以获得更多信息。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_SESSION; 来访问它,就如同使用 $HTTP_SESSION_VARS 一样。
$HTTP_SESSION_VARS 包含着同样的信息,但是不是一个自动全局变量(请注意 PHP 是把 $HTTP_SESSION_VARS 和 $_SESSION 这两个变量当作不同的变量来处理的)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_SESSION 和 $HTTP_SESSION_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。
Global 变量:$GLOBALS
注: $GLOBALS 在 PHP 3.0.0 及以后版本中适用。
由所有已定义全局变量组成的数组。变量名就是该数组的索引。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $GLOBALS; 来访问它。
前一个错误消息:$php_errormsg
$php_errormsg 是包含 PHP 产生的上一错误消息内容的变量。该变量在发生错误并且 track_errors 选项打开(默认为关闭)后才有效。

代码如下:

<?php
function getServerAddress() {
    if($_SERVER['SERVER_ADDR']) {
        return $_SERVER['SERVER_ADDR'];
    }

    $ifconfig = shell_exec('/sbin/ifconfig eth0');
    preg_match('/addr:([\d\.]+)/',$ifconfig,$match);

    return $match[1];
}
?>

代码如下:

<?php
function getServerAddress() {
    if($_SERVER['SERVER_ADDR']) {
        return $_SERVER['SERVER_ADDR'];
    }

    $ifconfig = shell_exec('/sbin/ifconfig eth0');
    preg_match('/addr:([\d\.]+)/',$ifconfig,$match);

    return $match[1];
}
?>

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3