将codeigniter页面包含在非codeigniter php页面中

时间:2011-01-05 16:13:42

标签: php codeigniter path include

我正在使用CMS而不是自动生成页面,它会生成代码并将其提供给用户添加到他们的php页面。

我正在将应用程序迁移到CI,但却在努力设置此过程。

通过制作2个codeigniter索引页面(一个用于主应用程序,另一个用于连接,它改变了初始控制器和索引路径),这几乎可以工作,我想要的是这样的:

<?php include("cms/connector.php"); ?>
<html>
..
<body>
<h1>Static</h1>
<?php echo($cms['data']); ?>
</body>

它正确拉取文件并运行被调用的视图,但视图中的变量不会保存。

此外,我还需要能够定位他们想要获得的cms页面:

<?php include("cms/connector.php/cms/2"); ?>

不再有效(我猜是因为没有扩展名?)如果我可以让这部分工作,我就不用担心变量,因为我可以直接在页面上包含视图

任何想法都会很棒

应用程序可以托管在各种设置上,所以如果我可以绕过包含直接URL(http)的需要,我希望它,因为默认情况下可能并不总是打开它。此外,我不想使用ajax,因为我希望搜索引擎能够很好地获取内容

3 个答案:

答案 0 :(得分:2)

您可以使用PHP的cURL module。以下内容来自文档中的示例。

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/cms/connector.php/cms/2");
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
?>

请注意,这会提取整个文档,包括doctype,<head>等。如果您将其包含在其他页面中,则不是您想要的。您可能希望修改connector.php以仅输出文档正文..

答案 1 :(得分:0)

听起来像是在设计api。

(我不确定你为什么要使用CI的一半和其他的自定义脚本.CI可以满足你的需求。)

以下建议可能是显而易见的,也可能超出您的预期答案,但是如果它有所帮助,我想把它放在桌面上。

如果我正确理解您的问题和评论,您的用户在您的服务器上有网站。您还有一个应用程序,可以为他们提供粘贴到其站点中的代码,这些代码可以与服务器上的信息一起使用。

  1. 您需要一个控制器来接收来自粘贴代码的信息请求
  2. 您需要一种方法来验证请求
  3. 用户提供某种可变信息
  4. 根据用户提供的变量,您需要在成功验证后返回信息或html。
  5. Codeigniter允许您使用基于段的URL或查询字符串。它更喜欢并使用box with segments, but can be configured to work with query strings

    您可以构建一个包含

    的网址
    1. 处理请求的控制器和函数的名称(而不是您提到的第二个索引页
    2. 用于验证请求的令牌。理想情况下,这将用于在创建令牌并将其发布给用户时与存储在db中的信息进行比较。查看此文章:http://www.infoq.com/news/2010/01/rest-api-authentication-schemes以及此文章:http://oauth.net/
    3. 用户提供的信息
    4. 一个例子:

      "example.com/cms/(index.php)/connector/function-name/auth-token/user-info"
      

      控制器处理完请求后,将信息返回给用户。

答案 2 :(得分:-1)

Codeigniter根据URI的环境状态路由应用程序

您需要做的是设置环境并包含索引视图文件,如下所示:

$_SERVER["REQUEST_URI"] = "cms/2";

//Set GET action,method params etc

require_once "path/to/index.php";

当您加载CI索引文件时,它会读取SERVER变量以及您可能必须查找的其他变量并执行控制器和方法,我还建议您修改库/视图文件,因为它可能会在输出时退出导致您的脚本退出。

您也可以查看ob_start()等来捕获缓冲区