在php中,可以很方便地从文件末尾取得文件的扩展名。
使用php函数pathinfo,可以做到这一点,在使用中注意文件的扩展名前的点号。
使用pathinfo()获取到的扩展名,是不包括点号的。
以下介绍二种获取文件扩展名的方法,分别如下。
方法1,
<?php /*** example usage ***/ $filename = 'filename.blah.txt'; /*** get the path info ***/ $info = pathinfo($filename); /*** show the extension ***/ echo $info['extenstion']; ?>
方法二,与方法一基本相同,不过它使用字符串操作来得到扩展名,使用.号来作为分隔符。
代码:
<?php /*** example usage ***/ $filename = 'filename.blah.txt'; echo getFileExtension($filename); /** * * @Get File extension from file name * * @param string $filename the name of the file * * @return string * **/ function getFileExtension($filename){ return substr($filename, strrpos($filename, '.')); } ?>
在php中获取http请求的头信息,可以用php自带的函数getallheaders()。
此函数如下:
(PHP 4, PHP 5)
getallheaders — Fetch all HTTP request headers
说明
array getallheaders ( void )
Fetches all HTTP headers from the current request.
This function is an alias for apache_request_headers(). Please read theapache_request_headers() documentation for more information on how this function works.
返回值
取得信息时,返回数组形式的http headers信息,否则失败的话,则返回false。
例1,
foreach (getallheaders() as $name => $value) {
echo "$name: $value\n";
}
?>
注意:此函数只能在apache环境下使用。
在iis或nginx并不支持,可以通过自定义函数实现,如下:
if (!function_exists('getallheaders'))
{
function getallheaders()
{
foreach ($_SERVER as $name => $value)
{
if (substr($name, 0, 5) == 'HTTP_')
{
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
}
}
return $headers;
}
} ?>
测试:
print_r(getallheaders());
结果:
(
[Accept] => */*
[Accept-Language] => zh-cn
[Accept-Encoding] => gzip, deflate
[User-Agent] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)
[Host] => localhost
[Connection] => Keep-Alive
)
在php程序中,默认会输出header信息:
(Status-Line) HTTP/1.1 200 OK
Date Wed, 23 Feb 2011 02:30:46 GMT
Server Apache/2.2.13 (Win32)
X-Powered-By: PHP/5.2.3
Content-Length 30
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type text/html
要避免输出以上版本信息,可以修改php.ini 的expose_php把默认的On改成Off即可。
隐藏和伪装Apache的版本,隐藏php头部版本的话,可以参考如下的方法。
1,在Apache 的http.conf中添加:
ServerSignature Off
ServerTokens Prod
其中,ServerSignature Off告诉Apache在错误页(HTTP Status 404之类)不显示服务器版本信息,但此选项不影响可正常访问的页面(HTTP Status 200之类)。正常访问网页的Server Header里面依然有服务器版本信息。
ServerTokens Prod告诉Apache在服务器头信息中(Server Header)中只返回Apache,不返回服务器操作系统与Apache的版本信息。
2,隐藏php头部版本php.ini
expose_php = Off
隐藏PHP程序头部发出的:X-Powered-By: PHP/5.2.4类似的信息
在php.ini文件中设置:
expose_php = Off
可以避免输出:X-Powered-By: PHP/5.2.4 这样的版本信息。