// What's my mime?
$_mime = 'text/plain';
if ($_file[strlen($_file)-1] == 'j') { $_mime = 'text/javascript'; }
else { $_mime = 'text/css'; }
我真的不明白为什么以上不起作用,我的服务器会响应两种输入类型:.min.js或.min.css
它应该是最后一个字符,后退一个字符,应该是j
或s
。
无论如何,响应总是text / css。当然严格的哑剧限制会破坏我的整个网站。
答案 0 :(得分:3)
你是一个人,一个常见的错误。
我们说你的文件名是script.js
。
长度为9,但由于数组中的计数从0开始,j
是第7个字母,s
是第8个字母。
string.js
^ ^
0 8
所以只需if ($_file[strlen($_file)-2] == 'j')
$file = 'script.js';
console.log('File name length:', $file.length);
console.log('First letter:', $file[0]);
console.log('Last letter:', $file[$file.length - 1]);
console.log('The letter you want:', $file[$file.length - 2]);

此外,我假设$_file
是一个包含文件名称的字符串。
无论如何,我希望你知道你没有进行哑剧式检查,只是检查文件扩展名 - 这并不能为你提供任何安全保障,而你无法确定文件的mime类型。您需要信任文件的来源。因此,如果文件由第三方上传到您的服务器,请不要使用这种方式来确定mime类型。
答案 1 :(得分:1)
看起来你只是检查文件扩展名,在这种情况下你可以尝试这样一个简单的函数来获得扩展名。
function filename($file){
return substr($file,0,strrpos($file,'.'));
}
function extension($file){
return strtolower(substr(strrchr($file,'.'),1));
}
请注意,此功能不是防弹,但在一个简单的场景中,例如它可以工作。