Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

php не дает вывести php :o

287
03 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Привет. Вопрос, наверняка, глупый, но в голову ответа не приходит и на пэхэпэ дот нэт ответа не нашлось (как и в поиске). Пытаюсь вывести с помощью echo/print строку, содержащую php код вида '<?php ... ?>'. На выходе это дело вырезается, если только не включить код php в SGML комментарий ('<!-- <?php ... ?> -->'). php установлено как модуль apache, сами apache и php древние (1.3.1x и 4.3.0) и нужны именно такие. Собственно, вопрос в том, как вывести в браузер именно php код (не &lt;?php ...) в моем случае (если можно, без ob). Спасибо. =)

-----upd
php был подключен как CGI-приложение
366
03 апреля 2009 года
int
668 / / 30.03.2005
может eval тебе нужен? иначе почему не &lt;&gt;?
287
04 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Оказалось, что это не нужно. Просто переклинило. =) Но все равно интересно, можно ли этот эффект подавить. Ведь получается, что в любом случае вывод, можно сказать, в холостую прогоняется и фильтруется в поисках "<?php" и "?>". Imo, это лишнее.
366
04 апреля 2009 года
int
668 / / 30.03.2005
Я так и не понял что там гоняется и фильтруется. Когда встречается тэг ?>, считается, что php код кончился и начался обычный текст. Можешь попробовать '?'.'>'
287
04 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Когда в сырце встречается открывающий/закрывающий тег php — понятно, что он выполняет свою функцию. Речь идет именно о фильтрации этих двух тегов на выходе скрипта. Причем этой фильтрации нет, если запускать интерпретатор php из командной строки (вынь, в shell любом, наверняка, аналогично). Т. е. это характерно для php привязанного к apache. Наверняка, эта фильтрация отнимает лишь миллиардные доли производительности, но.. Но просто интересно, как ее убрать. =)

Чтобы было яснее. Я не понимаю, как можно убрать на выхлопе скрипта на веб-сервер следующее php содержимое:
 
Код:
<div><?php BZ ?></div>

и не убрать это:
 
Код:
<div><!-- <?php BZ ?> --></div>

не обработав вывод (со стороны интерпретатора/веб-сервера) каким-нить re или какими-либо другими непосредственными манипуляциями
366
06 апреля 2009 года
int
668 / / 30.03.2005
<?php BZ ?> наверное не убирается, а исполняется. У тебя константа BZ ммм... как бы это сказать. Она просто есть и ничего не делает :)
А вот как может <!-- <?php BZ ?> --> не выполниться, не понятно.
287
06 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Нет, именно убирается. =) Иначе это было бы вообще дико, что php себя еще и на выводе по второму разу парсит. :) "BZ" я написал для примера. Код php вырезается напрочь, независимо от его содержимого. В ответ на это:
 
Код:
<?php echo '<?php echo "BZ" ?>f' ?>

получаю страницу:
 
Код:
f
.
На это:
 
Код:
<!-- <?php echo '<?php echo "BZ" ?>f' ?> -->

или это:
 
Код:
<?php echo '<!-- <?php echo "BZ" ?>f -->' ?>

получаю вот это:
 
Код:
<!-- <?php echo "BZ" ?>f -->

Именно так и не иначе. А выдвигать предположения о том, что я там или сям не туда / не так смотрел, можно до бесконечности. =)

А еще интереснее становится от того, что в одном из относительно недавних постов в другой ветке вывод php содержал '<?php что-то там внутри ?>'. Не думаю, что он был снят руками с интерпретатора, скорее обыденным способом из браузера.

-----------------------------------------

Все оказалось проще. Пользуюсь преимущественно Google Chrome, в других браузерах проверить сообразил только сейчас. Так вот, в opera все выводится так, как полагается. Т. о., Chrome просто пытался по-особому трактовать "<?php ... ?>" (не знаю, из каких именно соображений), вырезал это, а на замену ничего не подставлял.
366
08 апреля 2009 года
int
668 / / 30.03.2005
 
