Re: check if a file is included

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ANR Daemon schreef:
Greetings, Jochem Maas.
In reply to Your message dated Friday, September 12, 2008, 17:05:58,

I like my 'schreef' better.

actually $_SERVER[script_name] is probably better if not being used from
a webserver.


you didn't mention wanting to use the cmdline.
untested code follows:

<?php

function indirectCall($s)
{
        if (php_sapi_name() == 'cli') {
return strstr($s, $argv[0]) !== false; } else {
                return strstr($s, $_SERVER["REQUEST_URI"]) !== false;
        }
}


Actually, it must be (Windows-proof):


a, why must it be windows proof, nobody asked for that?

b, does this take into account that $_SERVER['SCRIPT_FILENAME'] is not available of some versions of IIS?

c, you'd think __FILE__ and $_SERVER['SCRIPT_FILENAME'] used consistent slashes on a given system, no? (I doubt
you need to do the funky translation.

d, there is no account take for symlinks, if you really want to be pedantic:

	realpath(__FILE__) != realpath(getenv('PATH_TRANSLATED'))

e. the OP wanted it to work on the cmdline as well (sounds silly to me but there you have it)

but really this is all madness. put the file outside the webroot OR stick it in a subfolder
with a .htaccess containing:

Deny From All

<?php

function indirectCall($s)
{
  return (strtr($s, '\\', '/') != strtr($_SERVER['SCRIPT_FILENAME'], '\\', '/'));
}

if(!indirectCall(__FILE__))
{
  // we got you there, fool!
}

?>

For those who do not know: Windows support both back- and forward slashes as
directory separators. Since DOS 3.3 at least.
Even
php.exe -f "//host/share/script.php"
works.




--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux