PHP网站问题

时间:2019-03-08 19:25:25

标签: php

我的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谢谢大家

1 个答案:

答案 0 :(得分:3)

检查您的php.ini或使用phpinfo()检查upload_max_filesizepost_max_sizememory_limit的值。也许还要检查php脚本的最大执行时间。