Автор Тема: Вопрос о php - глюки какие-то... [решено]  (Прочитано 2154 раз)

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
У меня вопрос...
Вот такой код:
Цитировать
<?php
$template='<?php echo "Hello World from template!"; ?> Yahoo!!!';
ob_start();
eval("?>".$template."<?");
$template=ob_get_contents();
ob_end_clean();
echo $template;
exit();
?>
Вывод в браузере вот такой:
Hello World from template! Yahoo!!!<?Это я с ума сошёл или у модуля php поехала крыша?
Откуда берётся "<?" после "Yahoo!!!" - вообще не понятно!!!
Его там быть не должно!!!
« Последнее редактирование: 15.05.2011 15:12:03 от Skull »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Re: Вопрос о php - глюки какие-то...
« Ответ #1 : 03.05.2011 13:58:21 »
Незакрытый тег не обрабатывается и транслируется как обычный текст?
Андрей Черепанов (cas@)

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: Вопрос о php - глюки какие-то...
« Ответ #2 : 05.05.2011 10:04:55 »
Цитировать
Незакрытый тег не обрабатывается и транслируется как обычный текст?
В смысле? Это как это? Тут, вроде бы, всё закрыто.
Если написать так:
eval("?>".$template."<?php ");
(<?php[пробел])
То этот глюк проходит.
А если <?[пробел], то не работает.
Этот глюк наблюдается в 2-х местах.
Не понятно почему.

Оффлайн Mimas

  • Завсегдатай
  • *
  • Сообщений: 230
  • Mimas
    • Мой Линукс
    • Email
Re: Вопрос о php - глюки какие-то...
« Ответ #3 : 12.05.2011 16:27:11 »
В подвергаемом мною дружеской критике Cromium есть неплохая отладочная консоль. Попробуйте посмотреть на отработку кода через "призму" этой консоли. А на мой дилетантский взгляд нужно просто разобраться с последовательностями одинарных и двойных кавычек, а также "<? ?>"

Оффлайн fce

  • Завсегдатай
  • *
  • Сообщений: 249
  • ALT Linux, XBMC live, Ubuntu, Kubuntu, Android
    • Dansguardian+
    • Email
Re: Вопрос о php - глюки какие-то...
« Ответ #4 : 14.05.2011 17:23:12 »
Цитировать
Существует четыре набора тегов, которые могут быть использованы для обозначения PHP-кода. Из них только два (<?php. . .?> и <script language="php">. . .</script>) всегда доступны; другие могут быть включены или выключены в конфигурационном файле php.ini. Хотя короткие теги и теги в стиле ASP могут быть удобны, они не так переносимы, как длинные версии. Кроме того, если вы намереваетесь вставлять PHP-код в XML или XHTML, чтобы соответствовать XML, вам следует использовать форму <?php
Следует избегать использования коротких тегов при разработке приложений или библиотек, предназначенных для распространения или размещения на PHP-серверах, не находящихся под вашим контролем, так как короткие теги могут не поддерживаться на целевом сервере. Для создания переносимого, совместимого кода, не используйте короткие теги.
взято отсюда
http://forum.codenet.ru/archive/index.php/t-44028.html
там же и решение
в php.ini
Цитировать
short_open_tag = On

Когда-то сам наступил на эти грабли.

Можно закрывать тему.
« Последнее редактирование: 14.05.2011 17:29:34 от fce »
Безвыходных ситуаций не бывает, есть ситуации в которые нет входа. На каждого компьютерного гения найдётся свой хакер с винтом.