如果可以,我有一个问题.我有一个名为变量的变量,例如$source,它应包含文件的相对路径./uploads/2012/some-document.pdf
现在,这个$source变量将包含用户输入,通过$ _GET和$ _POST.我不希望人们输入URL,如果文件仅存在于本地服务器上,我只想做某事.
我的问题是,检查本地服务器上是否存在文件的最佳方法是什么?
这是我到目前为止所得到的:
1)file_exists可根据服务器的配置返回true,所以我可以用这一起stripos函数检查字符串的前几个charatcers是http://像这样:
if( file_exists($source) && stripos($source,'http://')!==0 ) {
echo 'File exists on local';
}
Run Code Online (Sandbox Code Playgroud)
但是,缺点是我必须指定所有不同的URL类型,例如https://,http://和ftp://才安全.
2)我realpath用来获取文件的绝对路径,如果找不到,则返回false.这看起来非常可靠,但不是100%这是最好的应用程序
3)用于preg_replace首先删除字符串中的所有URL提及,然后简单地使用file_exists.虽然这可能是最安全的,但它很可能是最密集的,我宁愿不使用这种方法.
php ×1