Код:
<?php echo '<?php echo "BZ" ?>f' ?>
выдаёт вот что:
Цитата:
<?php echo "BZ" ?>f

Ты уверен, что смотрел исходный код страницы в браузере?

apache 2.2.11, php 5.2.9

287
08 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Так ведь:

Цитата:
Все оказалось проще. Пользуюсь преимущественно Google Chrome, в других браузерах проверить сообразил только сейчас. Так вот, в opera все выводится так, как полагается. Т. о., Chrome просто пытался по-особому трактовать "<?php ... ?>" (не знаю, из каких именно соображений), вырезал это, а на замену ничего не подставлял.



Смотрел и делал все так, как и описывал. Ниже аттачмент. Это премудрость Chrome, а с php все в порядке. Так что проблемы в нет в принципе.

366
08 апреля 2009 года
int
668 / / 30.03.2005
Надо было об этом подумать ещё когда появилась фраза, что в консоли всё нормально.
353
14 апреля 2009 года
Nixus
840 / / 04.01.2007
(Сам себе) И когда же программисты научатся смотреть исходный код страниц?
287
14 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Omg. И когда же форумчане научатся читать глазами. Я уже не знаю каким образом обозначить, что Google Chrome В СЫРЦЕ СТРАНИЦЫ,
ОТКРЫВАЕМОМ ПО "КОТНЕКСТНОЕ_МЕНЮ->ПРОСМОТР_КОДА_СТРАНИЦЫ", НЕ ПОКАЗЫВАЕТ <?...?> КАК МИНИМУМ ПРИ ВЫВОДЕ НЕ РАЗ ОБОЗНАЧЕННОГО ВЫШЕ ИСХОДНИКА.

Скриншот даже выкладывал. Даже не смешно. :O
12
15 апреля 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: Shiizoo
Omg. И когда же форумчане научатся читать глазами. Я уже не знаю каким образом обозначить, что Google Chrome В СЫРЦЕ СТРАНИЦЫ,
ОТКРЫВАЕМОМ ПО "КОТНЕКСТНОЕ_МЕНЮ->ПРОСМОТР_КОДА_СТРАНИЦЫ", НЕ ПОКАЗЫВАЕТ <?...?> КАК МИНИМУМ ПРИ ВЫВОДЕ НЕ РАЗ ОБОЗНАЧЕННОГО ВЫШЕ ИСХОДНИКА.


И тем нарушает стандарт. Хотя чего ждать от бэтки.

[COLOR="Silver"](Сам себе) И когда же люди претендующие на звание адекватного разработчика научаться проводить пряморукое тестирование. Которое будет заключаться хотя бы в том, что бы просмотреть сорцы в разных браузерах, причем сразу по возникновении проблемы.[/COLOR]

287
15 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Такое впечатление, что постеры меня уморить решили. =)

Смотреть результат в разных браузерах — резонно, смотреть сырцы в разных браузерах — до этого случая (о_О) и в голову бы не пришло. ДИКО. Не знаю, кто, как и где, а я под каким-нибудь "source code of ..." именно исходный код понимаю, ожидаю его увидеть и именно так его воспринимаю. Я полагаю, если прочитать ветку от начала до конца внимательно (двух страниц даже нет :O), то последовательность поиска врядли покажется такой, что придется самому себе что-то там говорить привздыхающе. Хотя если еще пара человек аналогично отпишется, я приму за веру, что искать причину из класса обозначенной в топике стоит именно во встроенных средствах просмотра исходного кода разных браузеров. А там уж, наверное, и до включения/отключения сессий путем манипулирования favicon недалеко (imv+ho).

Я же просто отталкивался от того предположения, что, получая специфичные для CGI переменные окружения от apache, php менял свое поведение на отличное от того, которое показал в командной строке. Тем более, что в памяти зависла пара открывающий/закрывающий тэгов в исходнике, приведенном в одной из тем HTML раздела. Зря, как оказалось. Но предположение о недокументированной фильтрации хоть и выглядело дико, а и рядом не стояло с таким вот видением понятия сырец от GOOGLE.

