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
Форумы портала PHP.SU :: Версия для печати :: Вывод and ввод, save?
Форумы портала PHP.SU » » Если скрипт не работает » Вывод and ввод, save?

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

1. ksk.wolk - 09 Июня, 2011 - 17:45:28 - перейти к сообщению
Добрый вечер уважаемые гуру php программирования. Совсем небольшая предыстория:

Необходимо было написать файл редактора шаблона, который бы брал необходимую информацию из директории заданного шаблона, выводил её на экран и затем после внесения правок сохранял новую информацию.

Но я столкнулся с проблемой - информация выводится, но после правки не сохраняется. Помогите пожалуйста с редактированием ниже приведенного сценария.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     session_start();
  3.    
  4.     if(!$_SESSION['admin'])
  5.     {
  6.         die(Запрещено);
  7.     }
  8.    
  9.     ############################################
  10.    include 'astyle/head.tpl';
  11.     include 'astyle/menu.tpl';
  12.    
  13.     ############################################
  14.    require_once '../core/config.php';
  15.     require_once '../core/dbconfig.php';
  16.    
  17.     ############################################?>
  18. <table border="0" width="100%" cellpading=5 cellspacing=0>
  19. <tr><td class="titleborder maintitle" bgcolor=#C4BFB9 height="40" colspan="3"><b>  Редактировать шаблоны:</b></td></tr>
  20. </table>
  21. <br>
  22. <center>
  23. <?
  24.     function get_file_list($wqs_theme)
  25.     {
  26. // Открываем каталог и выходим в случае ошибки.
  27.         chdir("../themes/". $wqs_theme);
  28.         $d = @opendir(".");
  29.        
  30.         if(!$d)
  31.         {
  32.             return ;
  33.         }
  34.         while(($e = readdir($d)) !== false)
  35.         {
  36. // Игнорируем элементы .. и .
  37.            
  38.             if($e == '.' || $e == '..')
  39.             {
  40.                 continue;
  41.             }
  42.            
  43.             if(@is_dir($e))
  44.             {
  45.                 continue;
  46.             }
  47.             $mod[] = $e;
  48.             flush();
  49.         }
  50.         closedir($d);
  51.         chdir("..");
  52.         return $mod;
  53.     }
  54.     function rewrite_file($file)
  55.     {
  56.         $f = fopen("../themes/$wqs_theme/". $file, "w");
  57.        
  58.         if(!$f)
  59.         {
  60.             $r = 'Ошибка открытия файла.';
  61.         }
  62.         else
  63.         {
  64.             $w = fwrite($f, $_REQUEST['text']);
  65.            
  66.             if(!$w)
  67.             {
  68.                 $r = 'Не возможно записать файл.';
  69.             }
  70.             else
  71.             {
  72.                 fclose($f);
  73.                 $r = 'Файл "'. $file .'" перезаписан.';
  74.             }
  75.         }
  76.         return $r;
  77.     }
  78.    
  79.     #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
  80.    
  81.     #### Поехали ->
  82.    $t = $wqs_theme;
  83.     $file_list = get_file_list($t);
  84.    
  85.     if(@$_REQUEST['act'] == "edit")
  86.     {
  87.         $file = htmlspecialchars(file_get_contents('../themes/'. $t .'/'. $_REQUEST['file']));
  88.     }
  89. //echo '<pre>'; print_r($file_list); echo '</pre>';  
  90.     echo '    
  91. <form action="themes.php" method="post">
  92.        <INPUT TYPE="hidden" NAME="action" VALUE="themes">
  93.        <INPUT TYPE="hidden" NAME="file" VALUE="'. $_REQUEST['file'] .'">
  94.        <INPUT TYPE="hidden" NAME="act" VALUE="edit">';
  95.     echo '<table border="0">
  96.    <tr>
  97.    <td>';
  98.    
  99.     if(isset($_REQUEST['sub']))
  100.     {
  101.         echo ' <span class="mes">'. $report .'</span><br />';
  102.     }
  103.     echo '<textarea class="edit" name="text" cols="100" rows="25" >'. $file .'</textarea></td>
  104.    <td valign="top">';
  105.    
  106.     foreach($file_list  as $file)
  107.     {
  108.         echo '<p><a href="?action=themes&act=edit&file='. $file .'">'. $file .'</a></p>';
  109.     }
  110.     echo '</td></tr></table>
  111.    <input name="sub" type="submit" value="Отправить" class="unit_button" />';
  112.    
  113.     if(isset($_REQUEST['file']))
  114.     {
  115.         echo '<span class="mes"> Права доступа: '. decoct(0777&fileperms('../themes/'. $t .'/'. $_REQUEST['file'])) .'</span>
  116.        <a target="_blank" href="'. $help['chmod'] .'">[Что это?]</a>';
  117.     }
  118.     echo '</form>';
  119.    
  120.     ############################################
  121.    include 'astyle/footer.tpl';
  122. ?>
