我的file.php代码:
<?php
if(!isset($_GET['filename']) OR $_GET['filename'] == NULL) {
print("Error!");
exit();
}
$_GET['filename'] = htmlentities($_GET['filename'], ENT_QUOTES, "utf-8");
session_start();
include_once("/var/www/html/get.php");
for($i = 0; $i < $GLOBALS['files']['ile']; $i++) {
if($GLOBALS['files'][$i]['name'] == $_GET['filename']) {
if($GLOBALS['files'][$i]['priv'] == NULL OR $GLOBALS['files'][$i]['owner'] == $_SESSION['id'] OR (isset($_SESSION['privs']) AND in_array($GLOBALS['files'][$i]['priv'], $_SESSION['privs']))) {
if(file_exists($GLOBALS['files'][$i]['loc'])) {
header("Content-length: ".filesize($GLOBALS['files'][$i]['loc']));
header("Content-type: ".mime_content_type($GLOBALS['files'][$i]['loc']));
readfile($GLOBALS['files'][$i]['loc']);
} else {
print("Can't find that file!");
}
}
}
}
?>
在get.php文件中,我从数据库中加载有关我想访问的文件的信息(从数据库中)。
$_SESSION['privs'] //it's an array that holds privileges, i.e: site.priv.mess
$GLOBALS['files'] //holds info about all files that user can load, i.e: $GLOBALS['files'][0]['name'] is a name of first file in array
$GLOBALS['files'][0]['loc'] //holds info about first file localisation
$GLOBALS['files']['ile'] // holds sizeof($GLOBALS['files'])
图片效果很好,但是如果我尝试加载较大的文件,即重量为300MB的视频,然后文件加载,一切看起来都不错,但是如果我重新加载网站,它将无法正常工作... 我试图在浏览器中删除cookie(以更改会话ID),但是它可以工作...但是我可以做些什么来使其更好地工作呢?
编辑:在Firefox上看起来都不错,仅在Chrome上冻结:(
EDIT2:使用以下命令关闭会话:session_write_close();阅读文件之前修复了我的诅咒:P谢谢大家
答案 0 :(得分:3)
检查您的php.ini或使用phpinfo()
检查upload_max_filesize
,post_max_size
和memory_limit
的值。也许还要检查php脚本的最大执行时间。