Почему не ставят последний тег ?>

igortik

Новичок
Начал последнее время часто встречать отсутствие закрывающего тега ?> в коде.
Собственно, - почему?
 

zerkms

TDD infected
Команда форума
Ситуация совсем не та же - пробелы после ?>, допущенные по невнимательности - частая причина появления "headers already been sent" и прочих сопутствующих проблем.
 

shelestov

я тут часто
Еще трояны в скрипты вставляются сразу после закрывающего тега.
На сколько я помню это рекомендация разработчиков PHP не ставить закрывающийся тег.
 

untied

Сдвинутый новичок
Почему троян сам не может поставить закрывающийся тег и прописаться после него? (отпарсить отсутствие закрывающего тега ?> дело нехитрое)
 

shelestov

я тут часто
Почему троян сам не может поставить закрывающийся тег и прописаться после него? (отпарсить отсутствие закрывающего тега ?> дело нехитрое)
Можно. Но как правило каждое исключение обрабатывать не хочется, поэтому троянописатели ограничиваются общими случаями (закрывающийся body, тег ?> и т.д.)
Лично я уже год как не ставлю закрывающие теги. Просто мне такудобнее.
 

Фанат

oncle terrible
Команда форума
это надо спрашивать у троянов. а не здесь. здесь совсем другой топик обсуждается.
 

igortik

Новичок
это надо спрашивать у троянов. а не здесь. здесь совсем другой топик обсуждается.
lol :D)))))))

Вчера тоже уже увидел что пишут:
For files that contain only PHP code, the closing tag ("?>") is never permitted. It is not required by PHP, and omitting it´ prevents the accidental injection of trailing white space into the response.
В тоге, мой код для консоли:

# only for *.php scripts
for i in `find ./ -type f -name \*.php`; do

#replacing \r\n, \n, \r by only \n ; deleting null strings ; deleting string with '?>'
sed 's/[\r\n]//g; /^ *$/d; /?>/d' $i > buffer;

#clearing file for adding new content
echo "" > $i;

#save result
cat buffer > $i;

# clearing buffer
echo "" > buffer;
done

rm buffer
 
Сверху