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

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

1. Telnet - 25 Июня, 2019 - 16:20:00 - перейти к сообщению
Всем привет.
Есть кусок кода который храниться в базе, примерно в таком виде
при попытке перед выводом обработать его функцией eval возникает ошибка

PHP:
скопировать код в буфер обмена
  1.  
  2. $file = '<table id="table-places" class="table mtd">
  3.         <tbody>
  4.                 <tr>
  5.                         <td rowspan="5"><i class="fa fa-user"></i></td>
  6.                         <td><span class="button-checkbox"> <button type="button" class="btn btn-sm" v-bind:class="isSelected(45)" v-on:click="select(45)" :disabled="isDisabled(45, <?PHP echo (in_array(33,$arrPlaces) ? true : false); ?>)">45 </button> <input type="checkbox" v-model="inputs" name="places[]" value="45" class="hidden"> </span>
  7.                         </td>
  8.         </tbody>
  9. </table>';
  10. $arrPlaces = [31,32,33,34,35];
  11. echo eval($file);
  12.  


Выводит ошибку
Parse error: syntax error, unexpected '<', expecting end of file in \replace.php(11) : eval()'d code on line 1

А мне бы хотелось что вместо блока
<?PHP echo (in_array(33,$arrPlaces) ? true : false); ?>
просто выводился результат работы функции in_array
2. Мелкий - 25 Июня, 2019 - 17:12:43 - перейти к сообщению
Невнимательно документацию читаете. В eval передаётся PHP код.
Если вы напишете


вам ведь будет очевидно, что <table это что-то странное и явно не код? Потому и для eval это ошибка.

eval = evil tldr писать лениво.
3. Telnet - 25 Июня, 2019 - 17:19:07 - перейти к сообщению
Переписал код на такой все равно получаю ошибку

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $arrPlaces = [31,32,33,34,35];
  4. $file = 'echo \'<table id="table-places" class="table mtd">
  5.         <tbody>
  6.                 <tr>
  7.                         <td rowspan="5"><i class="fa fa-user"></i></td>
  8.                         <td><span class="button-checkbox"> <button type="button" class="btn btn-sm" v-bind:class="isSelected(45)" v-on:click="select(45)" :disabled="isDisabled(45,'. (in_array(33,$arrPlaces) ? true : false) .')">45 </button> <input type="checkbox" v-model="inputs" name="places[]" value="45" class="hidden"> </span>
  9.                         </td>
  10.         </tbody>
  11. </table>\';';
  12.  
  13. echo eval("?>" . $file . "<?php");


Parse error: syntax error, unexpected end of file in \replace.php(12) : eval()'d code on line 8
4. Мелкий - 25 Июня, 2019 - 17:31:56 - перейти к сообщению
Фокус хотите?

CODE (htmlphp):
скопировать код в буфер обмена
  1. melkij@melkij:~$ php -d short_open_tag=on test.php
  2. PHP Parse error:  syntax error, unexpected end of file in /home/melkij/test.php(22) : eval()'d code on line 15
  3. melkij@melkij:~$ php -d short_open_tag=off test.php
  4. echo '<table id="table-places" class="table mtd">
  5.  
  6.         <tbody>
  7.  
  8.                 <tr>
  9.  
  10.                         <td rowspan="5"><i class="fa fa-user"></i></td>
  11.  
  12.                         <td><span class="button-checkbox"> <button type="button" class="btn btn-sm" v-bind:class="isSelected(45)" v-on:click="select(45)" :disabled="isDisabled(45,1)">45 </button> <input type="checkbox" v-model="inputs" name="places[]" value="45" class="hidden"> </span>
  13.  
  14.                         </td>
  15.  
  16.         </tbody>
  17.  
  18. </table>';<?php


Что происходит?

Спойлер (Отобразить)
5. Telnet - 26 Июня, 2019 - 11:14:01 - перейти к сообщению
Цитата:
После <?php пробельный символ обязателен

Спасибо

 

Powered by ExBB FM 1.0 RC1