我正在使用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,因为我希望搜索引擎能够很好地获取内容
答案 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可以满足你的需求。)
以下建议可能是显而易见的,也可能超出您的预期答案,但是如果它有所帮助,我想把它放在桌面上。
如果我正确理解您的问题和评论,您的用户在您的服务器上有网站。您还有一个应用程序,可以为他们提供粘贴到其站点中的代码,这些代码可以与服务器上的信息一起使用。
Codeigniter允许您使用基于段的URL或查询字符串。它更喜欢并使用box with segments, but can be configured to work with query strings。
您可以构建一个包含
的网址一个例子:
"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()
等来捕获缓冲区