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

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

1. voskan - 26 Ноября, 2011 - 19:12:36 - перейти к сообщению
помогите пожалуйста доделать, я в этом ноль. только принцип работы понял.

shablon.txt
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <title>(page_title)</title>
  5.  
  6. </head>
  7. <body>
  8. (page_text)
  9.  
  10. </body>
  11.  
  12. </html>
  13.  
  14.  
  15.  


index.php


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include_once('shablon.php');
  3.  
  4. $content -> set('(page_title)','Название нашей страницы');
  5. $content -> set('(page_text)','Текст нашей страницы');
  6.  
  7. $content -> out_content('shablon.txt');
  8.  
  9.  
  10. ?>


shablon.php



PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class content
  4. {
  5. var $vars = array();
  6. var $content;
  7.  
  8. function set($name, $val)
  9. {
  10.  
  11. $this->vars($name) = $val;
  12. }
  13.  
  14. function out_content($txt){
  15.  
  16.  
  17. $this->content =file_get_contents($txt);
  18. foreach($this->vars as $key => $val)
  19. {
  20. $this->content =str_repleace($key, $val,$this->content);
  21. }
  22. echo $this->content;
  23. }
  24.  
  25. }
  26. $content = new content();
  27.  
  28. ?>


выдает ошибку
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. Fatal error: Can't use method return value in write context in /home/clients/voskan_ftp0/domains/voskan.ru/html/shablon.php on line 10
  4.  
2. Bio man - 26 Ноября, 2011 - 20:12:55 - перейти к сообщению
voskan пишет:
$this->vars($name) = $val;
ткни пальцем, где у тебя метод vars()?
(Добавление)
$this->vars[$name] = $val;
3. voskan - 26 Ноября, 2011 - 20:41:02 - перейти к сообщению
спасибо
(Добавление)
кстате вопрос

$content->set('{page_text}','Текст который находиться в боди');
а мне нужно

$content->set('{page_cod}',' '.$cod. ' ' );

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

подскажите как можно вставить пхп код ?
4. Давит - 26 Ноября, 2011 - 22:27:37 - перейти к сообщению
$content->set('{page_cod}', $addres);
5. voskan - 26 Ноября, 2011 - 22:31:17 - перейти к сообщению
а сам код в каком скрипте будет в index.php или shablon.txt?
6. Bio man - 27 Ноября, 2011 - 02:04:16 - перейти к сообщению
$cod = '<?php echo 'я PHP код' ?>';
$content->set('{page_cod}',' '.$cod. ' ' );
потом шаблон проганяешь через eval(). есть и другие способы но пока этого хватит
7. voskan - 27 Ноября, 2011 - 10:57:06 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $cod='<?PHP
  3.    echo '$new   =       isset ( $_GET['new'] ) ? $_GET['new'] : NULL;
  4.   switch ($new)
  5.   {
  6.   default:
  7.   include ("bd.php");
  8.   $chislo = 3;
  9.   $kol2 = mysql_query("SELECT COUNT(*) FROM state");
  10.   $kol3 = mysql_result($kol2, 0);
  11.   $num_str = ceil($kol3/$chislo);
  12.  
  13.   echo "<a href=\"".$_SERVER['PHP_SELF']."?new=form\">Добавить</a><br/>";
  14.   if($num_str==0){
  15.   echo "Статьи отсутствуют!";
  16.   exit;
  17.   }
  18.  
  19.   if (isset($_GET['str'])) {
  20.   $nav = $_GET['str'];
  21.   }
  22.   else {
  23.   $nav = 1;
  24.   }
  25.    $nav = intval($nav);
  26.         for ($i=1; $i<=$num_str; $i++) {
  27.    if ($i != $nav) {
  28.    echo '<a href="' .$_SERVER['PHP_SELF']. '?str='.$i.'">'.$i.'</a> ';
  29.    }
  30.   else {
  31.   echo '<span>'.$i.'</span> ';
  32.   }
  33.   }
  34.        
  35.   if (!isset($_GET['str'])) {
  36.   $str = 0;
  37.   }
  38.   else {
  39.   $str = $_GET['str']*$chislo - $chislo;
  40.   }
  41.  
  42.  $statya = mysql_query("SELECT * from state ORDER by id_s asc limit $str, $chislo");
  43.  if(!$statya)
  44.  {
  45.  echo "НЕ удалось получить данные от базы данных!";
  46.  exit;
  47.  }
  48.  while($s = mysql_fetch_array($statya))
  49.  {
  50.  
  51.  echo "<form action=\"profile.php\" method=\"POST\">";
  52.  echo "<b>".$s['title_s']."</b><br/>";
  53.  echo "Автор:<b>".$s['avtor_s']."</b><input type=\"image\" src=\"p.png\" name=\"submit\"><br/>";
  54.  echo "<input type=\"hidden\" name=\"login\" value=\"".$s['avtor_s']."\">";
  55.  echo "</form>";
  56.  echo "".$s['date_s']."<br/>";
  57.  echo "".$s['text_s']."<br/>";
  58.  echo "Тематика:<b>".$s['tematika_s']."</b><br/><br/>";
  59.  if(isset($_SESSION['login']) and $_SESSION['login']=='voskan')
  60.  {
  61.  echo "<form action=\"delete_s.php\" method=\"POST\">";
  62.  echo "<input type=\"hidden\" name=\"id_s\" value=\"".$s['id_s']."\">";
  63.  echo "<input type=\"hidden\" name=\"str\" value=\"".$_GET['str']."\">";
  64.  echo "<input type=\"image\" src=\"delete.png\" name=\"submit\">";
  65.  echo "</form>";
  66.  echo "<form action=\"edit_s.php\" method=\"POST\">";
  67.  echo "<input type=\"hidden\" name=\"id_s\" value=\"".$s['id_s']."\">";
  68.  echo "<input type=\"hidden\" name=\"str\" value=\"".$_GET['str']."\">";
  69.  echo "<input type=\"image\" src=\"edit.png\" name=\"submit\">";
  70.  echo "</form>";
  71.   }
  72.  }
  73.   break;
  74.  
  75.  
  76.   case 'form':
  77.    echo "<form action=\"" . $_SERVER['PHP_SELF'] . "?new=add\" method=\"post\">\n";
  78.         echo "Название статьи:<br/>\n";
  79.         echo "<input type=\"text\" name=\"title\"><br/>\n";
  80.         echo "Текст статьи:<br/>\n";
  81.         echo "<textarea name=\"text\" rows=\"5\" cols=\"60\"></textarea><br/>\n";
  82.         echo "Тематика статьи:<br/>\n";
  83.         echo "<select name=\"tematika\" size=\"1\">";
  84.    echo "<option value=\"Политика\">Политика</option>";
  85.    echo "<option value=\"Религия\">Религия</option>";
  86.    echo "<option value=\"Cайтостроение\">Cайтостроение</option>";
  87.    echo "</select><br/>";
  88.    echo "<input type=\"submit\" value=\"Добавить\">\n";
  89.         echo "</form>\n";
  90.   break;
  91.  
  92.   case 'add':
  93.     if(isset($_POST['text'])) { $text_s = $_POST['text']; if ($text_s == '') { unset($text_s);} }
  94.          if(isset($_POST['title'])) { $title = $_POST['title']; if ($title == '') { unset($title);} }
  95.          if(isset($_POST['tematika'])) { $tematika = $_POST['tematika']; if ($tematika == '') { unset($tematika);} }
  96.          if(isset($_SESSION['login'])){$avtor_s = $_SESSION['login']; if($avtor_s == ''){unset($avtor_s);}}
  97.          if(empty($avtor_s))
  98.          {
  99.          echo "Вы не можете добавлять статью,вы не авторизованы!";
  100.          exit;
  101.          }
  102.          
  103.           if(empty($title))
  104.          {
  105.          echo "Напишите название статьи!";
  106.          exit;
  107.          }
  108.          
  109.     if(empty($text_s))
  110.          {
  111.          echo "Напишите текст статьи!";
  112.          exit;
  113.          }
  114.  
  115.          if(empty($tematika))
  116.          {
  117.          echo "Напишите тематику статьи!";
  118.     exit;
  119.          }
  120.          
  121.          $title = stripslashes($title);
  122.     $title = htmlspecialchars($title);
  123.          $title = mysql_escape_string($title);
  124.          
  125.          $text_s = stripslashes($text_s);
  126.     $text_s = htmlspecialchars($text_s);
  127.          $text_s = mysql_escape_string($text_s);
  128.          
  129.          $tematika = stripslashes($tematika);
  130.     $tematika = htmlspecialchars($tematika);
  131.          $tematika = mysql_escape_string($tematika);
  132.          
  133.          include ('bd.php');
  134.          
  135.          $add_statya = mysql_query("INSERT INTO state (avtor_s,title_s,tematika_s,text_s) VALUES('$avtor_s','$title','$tematika','$text_s')");
  136.     if($add_statya="TRUE")
  137.          {
  138.          echo "Статья добавлена!";
  139.          $chislo2 = 3;
  140.     $kol4 = mysql_query("SELECT COUNT(*) FROM state");
  141.     $kol5 = mysql_result($kol4, 0);
  142.     $num_str = ceil($kol5/$chislo2);
  143.          header ("location:  state.php?str=$num_str");
  144.          }
  145.          else
  146.          {
  147.          echo "Статья не добавлена!";
  148.          }
  149.   break;
  150.  
  151.   }';
  152.    ?>';
  153.  
  154.  




PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $cod2=mixed eval ( string $cod);
  4. $content->set('{php_cod}', ''.$cod2.'' );
  5.  
  6.  


это все в одном коде index.php

что не так делаю ? выдает ошибку

PHP:
скопировать код в буфер обмена
  1.  
  2. Parse error: syntax error, unexpected T_NEW in /home/clients/voskan_ftp0/domains/voskan.ru/html/state.php on line 6
  3.  
  4.  
8. ams - 27 Ноября, 2011 - 11:17:11 - перейти к сообщению
voskan пишет:

$cod='<?PHP
echo '$new = isset ( $_GET['new'] ) ? $_GET['new'] : NULL;
switch ($new)

Ковычки проверь
9. voskan - 27 Ноября, 2011 - 11:28:46 - перейти к сообщению
проверено, выше код стоит видно что есть закрывающие кавычки.
10. Bio man - 27 Ноября, 2011 - 13:58:09 - перейти к сообщению
voskan пишет:
$cod2=mixed eval ( string $cod);
WTF?
(Добавление)
и еще экранируй кавычки. апострофы в апострофах использовать не получится, только в двойных кавычках
11. voskan - 27 Ноября, 2011 - 14:25:26 - перейти к сообщению
пример не подскажешь а то так не так уж и понял Недовольство, огорчение
12. Bio man - 27 Ноября, 2011 - 14:33:10 - перейти к сообщению
что за mixed и string там у тебя???? пример
$code = "<?php $_GET[/'id/'];
$str = /'текст/'; ?>";
или addslashes()
13. ams - 27 Ноября, 2011 - 18:14:39 - перейти к сообщению
voskan пишет:
$cod2=mixed eval ( string $cod);

Etogo ya ne zametil Улыбка
14. voskan - 27 Ноября, 2011 - 22:40:59 - перейти к сообщению
через addslashes() подробнее ?

$cod = addslashes('текст'); так ? или напиши пожалуйста пример. только на моем скрипте а не с текстом, так как с текстом легче а в моей ситуации сложнее все намного
15. Bio man - 27 Ноября, 2011 - 23:37:58 - перейти к сообщению
voskan, почитайте про ф-цию eval() и поймете все сами. я не разу ее не использовал и сказать больше, чем написано в документации не смогу

 

Powered by ExBB FM 1.0 RC1