Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: пхп код

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Занесение в БД пхп кода
M@X
Отправлено: 18 Октября, 2007 - 11:09:11
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2007  


Помог: 0 раз(а)

[+]


Доброго дня суток.
Не подскажет кто, можно ли получить из БД пхп код?... ХТМЛ из БД выводится отлично, а вот ПХП код воспринимается браузером как простой текст... Можно ли вообще реализовать подобное?... Заранее спасибо.
 
 Top
EuGen Администратор
Отправлено: 18 Октября, 2007 - 11:26:25
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Тут может быть несколько вариантов.
Если Вам нужно просто выполнить php-код, то Вы можете извлечь его из БД, записать в файл, сохранить этот файл и выполнить его, например, так:
PHP:
скопировать код в буфер обмена
  1.  
  2. //*nix
  3. exec("/usr/local/bin/php new_file.php");
  4. //win32
  5. exec("c:\\php\\php.exe new_file.php");
  6.  

Если же Вам нужно сделать это в скрипте непосредственно, можно написать:

В общем и целом получается нечто вроде:
PHP:
скопировать код в буфер обмена
  1.  
  2. //..коннект к БД
  3. $res=mysql_query("SELECT code, file_name FROM php_table WHERE $strWhere");//$strWhere-условие
  4. $row=mysql_fetch_array($res);
  5. if (isset($row['code'])&& isset($row['file_name']))//остальные проверки - на Ваше усмотрение
  6. {
  7.    //НАРОЧНО не пишу проверок, что будет, если файл не открылся, если не записалось и т.п. ...
  8.    $f_php=fopen($row['file_name'], "a+");
  9.    fwrite($f_php, $row['code']); //стоит отметить, что '<?PHP ' и '?>' должны быть в $row['code']
  10.    fclose($f_php);
  11.    include($row['file_name']);
  12. };
  13.  

А вообще, что за задача породила подобные извращения ?(((*


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
M@X
Отправлено: 18 Октября, 2007 - 12:12:02
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2007  


Помог: 0 раз(а)

[+]


Если не трудно, помогите разобраться с конкретным примером:
test.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if(!$link = mysql_connect(DB_HOST, DB_USER, DB_PASS)) die("Not connected");    
  4. if(!mysql_select_db(DB_NAME)) die("Not selected");     
  5.  
  6. $res = mysql_query("SELECT * FROM temp_db");
  7. $template = mysql_fetch_object($res);
  8.  
  9. echo $template->template;
  10.  
  11. mysql_close($link);
  12. ?>
  13.  

В БД в поле template - след. текст: <?php echo "123"; ?>
 
 Top
EuGen Администратор
Отправлено: 18 Октября, 2007 - 12:20:42
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if(!$link = mysql_connect(DB_HOST, DB_USER, DB_PASS)) die("Not connected");
  4. if(!mysql_select_db(DB_NAME)) die("Not selected");
  5.  
  6. $res = mysql_query("SELECT * FROM temp_db");
  7. $template = mysql_fetch_object($res);
  8. //работаем с файлом
  9. $f_php=fopen("new.php", "a+");
  10. fwrite($f_php, $template->template);
  11. fclose($f_php);
  12. //.. и пытаемся его загрузить прямо в скрипт
  13. include("new.php");
  14. mysql_close($link);
  15. ?>
  16.  

Например, так (никаких проверок я тут не писал, да оно и не суть важно)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
M@X
Отправлено: 18 Октября, 2007 - 12:34:14
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Июль 2007  


Помог: 0 раз(а)

[+]


EuGen
Спасибо Вам!
P.S. Это необходимо для update'a сайта на сервере заказчика, в этом есть свои плюсы...
 
 Top
-SCHATTEN-
Отправлено: 22 Октября, 2007 - 06:48:54
Post Id



Пользователь


Покинул форум
Сообщений всего: 615
Дата рег-ции: Июль 2006  
Откуда: Оттуда !


Помог: 0 раз(а)




EuGen
Не понял
"Надо будет научиться затылок через задницу чисать."

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  if(!$link = mysql_connect(DB_HOST, DB_USER, DB_PASS)) die("Not connected");     
  3.  if(!mysql_select_db(DB_NAME)) die("Not selected");      
  4.  
  5.  $res = mysql_query("SELECT * FROM temp_db");
  6.  $template = mysql_fetch_object($res);
  7.  
  8.  eval ($template->template);  //заменили echo на eval
  9.  
  10.  mysql_close($link);
  11.  ?>

 
 Top
EuGen Администратор
Отправлено: 22 Октября, 2007 - 09:35:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Затылок затылком, но а что если у него там return'ов понавставлено?((*


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB