在用PHP调用mkdir之前如何验证目录名称?

编码因子

我想创建一个函数,该函数将创建一个目录来将照片存储在文件系统中。假设在根目录中有一个名为“相册”的目录。页面上有一个表单,允许用户创建一个新专辑,该专辑将在“专辑”下创建一个子目录。

我也想拥有嵌套相册的功能。创建新相册时,管理员可以为相册名称提供正斜杠(/)分隔符以递归创建此文件夹结构。

我使用目录是因为我希望能够通过直接FTP访问服务器以处理大量相册来管理相册。每个照片目录可以具有一个可选album.properties文件,以具有与相册本身关联的任何元数据(例如,用于相册的缩略图)。

if (!is_admin()) die();
$album_name = $_GET['album_name'];
if ($album_name) {
   $directory = "/albums/" . $album_name;
   // TODO: How can I validate $album_name?
   if (file_exists($directory)) {
     echo "Album already exists, please choose a different name.";
   } else if (mkdir($album_name), 0777, true) { // Recursive is true
     echo "Album successfully created.";
   } else {
     // TODO: Is there a way to output a more detailed explanation?
     echo "The album could not be created.";
   }
}

请参阅TODOPHP代码中标记。另外,如果您到目前为止对我的方法有任何建议,那将很有用。

请注意,直到最近我才决定使用目录和属性文件,而不是数据库表来存储与相册/照片关联的元数据,因为我最近才发现客户端希望使用FTP。

不过,我仍然需要数据库表,以允许管理员将权限分配给已经存在的相册。例如,管理员可以与公众或其他非管理员用户共享特定的相册。/albums目录将无法直接访问,而是另一个目录.php将允许下载照片或读取元数据,但仅允许获得许可的用户使用。

编辑:

在我想要的内容上添加更多说明:

  1. 为了验证s$album_name是一个有效的目录名,如果它是无效的,我想输出一条错误消息。我也想向用户解释如何选择一个有效的目录名称。

  2. 如果mkdir失败,我想输出更详细的消息,以告诉用户他/她可以采取什么措施来纠正问题。

瑞恩斯

您可以使用正则表达式,也可以只检查mkdir是否成功。

请参阅有关此问题的答案以供参考:检查字符串以获取有效的目录名称

编辑1:

要检查mkdir函数是否会成功,您可以先使用is_writable之类的php函数来检查您是否有权在该位置进行写操作。如果没有,您可以让您的用户知道(但如果是这种情况,您可能应该考虑为什么他们试图在没有权限的地方写东西)。否则,如果mk_dir函数失败,您将能够记录失败并稍后检查问题。除此之外,您可能不应该先调查问题就不告诉用户太多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获得目录名称

来自分类Dev

使用PHP获取当前目录名称?

来自分类Dev

如何通过在shell脚本中调用的窗口对话框获取目录名称?

来自分类Dev

从子文件夹调用批处理文件时,如何获取当前目录名称?

来自分类Dev

获取目录名称

来自分类Dev

使用不带目录名称的.htaccess调用重写URL

来自分类Dev

如何压缩目录自动使用目录名称?

来自分类Dev

当与* .tex文件上的剪切一起使用时,mkdir产生错误的目录名称

来自分类Dev

mkdir()无法使用此代码创建用于上传照片的随机目录名称

来自分类Dev

当与* .tex文件上的剪切一起使用时,mkdir产生错误的目录名称

来自分类Dev

PHP PDO:无法连接,目录名称无效

来自分类Dev

PHP:获取不包含“ input…”文件的目录名称吗?

来自分类Dev

如何使用Gradle获取文件和目录名称?

来自分类Dev

如何使用.htaccess从URL隐藏目录名称

来自分类Dev

如何获取给定目录名称的树形哈希?

来自分类Dev

如何使用GetDirectories C#搜索数字目录名称

来自分类Dev

如何根据目录名称设置VisualSVN权限?

来自分类Dev

如何在Elixir中创建相同的目录名称?

来自分类Dev

如何只列出目录名称,不带尾部“ /”?

来自分类Dev

如何使用.htaccess从URL隐藏目录名称

来自分类Dev

如何使用Gradle获取文件和目录名称?

来自分类Dev

如何导航到具有特殊字符的目录名称

来自分类Dev

如何使用目录名称重命名文件?

来自分类Dev

如何使用通配符ls并查看目录名称

来自分类Dev

如何重新格式化目录名称?

来自分类Dev

如何使用Linux删除目录名称前的空格?

来自分类Dev

如何对这些目录名称进行数字排序?

来自分类Dev

如何在Expect Shell中使用变量目录名称

来自分类Dev

如何获取我运行命令的目录名称

Related 相关文章

  1. 1

    如何获得目录名称

  2. 2

    使用PHP获取当前目录名称?

  3. 3

    如何通过在shell脚本中调用的窗口对话框获取目录名称?

  4. 4

    从子文件夹调用批处理文件时,如何获取当前目录名称?

  5. 5

    获取目录名称

  6. 6

    使用不带目录名称的.htaccess调用重写URL

  7. 7

    如何压缩目录自动使用目录名称?

  8. 8

    当与* .tex文件上的剪切一起使用时,mkdir产生错误的目录名称

  9. 9

    mkdir()无法使用此代码创建用于上传照片的随机目录名称

  10. 10

    当与* .tex文件上的剪切一起使用时,mkdir产生错误的目录名称

  11. 11

    PHP PDO:无法连接,目录名称无效

  12. 12

    PHP:获取不包含“ input…”文件的目录名称吗?

  13. 13

    如何使用Gradle获取文件和目录名称?

  14. 14

    如何使用.htaccess从URL隐藏目录名称

  15. 15

    如何获取给定目录名称的树形哈希?

  16. 16

    如何使用GetDirectories C#搜索数字目录名称

  17. 17

    如何根据目录名称设置VisualSVN权限?

  18. 18

    如何在Elixir中创建相同的目录名称?

  19. 19

    如何只列出目录名称,不带尾部“ /”?

  20. 20

    如何使用.htaccess从URL隐藏目录名称

  21. 21

    如何使用Gradle获取文件和目录名称?

  22. 22

    如何导航到具有特殊字符的目录名称

  23. 23

    如何使用目录名称重命名文件?

  24. 24

    如何使用通配符ls并查看目录名称

  25. 25

    如何重新格式化目录名称?

  26. 26

    如何使用Linux删除目录名称前的空格?

  27. 27

    如何对这些目录名称进行数字排序?

  28. 28

    如何在Expect Shell中使用变量目录名称

  29. 29

    如何获取我运行命令的目录名称

热门标签

归档