Спасибо, весело. =)
12
15 апреля 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: Shiizoo

Не знаю, кто, как и где, а я под каким-нибудь "source code of ..." именно исходный код понимаю, ожидаю его увидеть и именно так его воспринимаю.


В данном контексте правильно под сорцами понимать именно тот код, который ты видишь в браузере при "просмотреть исходный код страницы". Мы же веб разработкой занимаемся ;)

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

Если тебя это весилит, да ради бога. Хорошее настроение благоприятно сказывается на самочувствиии человека.

P.S. Если кто считает данный подход неверным, вэлкам с обоснованием.

287
15 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Видимо, я не осведомлен о чем-то, на основе чего вы выводите необходимость просмотра именно исходного кода, т. е. тела документа, полученного от веб-сервера средствами разных браузеров. Еще раз подчеркну — исходного кода, а не результата его интерпретации или чего бы там ни было, что подразумевает преобразование этого самого кода. Может, они (два понятия выше) вовсе не одно и то же означают? Я о таком нигде не читал и ни от кого не слышал (прежде). Подскажете, может? Если да, то я вникну и запомню, дабы никого в будущем не дезинформировать. А если нет, то я по-прежнему не вижу необходимости обращения к помощи нескольких браузеров (к помощи их внутренних средств просмотра кода), чтобы выявлять подобные проблемы. Конечно, это если забыть про открытую вновь премудрость Google Chrome.

P. S. Предваренный заголовком 'Content-Type: text/plain' упоминавшийся мной ранее код php вывелся в Google Chrome как следует.
276
15 апреля 2009 года
Rebbit
1.1K / / 01.08.2005
Да что ж вы на парня то набросились :)
Многим бы в голову пришло что броузер искаверкает сорс страницы ?
Думаю не больше чем половине, и то только потому что уже встречались с подобным.
287
15 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Я, честно, ни разу не встречал (или не замечал), чтоб именно браузер этим занимался, только веб-серверы.
276
15 апреля 2009 года
Rebbit
1.1K / / 01.08.2005
Цитата: Shiizoo
Я, честно, ни разу не встречал (или не замечал), чтоб именно браузер этим занимался, только веб-серверы.


Посмотри как FF осображает сорс выделеного фрагмента. Часто отличается от оригинала. Весь сорс кажысь показывает as is.

287
15 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Так речь именно обо всем сырце в целом и идет. К просмотру кода элемента недоверие возникло интуитивно, сразу и закрепилось на совсем. Я, по правде говоря, о таком способе просмотра кода даже и не вспомнил до вашего упоминания. А если еще и подумать, то, imho, браузер, предлагающий такую возможность, просто каждый раз генерирует код для элемента, а не сопоставляет кускам разобранного сырца элементы сгенерированной страницы (точнее наоборот). Для XML я бы это еще мог представить, но для HTML, который пишется абы как — даже не тянет.

Что касается коверканья именно сырца всей страницы, то, если это частое явление, остается только каким-нибудь специализированным предсказуемым инструментом вывод веб-сервера ловить. Я таким тот браузер, какой в данный период преимущественно используется, и считал. =) Это не проблема, но еще более удручает, что даже с такой ерундой у браузеров уже в 2009 году не лады.

Если, конечно, для такого поведения нет какого-то раузмного обоснования (может, даже формально закрепленного).

P. S. Наверное, в 99.9% вывод веб-сервера снимал той или иной версией Opera. Получился хороший пример, показывающий, что чрезмерная опека — тоже вредно. ^)
12
16 апреля 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: Shiizoo

Еще раз подчеркну — исходного кода, а не результата его интерпретации или чего бы там ни было, что подразумевает преобразование этого самого кода.


