Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅当用户登录时才允许显示图像。_Php_File_.htaccess_Session - Fatal编程技术网

Php 仅当用户登录时才允许显示图像。

Php 仅当用户登录时才允许显示图像。,php,file,.htaccess,session,Php,File,.htaccess,Session,我是PHP/Web开发新手,正在尝试创建一个安全的文件查看器。 我使用一个表单登录PHP会话,该表单检查phpmyadmin数据库中的有效信息 我的问题是如何禁用直接路径访问,但允许用户在登录时查看图像 我尝试了.htaccess文件。我已禁用该路径,但无法确定如何使用它显示图像 一旦我可以显示这些图像,有人对我如何确保只有登录的人才能查看这些图像有什么建议吗 非常感谢 附:第一篇帖子!:)(在其他线程上似乎找不到足够的信息)您应该添加一个PHP脚本,检查用户是否登录,如果是,则输出图像(它是什

我是PHP/Web开发新手,正在尝试创建一个安全的文件查看器。 我使用一个表单登录PHP会话,该表单检查phpmyadmin数据库中的有效信息

我的问题是如何禁用直接路径访问,但允许用户在登录时查看图像

我尝试了.htaccess文件。我已禁用该路径,但无法确定如何使用它显示图像

一旦我可以显示这些图像,有人对我如何确保只有登录的人才能查看这些图像有什么建议吗

非常感谢


附:第一篇帖子!:)(在其他线程上似乎找不到足够的信息)

您应该添加一个PHP脚本,检查用户是否登录,如果是,则输出图像(它是什么类型的文件)。你可以用它,那页上有一个详细的例子

if ($userIsLoggedIn) {
    $path  = realpath($imagePath . '/' . $_GET['filename']);
    if (substr($path, 0, strlen($imagePath) + 1) == $imagePath) {
        // Check that the user doesn't request ../../../etc/shadow or something
        // Add headers
        header('Content-Type: image/jpeg');
        readfile($imagePath . '/' . $_GET['filename']);
    }
}

您可以将文件放置在正常访问之外,并通过PHP访问它们,如下所示:

header('Content-type: '.$type);  //$type = 'image/jpeg' but can be other file type
header('Content-Length: ' . filesize($path . $filename));
header('Content-Disposition: attachment; filename=MyFileName.ext');
readfile($path . $filename);
exit();
检查用户是否可以查看此文件,然后如上所示显示它。如果要显示图像,可以放弃内容配置

但请确保在此之前不发送其他数据


您可能指的是MySQL或MariaDB,而不是phpMyAdmin。phpMyAdmin是管理员管理数据库安装的图形工具;另外两个是实际的数据库服务器软件。