10

可能重复:
PHP 上传脚本 - 自动创建文件夹

我有一个基于表单创建文件夹的 PHP 脚本。我想知道如果它已经存在,是否有办法不创建和替换该文件夹?

<?php 
mkdir("QuickLinks/$_POST[contractno]");
?>
4

7 回答 7

16

您可以使用is_dir

<?php 
$path = "QuickLinks/$_POST[contractno]";
if(!is_dir($path)){
  mkdir($path);
}
?>
于 2012-07-12T15:12:21.023 回答
4

一般来说:

$dirname = "whatever";
if (!is_dir($dirname)) {
    mkdir($dirname);
}

特别是:在执行涉及用户输入的文件系统(或任何其他类型的敏感)操作时要非常小心!当前示例(创建目录)并没有留下太多开放的攻击面,但验证输入永远不会受到伤害。

于 2012-07-12T15:12:35.593 回答
3

使用is_dir检查文件夹是否存在

$dir = "/my/path/to/dir";
if (!is_dir($dir)) {
    if (false === @mkdir($dir, 0777, true)) {
        throw new \RuntimeException(sprintf('Unable to create the %s directory', $dir));
    }
}

注意不受控制的输入,很危险!

于 2012-07-12T15:13:34.527 回答
2

你可以试试:

<?php 
    if (!is_dir("QuickLinks/$_POST[contractno]"))
        mkdir("QuickLinks/$_POST[contractno]");
?>
于 2012-07-12T15:13:04.463 回答
1

你可以看看:

http://php.net/manual/en/function.is-dir.php

于 2012-07-12T15:12:07.140 回答
1

使用 PHP 的 is_dir 函数检查是否已经存在目录,只有在没有目录时才调用 mkdir 函数。

于 2012-07-12T15:13:01.880 回答
0

在使用 POST 变量创建目录之前,请在此处执行一些验证规则(正则表达式)!

if(!file_exists("QuickLinks/$_POST[contractno]"))
    mkdir("QuickLinks/$_POST[contractno]");
于 2012-07-12T15:13:29.783 回答