Потому, что результат инерпретации может не совпадать с тем, что ты расчитываешь видеть. Хотя бы бы из CSS, хотя понятно в данном случае его нет, но это не более чем частный случай. Поэтому нужно просматривать именно исходник, а не то, что мне пытается отрисовать браузер. Я очень часто лезу в исходный код нагенерированной страницы, когда возникают проблемы я лезу туда всегда. Если проблема не решается с ходу или выглядит аномально, то лезу в исходник не только всегда, но и всегда с разных браузерах, а в особо клинических случаях еще и сохраняю из брауезра страницу и смотрю, чего же он там насохранял. Это хорошее правило которое может при дебаге съкономить кучу времени особоенно когда разребаешь чужую генерацию страниц.

Сколько ты с этим промучился? Час? Два? Доведись мне столкнуться с подобным, проблема была бы решена максимум минут за 15-ать.

287
16 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Было бы не лишним привести пример—два, когда браузер (отличный от Chrome — заклеймлен) выдает для HTML или XHTML полной исходный код в измененном виде. Не вполне уверен про пробельные символы и регистр (больно благодатная почва для самодурства), но все остальное ожидаю увидеть в точности таким, каким было передано ему от веб-сервера.

Я, кстати, выше указывал, что считаю, что браузер выдает исходник не путем построения его по дереву DOM, а именно так, как он его принял — т. е. хранит исходник где-то у себя. Тот же Chrome показывает в сырце продублированные тэги body, незакрытые, перекрывающиеся и т. п. тэги как они есть. В дереве же продублированных body, например, нет. Как нет и в innerHTML элемента, тэгами которого он обрамлен (или где-либо выше по дереву). Так вот, стоило бы тогда мое мнение опровергнуть, если какой-либо стандарт или просто практика построения браузеров утвердила вывод сырца преобразованным (в смысле семантики, а не цветов, незначащих отступов и всяких рюшечек-свинюшечек), а не как копию оригианала.

А Chrome или сам KHTML, возможно, вообще отдельная история, т. к. построен на том же, нутро чего должен просматривать (в случае других браузеров это либо не так, либо у них просто все грамотно). Тут же вспомнился недавний случай, когда при просмотре исходного кода страницы, куда уже авторизовался, просмотрщик Chrome стабильно (многократно и неизменно) терял авторизацию и выдавал страницу приглашения авторизоваться (может я какую-то важную деталь успутил, но запомнил именно так).
12
16 апреля 2009 года
alekciy
3.0K / / 13.12.2005
Под "результат инерпретации" я понимаю результат рендеринга страницы, т.е. то, что мы видим в окне браузера.

HTML спецификация явно запрещает изменение документа, поэтому Chrome и сохраняет его "as is". Т.е. получается, что даже исходный код он выводит как отрендеренные данные. Именно поэтому я бывает предпочитаю сохранять страницу и уже смотреть исходный код в текстовом редакторе, хотя с таким своеволием браузера еще ни разу не сталкивался.
287
17 апреля 2009 года
Shiizoo
958 / / 14.03.2004
Интересно, конечно, но просмотр спецификация HTML 4.01, HTTP 1.1, XHTML в поисках такого ограничения результатов не дал. Упоминание про исходный код вообще и явное указание одновременно есть в UAAG (1, 2). Не знаю, насколько сильное влияние они имеют на браузеростроителей вообще, но вот данный пункт, по-моему, в большем почете (по-моему, даже со времен еще до появления самих документов).
12
17 апреля 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: Shiizoo
Интересно, конечно, но просмотр спецификация HTML 4.01, HTTP 1.1, XHTML в поисках такого ограничения результатов не дал.


http://www.w3.org/TR/html401/charset.html#h-5.2.2

Цитата:

User agents may provide a mechanism that allows users to override incorrect "charset" information. However, if a user agent offers such a mechanism, it should only offer it for browsing and not for editing, to avoid the creation of Web pages marked with an incorrect "charset" parameter.


Мне кажется это достаточно явным указанием на запрет перекодирования. Браузер занимается только интерпретацией потока байт от сервера и ни когда не вносит в него какие либо изменения (можно как опыт для страницы переключиться на другую кодировку и сохранить её, сохраненая копия все равно будет идеинтична данным с сервера).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог