如何通过包含URL来访问类?

时间:2013-12-24 12:25:38

标签: php

我有点卡住了。

在继续之前,我想分享一些脚本。我在PHP中有一个类文件:

<?php

class db

{

private $dbn;    
private $port;    
private $uname;    
private $pwd;    
private $dbname;



function __construct(){

   /*  $this -> dbn ='localhost';    
    $this -> port ='3306';    
    $this -> uname = 'root';    
    $this -> pwd = '';    
    $this-> dbname = 'allindiacakes';*/



 /*  $this -> dbn ='localhost';    
    $this -> port ='3306';    
    $this -> uname = 'rombagif_floret';    
    $this -> pwd = 'Ashoke3';    
    $this-> dbname = 'rombagif_floret';*/        

     $this -> dbn ='localhost';    
    $this -> port ='3306';    
    $this -> uname = 'root';    
    $this -> pwd = '';    
    $this-> dbname = 'rombagif_floret';

}



public function getdbn(){

    return $this->dbn;    
}   

public function getPort(){

    return $this->port;    
}   

public function getUname(){

    return $this->uname;    
}



public function getPwd(){

    return $this->pwd;
}   

public function getDbName(){

    return $this->dbname;    
}      

public function getConnection(){

    $con ="'" .  $this->dbn . "','" . $this->uname . "','" . $this->pwd ."'";    
    echo $con;    
    return $con;    
}    
}    
?>

我正在尝试包含该类的URL,然后创建一个这样的对象。

在我做的localhost/crack/index.php文件中:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>

        <?php 

          include 'http://localhost/rambagifts/logMeAdmin/functions/include/dbn.php'; 
          $d = new db();
          $dbname = $d->getdbn();
          echo $dbname;

        ?>

    </body>
</html>

但是当我呼叫http://localhost/crack/时,我收到以下错误

  

致命错误:第12行的C:\xampp\htdocs\crack\index.php中找不到“db”类

2 个答案:

答案 0 :(得分:2)

来自php文档:http://www.php.net/manual/en/function.include.php

  

如果在PHP中启用了“URL include wrappers”,则可以指定该文件   使用URL包含(通过HTTP或其他支持的包装器 - 请参阅   支持协议列表的协议和包装器)而不是   本地路径名。如果目标服务器将目标文件解释为PHP   代码,变量可以使用URL请求传递给包含的文件   与HTTP GET一起使用的字符串。严格来说,这并不严格   包含文件并让它继承父文件的东西   变量范围;该脚本实际上是在远程服务器上运行的   然后将结果包含在本地脚本中。

     

注意:PHP 4.3.0之前的Windows版本的PHP不支持访问   通过此功能的远程文件,即使启用了allow_url_fopen。

特别是部分说“脚本实际上是在远程服务器上运行,然后结果被包含在本地脚本中”。您的变量和类对象定义不会被回显(好东西!),因此它们不会包含在您自己的脚本中。

正如其他人所说,由于URL被解析然后包含在内,所以不要包含URL中的文件。您需要根据本地路径或相对路径进行包含,以便包含php代码本身。

如果要包含来自不同域的文件,就像它在同一域路径中一样。您可以为系统上的其他目录创建符号链接(http://en.wikipedia.org/wiki/Symbolic_link)。这将允许您在本地包含该目录中的文件。

有关如何在远程URL上使用include的示例;您可以查看这个问题(php include to external url),其中TS想要包含一个远程(已经解析过的)头文件。

答案 1 :(得分:0)

您的包现在通过服务器运行;摆脱localhost,改为使用文件系统路径。