这个……楼下负责解释吧。
我再借地方问个问题:
如果服务器允许lz这样跨站包含文件,是不是也可以输出$area的值?

解决方案 »

  1.   

    这是不可能读取的!
    http://x.x.x.x/a/b.php是通过url方式引用的,如果想读取area的值,必须通过http://x.x.x.x/a/b.php?area=$area这样include.详细的请参看手册.
      

  2.   

    如果就用<?php include("http://x.x.x.x/a/b.php")?>这样的绝对路径,该怎么解决呢?????????
      

  3.   

    如果“allow_url_fopen”在 PHP 中被激活(默认配置),可以用 URL(通过 HTTP 或者其它支持的封装协议 - 所支持的协议见 附录 L)而不是本地文件来指定要被包括的文件。如果目标服务器将目标文件作为 PHP 代码解释,则可以用适用于 HTTP GET 的 URL 请求字符串来向被包括的文件传递变量。严格的说这和包括一个文件并继承父文件的变量空间并不是一回事;该脚本文件实际上已经在远程服务器上运行了,而本地脚本则包括了其结果。
    =============================================================
    转自手册
      

  4.   

    2楼不是已经说了吗!
    <?php include("http://x.x.x.x/a/b.php?area=$area")?>这样来引用
      

  5.   

    不错,这种方法是可以的,通过我列出的两个文件的内容,可以知道a.php和b.php都是在远程的,如果a.php包含多个b.php这样的文件,那么每个包含语句后面都要加"?area=$area"吗?这样总感觉不方便............
      

  6.   

    这不是很好的办法,建议不要用这种include 
    而且手册上面也说明了
    该脚本文件实际上已经在远程服务器上运行了,而本地脚本则包括了其结果。 
    include的只是解析后的html代码而已。
    用本地路径吧。<?php include("../b.php")?>
      

  7.   


    很正确了,如果用http引用,则只引用结果http://x.x.x.x/a/b.php 中$area没有声明,所以为空
      

  8.   

    如果是本地文件...请使用相对路径
    网络路径一般当成一个 function 或 webseriver 使用
      

  9.   

    对,include 一个 url 是不行的 
      

  10.   

    正解,这不可能读取到的,在你include前,那个远程文件在远程服务器就已经解释了PHP文件,返回的只是一个HTML代码,而不是一个PHP源代码的文件,如果可以获取到,那每个人都去用include获取远程文件,那岂不是很危险!!
      

  11.   

    这里不能叫包含的,根本就include不了里面的PHP代码,只是显示了HTML代码,没有执行远程的PHP代码。
      

  12.   

    这个好像不叫绝对路径吧,绝对路径不是相对于本地说的吗??这个是URL。