[nycphp-talk] testing a theory
Paul Houle
paul at devonianfarm.com
Mon Feb 19 20:22:46 EST 2007
csnyder wrote:
> Depending on what q() does (output or return?) it might be more
> natural to use <?=q($var)?>. Usually in the context of templates I
> like to see functions returning so that output is completely under my
> control.
Some PHP installations support the short tags <? ?> and <?= ?> and
others don't. If you want to write code that runs everywhere, you have
to use <?php ... ?>
My q() function is (more-or-less) a shorthand for
echo(htmlspecialchars()), with special handling for empty values. It's
probably an over-aggressive grab of namespace, but it makes it easy to
develop a company-wide habit of writing code that resists XSS attacks.
(The 'prototyping' of PHP?)
Here's a fun fact about <?php that I figured out recently: I always
used to write include files like
<?php
...define some functions...
...define some classes...
...set a few global variables ...
?>[EOF]
where [EOF] is the end of the file.
The trouble was that from time to time, people using certain
editors would cause spaces and carriage returns to appear after the ?>.
This had the obnoxious effect of opening the output stream and making it
possible to send http headers, set cookies and do other important things.
One day I discovered that I didn't need the "?>"... I could just write
<?php
... PHP code...
[EOF]
And it works just fine. It scared the people at the office, but
they were glad to be rid of a nagging problem.
More information about the talk
mailing list