我在函数中使用preg_match
来阻止提交图片扩展名!
现在我想阻止“〜”字符!
谁能告诉我怎么做到这一点?
function is_valid($url) {
$res = 1;
if (isset($url['path'])) {
if (preg_match('/\b.jpg\b/i', $url['path'])) { $res = 0; }
if (preg_match('/\b.gif\b/i', $url['path'])) { $res = 0; }
if (preg_match('/\b.png\b/i', $url['path'])) { $res = 0; }
if (preg_match('/\b.bmp\b/i', $url['path'])) { $res = 0; }
}
return $res;
}
我试过这个,但它不起作用:
if (strpos('~', $url['path'])) {
$res = 0;
}
答案 0 :(得分:0)
首先,您应该真正阅读有关正则表达式的内容!如果您已完成此操作,请阅读manual获取的phps strpos
。
您可以尝试preg_match('/[^~]+\.(png|jpg|gif|bmp)/i', $url['path'])
或者如果您想坚持自己的版本,
if (strpos($url['path'], '~') !== FALSE) {
$res = 0;
}
但无论如何,你的支票不会很安全。示例:有人将php文件重命名为png并上传,如果你的apache上激活了mime_magic,代码将被执行。因此检查文件的mimetype更安全。请参阅How do I find the mime-type of a file with php?作为示例。接受的答案提到了(现在)已弃用的函数,但如果你有PHP 5.3 +
,你可以使用http://de3.php.net/manual/en/function.finfo-file.php