PHP - 有关上传和问题的问题上传的图片文件

时间:2010-07-26 21:32:24

标签: php php4

我已阅读以下教程“Uploading Files To the Server Using PHP” 并且有几个与这些主题相关的问题。

Q1>该教程提到了

  

“请注意,PHP必须具有写访问权限   到$ uploadDir或上传将   失败“

对我来说,我只允许用户在用户登录网站后上传文件。 如果我们将$ uploadDir权限设置为777,那么每个人都可以拥有该文件夹的书面权限。如何避免这个问题?

另外我使用WAMP作为我的测试床,我可以模拟与真实网络服务器相同的情况吗?

Q2>为了防止直接访问,本教程提到:

  

“更好的方法是移动   上传目录远离您的网站   根。例如,web根目录   这个网站是:   / home / arman198 / public_html /来防止   直接列表我可以设置上传   目录到/ home / arman198 / upload /。“

现在我的问题是如何在其他网站页面上显示上传的图像。既然,上传不再可以直接访问?我需要在其他网站页面上动态显示上传的图像保存个人头像。有可能吗?

谢谢

3 个答案:

答案 0 :(得分:2)

对于第二个问题,您可以使用直接访问该目录的PHP脚本。让我们将其命名为image.php。让我们假设它可以采用参数id,如image.php?id=image_id。在该文件中,您可以使用超全局数组$_GET获取id。然后,您可以搜索具有该ID的图像,并将其作为响应发送。

第一个我不确定,但也许可以使用.htaccess文件。

答案 1 :(得分:2)

这是一个常见的问题。

所有现代计算机都有一个临时文件目录。在Linux / Unix上它是/tmp,在Windows上它通常是c:\temp。操作系统安装将在该目录上设置权限,以便任何人都可以在那里写入文件,但只有特权用户才能删除不属于他们的文件。这是PHP希望放置上传文件的地方;然后你的应用程序必须将它移动到其他地方(这是move_uploaded_file()函数的目的)。 Windows下的PHP可能需要在upload_tmp_dir文件中实际设置php.ini

一旦你有了一个上传的文件,你可以随意移动它,包括网络服务器可以读取它的位置。最大的问题是将这个目录放在代码库中非常容易。 不要那样做。除了编辑它们所服务的目录中的文件之外,只要你做任何事情,都会有问题。相信我:我已经在我继承的代码中处理了几次。让您的网络服务器从代码库之外的位置加载文件很容易。

另一种方法是生成下载脚本。这样,文件根本不需要由网络服务器提供。一个缺点是您无法利用Web服务器的MIME转换,但随后可以控制允许的类型的图像文件。

答案 2 :(得分:0)

对于第一个问题,请尝试将您的权限设置为775.这应该允许PHP将文件写入目录而不提供一般公共写访问权。