需要某些文件夹的权限

时间:2014-05-05 18:43:41

标签: php permissions

所以我目前的文件夹设置如下:

index.php
galleries
   -Party Weekend
       -2014
          -Bunchofimages.png
   -Other pics
       -Pictures.png

这会像我一样加载到我的主页上: http://metro.windowswiki.info/smpg/demo/

所以所有文件夹都是动态加载的,我想保护一些只有在您登录后才能看到的文件夹。

所以例如: 只有登录用户(或具有特定状态/等级的用户)才能看到文件夹Party weekend&普通用户(或未登录)的其他图片无法在此处查看此文件夹。

检查这个的最佳方法是什么?我是否需要手动检查每个文件夹是否有名称Party周末,如果是,请查看权限是否存在或者是否有替代方案?

提前致谢!

Solutition: scandirSorted(扫描所有文件夹/文件的函数现在在返回之前得到了检查)

在:

if(is_dir($basefolder.$currentdir))
{
    $folder = array_diff(scandirSorted($basefolder.$currentdir), array('..', '.', 'Thumbs.db', 'thumbs.db', '.DS_Store'));
}

后:

if(is_dir($basefolder.$currentdir))
{
    $folder = array_diff(scandirSorted($basefolder.$currentdir), array('..', '.', 'Thumbs.db', 'thumbs.db', '.DS_Store'));

    if ( $folder[2] == "Familie Weekend") 
    {
       isPermitted($folder[2]); //This is the check if user has permission to that specific folder (Will later update with permissions stored in database)
    }
}

感谢@Jerald Johnson,如果有人对此提出任何建议(我猜它不是很安全,不确定),请随时告诉我

2 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是将图像文件直接存储在数据库(例如MySQL)中,或存储在文件系统上的其他位置(即不在webroot中),数据库中的记录指向它们。这样,它可以代替查询数据库,而不是使用PHP扫描文件系统并获取图像。数据库中的映像记录还可以存储它是否应该对未授权用户可见。您必须编写一个PHP文件,该文件将在检查用户授权后自行输出图像。

如果你拥有它,图像文件保存在webroot中,那么没有登录的人如果可以猜出文件的名称,仍然可以查看它们。您可以通过使用模糊名称或将它们保留在文件系统(或数据库)中的其他位置来解决此问题。

只检查文件夹名称中的特定字符串的简单解决方案可能只适用于您只有几个文件夹,但它不能很好地扩展。使用数据库可以更轻松地管理不同级别的授权,并便于自动上传图像。

答案 1 :(得分:1)

您需要编辑代码以检查" Party Weekend"在名称中,并提示使用身份验证。

<?php
if (preg_match("/Party Weekend/",$_GET['f'])) {
die(login_function());
}