如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。 这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。 is_uploaded_file() 仅可用于 PHP 3 的 3.0.16 版之后,以及 PHP 4 的 4.0.2 版之后。如果你执意要用老版本,可以用下面的函数来保护自己:
解决方案 »
- PHP+Smarty+Mysql 乱码
- 请问把所有abc(...)替换成abc<...>有什么办法?(...不定)
- smarty 数组 问题
- 如果将数组的索引和值分别处理成字符串????
- 关于数据库插入问题
- PHP中调用sqlite3的方法名
- 怎么使用第三方账号登录自己的网站呢?
- 求助,急!关于php的module
- 没分了,但是还得问,请大家帮忙:怎样自动检测如果当前页没有被设置为首页,则在关闭ie的时候自动弹出提示窗口,怎么作?
- 这种效果如何实现?谢谢!
- 通过email里的一个地址可以更改数据。
- can't connect to mysql server on 'server' (10065) 这个是什么错误呀。
当register_globals=on时,这个测试就非常有必要了
的设置。
function uploadFile($file_name, $temp_name="", $i=0){
global $_FILES, $FILE_PATH;
$file_path = $FILE_PATH;
if(!is_uploaded_file($_FILES['FileName']['tmp_name'])){
echo "不是通过http post上传的文件";
return false;
}
if(!file_exists($file_path)){
mkdir($file_path, 0777);
}
if(!$temp_name){
$temp_name = str_replace(' ', '_', $file_name);
}
if(file_exists($file_path."/".$temp_name)){
$i++;
$temp_name = substr($file_name,0,strrpos($file_name,".")).
"[$i]".strrchr($file_name,".");
return uploadFile($file_name, $temp_name, $i);
}
$file_name = str_replace(' ', '_', $temp_name);
move_uploaded_file($_FILES['FileName']['tmp_name'], $file_path ."/".$file_name);
return $file_name;
}
if($_FILES['FileName']['name']){
$FileName = uploadFile($_FILES['FileName']['name']);
if(!$FileName){
echo "上传正文失败";
exit;
}
}
下面引自本论坛(请原谅,我已不记得是谁说的了):需要更改 php.ini 的三个地方upload_max_filesize = 51M
post_max_size = 52M
memory_limit = 56M这三个参数分别定义 上传文件的允许最大体积、POST 数据允许的最大数据量、最大的内存占用量。每一个都需要定义的比前一个大才可以接收文件的那个 php 页的最顶端上加上这么一行,不然很可能传一半的时候就被告知超时:set_time_limit(0);