Включить страницу codeigniter в php-страницу без codeigniter - PullRequest
0 голосов
/ 05 января 2011

Я работаю над 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 ]

2 голосов
/ 05 января 2011

Вы можете использовать PHP cURL модуль . Ниже взято из примеров в документации.

<?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, чтобы выводить только тело документа ..

0 голосов
/ 06 января 2011

Похоже, вы разрабатываете API.

(И я не уверен, почему вы используете CI для половины и пользовательские сценарии для остальных. CI может приспособить вашнужно.)

Следующее предложение может быть очевидным или не соответствовать вашим ожидаемым ответам, но в случае непредвиденной ситуации это помогает, я хотел бы положить его на стол.

Если я вас понимаювопросы и комментарии правильно, у вас есть пользователи, которые имеют сайты на вашем сервере.У вас также есть приложение, которое дает им код, который они вставляют на свой сайт, который каким-то образом работает с информацией на вашем сервере.

  1. Вам нужен контроллер, который получает запросы на информацию из вставленного кода
  2. Вам нужен способ аутентификации запроса
  3. Пользователь предоставляет некоторую переменную информацию
  4. Вам необходимо вернуть информацию или html после успешной проверки на основе переменных, предоставленных пользователем.

Codeigniter позволяет работать с URL-адресами на основе сегментов или со строками запроса.Он предпочитает и работает из поля с сегментами, но может быть настроен для работы со строками запроса .

. Вы можете создать URL, который содержит

  1. имя контроллера и функции для обработки запроса (вместо второй индексной страницы, которую вы упомянули
  2. , токен для аутентификации запроса. В идеале это можно использовать для сравнения с информацией, хранящейся в БД при создании токена.и выдан пользователю. Проверьте эту статью: http://www.infoq.com/news/2010/01/rest-api-authentication-schemes и эту тоже: http://oauth.net/
  3. информация, предоставленная пользователем

Пример:

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

Как только ваш контроллер обработает запрос, верните информацию пользователю.

0 голосов
/ 05 января 2011

Codeigniter маршрутизирует приложение в зависимости от состояния среды URI

Что вам нужно сделать, это настроить среду и включить файл представления индекса следующим образом:

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

//Set GET action,method params etc

require_once "path/to/index.php";

Когда вызагрузите индексный файл CI, он считывает переменную SERVER и другие, которые вам, возможно, придется найти и запустить контроллер и метод, я бы также посоветовал вам изменить файл библиотеки / представления, так как он может выйти при выводе, вызывая выход вашего сценария.

Также вы можете заглянуть в ob_start() и т. Д., Чтобы поймать буфер

...