Mysql и php.. Подскажите новичку...

12
F
На сайте с 06.02.2012
Offline
124
799

Переделываю простой сайт с обычными страницами и теперь использую базу mysql и админку.

Как я понял, скрипт php работает, если написан в теле документа.

Если извлечён из БД вместе с контентом, то скрипт не выполняется...?

То есть... инклуды, записанные в составе контента страницы в БД, после извлечения так и прописываются в исходном коде, например <?php include "includename.php"; ?> и не выполняются сервером.

Что можно сделать?

Можно прописать и текстами эти куски, которые я инклудами вставлял в контент страницы, там набор ссылок всего лишь.

Может есть более простой вариант?

siv1987
На сайте с 02.04.2009
Offline
427
#1
Z
На сайте с 04.07.2013
Offline
56
#2

Овечаю: Чистить зубы через задницу теоретически можно, но болезненно.

Тем не менее, - многие так и делают.

eval();

IL
На сайте с 20.04.2007
Offline
435
#3
Zuldek:
истить зубы через задницу теоретически можно, но болезненно.
Тем не менее, - многие так и делают.

Пруф будет? Видео процесса, желательно..

fordzon:
Может есть более простой вариант?
Воздержаться от хранения PHP в БД...

Как вариант - использовать подстановки {{gallery}}/замены..

Ещё можно про шаблонизаторы почитать... или использовать готовую CMS (хотя бы подглядеть, как там реализовано)

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
F
На сайте с 06.02.2012
Offline
124
#4

Спасибо!

Скачал, установил, изучаю движок Вордпресс изнутри.

Вряд ли буду пользоваться, но в качестве ознакомления...

F
На сайте с 06.02.2012
Offline
124
#5

Не пойму, как воспользоваться eval() в моём случае.

Это же функция php, а они не работают из БД.

То.есть, нужно делать изменения в шаблоне страницы, и если есть переменная этого инклуда, я могу вставить его после текста контента на место eval().

В середину контента, где он был, мне его так просто уже не впихнуть.

Либо надо делить контент на две части...? Всё усложняется.

Может что-то не так понимаю?

Может как-то средствами Javascript это сделать? Он же работает из БД..

Но надо чтоб ссылки инклудов были видны не только пользователям, но и ПС.

M2
На сайте с 11.01.2011
Offline
341
#6
fordzon:
Это же функция php, а они не работают из БД.


$q = mysql_query($some_text);
while ($data = mysql_fetch_array($q))
{
$res[] = $data;
}

eval($res['some_data']);
------------------- Крутые VPS и дедики. Качество по разумной цене ( http://cp.inferno.name/view.php?product=1212&gid=1 ) VPS25OFF - скидка 25% на первый платеж по ссылке выше
F
На сайте с 06.02.2012
Offline
124
#7

Всё равно торможу..

mark2011,

Как я понял, мне этот скрипт нужно прописывать в шаблон. Правильно?

Ну вытащу я этот кусок с инклудом в виде переменной из контента, вставлю опять же после контента.

А мне надо его в середину запихнуть, где он был.

M2
На сайте с 11.01.2011
Offline
341
#8

fordzon,

Изначально была поставлена задача:

fordzon:
Если извлечён из БД вместе с контентом, то скрипт не выполняется...?

Я показал, что данная задача решаема. Где вам нужно вставить этот кусок, там и вставляйте в шаблоне.

F
На сайте с 06.02.2012
Offline
124
#9

Понял.

Спасибо!

F
На сайте с 06.02.2012
Offline
124
#10

Сделал ещё проще...

Нахожу в контенте адрес инклуда регуляркой и вставляю в шаблон в конец контента.

Всего лишь две строчки добавил в скрипт, пометил их комментариями...

preg_match("/(includes\/).*(php)/i", $text, $arr))  // Адрес инклуда в папке includes/

if ( isset ($_POST["pag"] ) and $_POST["pag"] == 'pagname' )
{
$content = file_get_contents('../shablon.php');
$content = str_replace("index", $page, $content);
$content = str_replace("//include", "include '$arr[0]'", $content);// Всталяю инклуд в шаблон вместо комментария
file_put_contents('../'.$page, $content);
echo '<br>Страница <a href="../'.$page.'">'.$page.'</a> создана, заполнена и добавлена в базу!';
}

Всё работает. Всем спасибо!

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий