Сегодня утром еле как добил способ вставки PHP-кода в TINYMCE. Я сделал по своему, и этот способ я решил выложить сюда для тех, кто столкнулся с такой проблемой. Эту проблему я не смог решить с помощью поиска ответа на мучавший меня вопрос в гугле и придумал его сам. Не судите строго! По этому способу можно вызывать php-коды в любом месте страницы.
1. В tinymce открываем HTML.
2. Пишем текст, который нужен, теперь в место где Вы будете прописывать php пишете
<div id="(к примеру gallery)">1</div>
Этот div Вы можете разместить в любом месте, можете вставить его даже между строками текста, который Вы написали в редакторе.
3. Создаем в базе данных phpmyadmin таблицу php_codes с полями id (autoincrement), php_title, php_code
4. Создаем php-код галереи и вставляем в базу php_codes
php_title = gallery
php_code = Ваш php-код без <?php ?>
5. Создаем в корневой папки со всеми php-файлами файл phpfunctions.php
6. Пишем в него такой код
<?
include("./includes/database_connect.php"); //подключаемся к базе
switch ($_POST['action']){
case "showCode":
$result = mysql_query("SELECT * FROM php_codes WHERE php_title='".$_POST['php_title']."'");
$p=mysql_fetch_array($result);
$code = '<?'.$p['php_code'].'?>';
eval ('?>'.$code.'<?');
break;
}
?>
7. Теперь в файле, в котором Вы будете выводить текст из tinymce и скрипты пишете следующее.
<?
$pages = mysql_query("SELECT * FROM pages WHERE cat=".$_GET['page']."");
if(mysql_num_rows($pages)>0){
$p = mysql_fetch_array($pages);
}
echo '<p class="title">'.$p['title_rus'].' </p>'.
$p['text_rus'];
$php_codes=mysql_query("SELECT * FROM php_codes");
if(mysql_num_rows($php_codes)>0){
while ($pc=mysql_fetch_array($php_codes)){
print<<<HERE
<input id="$pc[php_title]1" type="hidden" value="$pc[php_title]">
<script type="text/javascript">
jQuery.noConflict();
jQuery("#$pc[php_title]").ready(function(){
var php_title = jQuery("#$pc[php_title]"+"1").val();
var page = $_GET[page];
jQuery.ajax({
type: "POST",
url: "./phpfunctions.php",
data: { action: "showCode", page: page, php_title: php_title},
cache: false,
success: function(responce){jQuery("#$pc[php_title]").html(responce); }
});
});
</script>
HERE;
}
}
?>
Все.
Этот способ будет работать в любом редакторе похожем на tinymce
Отвечу на любые вопросы и помогу, если никто не все понял! ;)
Удачи!
Спустя 50 минут (24.12.2011 - 06:11) Guest написал(а):
$result = mysql_query("SELECT * FROM php_codes WHERE php_title='".$_POST['php_title']."'");
$pages = mysql_query("SELECT * FROM pages WHERE cat=".$_GET['page']."");
Очень круто!
Спустя 1 час, 4 минуты, 51 секунда (24.12.2011 - 07:16) make.kz написал(а):
Цитата (Guest @ 24.12.2011 - 03:11) |
$result = mysql_query("SELECT * FROM php_codes WHERE php_title='".$_POST['php_title']."'"); $pages = mysql_query("SELECT * FROM pages WHERE cat=".$_GET['page'].""); Очень круто! |
$_POST['title'] передается Ajax-запросом.
$_GET['page'] - это я промах допустил, это моя переменная, я автоматически вывожу из базы html-теги и php-коды с помощью этой переменной
Извиняюсь за промах )))
Спустя 5 минут, 34 секунды (24.12.2011 - 07:21) Guest написал(а):
Без разницы чем передаются данные от пользователя, все данные должны проходить проверку.
Спустя 6 минут, 17 секунд (24.12.2011 - 07:27) make.kz написал(а):
Цитата (Guest @ 24.12.2011 - 04:21) |
Без разницы чем передаются данные от пользователя, все данные должны проходить проверку. |
Хорошо
$_GET['page'] - это id кнопки меню сайта в базе. Так понятней?
Я все коды храню в базе MySQL
И вывод этих страниц ведется по id-кнопки, связка кнопок сайта со страницами )))
Спустя 3 минуты, 42 секунды (24.12.2011 - 07:31) Guest написал(а):
Вообще-то я говорю о дырках в запросах.
Нужно использовать функцию mysql_real_escape_string для строковых данных и (int) для целочисленных данных поступающих от пользователя.
Нужно использовать функцию mysql_real_escape_string для строковых данных и (int) для целочисленных данных поступающих от пользователя.
Спустя 2 часа, 12 минут, 21 секунда (24.12.2011 - 09:43) Revan написал(а):
А может у него есть функция, которая в самом начале программы проверяет безопасность переменных, и преобразует их в безопасный вид? Он не спрашивал о том, как защищать программу или есть ли там дыры.
Спустя 4 часа, 5 минут, 21 секунда (24.12.2011 - 13:49) make.kz написал(а):
Ребята, по защите программы Вы уж там сами как-нибудь! ))))
Я же выложил одно из решений проблемы использования tinymce и php-кодов. Чтобы можно было выводить php-коды между строками tinymce
Я же выложил одно из решений проблемы использования tinymce и php-кодов. Чтобы можно было выводить php-коды между строками tinymce
Спустя 38 минут, 31 секунда (24.12.2011 - 14:27) inpost написал(а):
make.kz
Ты молодец, но если честно, то нафиг? Тот, кто будет вставлять ПХП код, будет работать с самими файлами напрямую через соответствующий редактор, а не через tinymce. Потому что tinymce предназначен для посетителей, клиентов и заказчиков, которые абсолютно далеки от программирования, но им хочется подправить на страничке текст более правильно.
Ты молодец, но если честно, то нафиг? Тот, кто будет вставлять ПХП код, будет работать с самими файлами напрямую через соответствующий редактор, а не через tinymce. Потому что tinymce предназначен для посетителей, клиентов и заказчиков, которые абсолютно далеки от программирования, но им хочется подправить на страничке текст более правильно.
Спустя 9 часов, 40 минут, 25 секунд (25.12.2011 - 00:08) make.kz написал(а):
Цитата (inpost @ 24.12.2011 - 11:27) |
make.kz Ты молодец, но если честно, то нафиг? Тот, кто будет вставлять ПХП код, будет работать с самими файлами напрямую через соответствующий редактор, а не через tinymce. Потому что tinymce предназначен для посетителей, клиентов и заказчиков, которые абсолютно далеки от программирования, но им хочется подправить на страничке текст более правильно. |
Inpost, спасибо!
Просто обидно стало, когда делал свой движок столкнулся с проблемой tinymce редактора и php кода, начал гуглить, никто конкретно не смог дать ответ, вот сам придумал и выложил, пусть теперь люди знают.