On Dec 29, 2006, at 2:00 PM, Dan Cech wrote:
I always use the __FILE__ constant. Can't be touched by user input. The
basename() and dirname() are handy to use along with it.

The problem comes when you're attempting to construct the correct
absolute URL for a given file. When running php as a cgi there doesn't
seem to be a method of achieving this securely, as in this setup
$_SERVER['SCRIPT_NAME'] will contain the php interpreter, like '/ php-cgi'.


What about using $_SERVER['DOCUMENT_ROOT'] like this?

$absoluteUrl = str_replace($_SERVER['DOCUMENT_ROOT'], '', __FILE__);

You should probably use preg_replace() to make sure it only strips off the beginning of the string, but you get the idea. I don't know how reliable DOCUMENT_ROOT is, but you could get around that by explicitly providing the document root for your site as a configurable constant.

define('MYSITE_DOC_ROOT', '/path/to/site/root');

$absoluteUrl = preg_replace('#^'.MYSITE_DOC_ROOT.'#', '', __FILE__);

-- Dell

_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

Reply via email to