2. ksk.wolk - 09 Июня, 2011 - 20:05:15 - перейти к сообщению
Неужели никто не может помочь в элементарной правке кода? Не понял
3. OrmaJever - 09 Июня, 2011 - 20:21:14 - перейти к сообщению
Я где вызывается функция rewrite_file? Однако
4. ksk.wolk - 09 Июня, 2011 - 21:32:07 - перейти к сообщению
У меня в коде ошибки, поэтому прошу вас исправить его.
5. EuGen - 09 Июня, 2011 - 21:32:56 - перейти к сообщению
А я предлагаю Вам прочесть это:
http://phpfaq[dot]ru/debug
6. ksk.wolk - 09 Июня, 2011 - 21:40:49 - перейти к сообщению
Благодарю, буду выполнять постепенную отладку, завтра отпишусь о своем результате, если проблему решу расскажу, в чём была ошибка, если же не решу - максимально распишу принцип работы скрипта.
7. ksk.wolk - 10 Июня, 2011 - 09:07:39 - перейти к сообщению
Уже прогресс есть, код я видоизменил, но сохранение всёравно не происходит:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     session_start();
  3.    
  4.     if(!$_SESSION['admin'])
  5.     {
  6.         die(Запрещено);
  7.     }
  8.    
  9.     ############################################
  10.    include 'astyle/head.tpl';
  11.     include 'astyle/menu.tpl';
  12.    
  13.     ############################################
  14.    require_once '../core/config.php';
  15.     require_once '../core/dbconfig.php';
  16.    
  17.     ############################################?>
  18. <table border="0" width="100%" cellpading=5 cellspacing=0>
  19. <tr><td class="titleborder maintitle" bgcolor=#C4BFB9 height="40" colspan="3"><b>&nbsp;&nbsp;Редактировать шаблоны:</b></td></tr>
  20. </table>
  21. <br>
  22. <center>
  23.  
  24. <?PHP
  25.  
  26.    function get_file_list($theme) {
  27.  // Открываем каталог и выходим в случае ошибки.
  28.   chdir('../themes/'.$theme);
  29.   $d = @opendir(".");
  30.   if (!$d) return;
  31.   while (($e=readdir($d)) !== false) {
  32.     // Игнорируем элементы .. и .
  33.     if ($e=='.' || $e=='..') continue;
  34.     if (@is_dir($e)) continue;
  35.     $mod[] = $e;
  36.     flush();
  37.   }
  38.  closedir($d);
  39.  chdir("..");
  40.  return $mod;
  41. }
  42.  
  43. function rewrite_file($file) {
  44.         $f = fopen ('../themes/'.$wqs_theme.'/'.$file, "w");
  45.         if (!$f) $r = 'Ошибка открытия файла.';
  46.         else {
  47.                 $w=fwrite ($f, $_REQUEST['text']);
  48.                 if (!$w) $r='Не возможно записать файл.';
  49.                 else {
  50.                         fclose ($f);
  51.                         $r='Файл "'.$file.'" перезаписан.';
  52.                 }
  53.         }
  54.         return $r;
  55. }
  56.    
  57. #### Поехали ->
  58.  
  59.         $t = $wqs_theme;
  60.        
  61.         if (isset($_REQUEST['sub'])) {
  62.                 $report = rewrite_file($_REQUEST['file']);
  63.         }
  64.        
  65. ##### Редактор ->
  66.  
  67. $file_list = get_file_list($t);
  68. if (@$_REQUEST['act'] == "edit") {
  69.         $file = htmlspecialchars(file_get_contents('../themes/'.$t.'/'.$_REQUEST['file']));
  70. }
  71.  
  72. //echo '<pre>'; print_r($file_list); echo '</pre>';
  73. echo'  
  74. <form action="themes.php" method="post">
  75.                 <INPUT TYPE="hidden" NAME="action" VALUE="themes">
  76.                 <INPUT TYPE="hidden" NAME="file" VALUE="'.$_REQUEST['file'].'">
  77.                 <INPUT TYPE="hidden" NAME="act" VALUE="edit">';
  78.        
  79.        
  80. echo '<table border="0">
  81.         <tr>
  82.         <td>';
  83.         if (isset($_REQUEST['sub'])) echo ' <span class="mes">'.$report.'</span><br />';
  84.         echo '<textarea class="edit" name="text" cols="100" rows="25" >'.$file.'</textarea></td>
  85.         <td valign="top">';
  86.        
  87.                 foreach ($file_list as $file) {
  88.                 echo '<p><a href="?action=themes&act=edit&file='.$file.'">'.$file.'</a></p>';
  89.         }
  90.        
  91. echo '</td></tr></table>
  92.         <input name="sub" type="submit" value="Отправить" class="unit_button" />';
  93.        
  94.         if (isset($_REQUEST['file'])) {
  95.         echo '<span class="mes"> Права доступа: '.decoct(0777 & fileperms('../themes/'.$t.'/'.$_REQUEST['file'])).'</span>';
  96.         }
  97. echo '</form>';
  98.    
  99.     ############################################
  100.    include 'astyle/footer.tpl';
  101. ?>
8. OrmaJever - 10 Июня, 2011 - 10:28:22 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. function rewrite_file($file) {
  2.         $f = fopen ('../themes/'.$wqs_theme.'/'.$file, "w");

переменой $wqs_theme здесь нету, она в глобальной области видимости, и советую проверить сам путь. Да и вобще это не безопасно использовать путь для записи из даных пользователя без проверки

 

Powered by ExBB FM 1.0 RC1