Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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 mkdir()函数-如果文件夹存在_Php_Forms - Fatal编程技术网

PHP mkdir()函数-如果文件夹存在

PHP mkdir()函数-如果文件夹存在,php,forms,Php,Forms,可能重复: 我有一个基于表单创建文件夹的PHP脚本。我想知道如果文件夹已经存在,是否有办法不创建和替换它 <?php mkdir("QuickLinks/$_POST[contractno]"); ?> 您可以查看: 您可以使用: 一般来说: $dirname = "whatever"; if (!is_dir($dirname)) { mkdir($dirname); } 特别是:在执行涉及用户输入的文件系统(或任何其他类型的敏感)操作时要非常小心!当前的示例(创

可能重复:

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

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

您可以查看:

您可以使用:


一般来说:

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

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

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

您可以尝试:

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

在使用POST变量创建目录之前,在此处执行一些验证规则(regexp)

if(!file_exists("QuickLinks/$_POST[contractno]"))
    mkdir("QuickLinks/$_POST[contractno]");
用于检查文件夹是否存在

$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));
    }
}

注意不受控制的输入,这是非常危险的

文件_exists不区分文件和目录,因此使用您正在查找的名称的文件将生成假true。is_dir检查它是否存在以及它是否是directory@hellsgate:在这种情况下,哪种方法更好。如果存在同名的文件或命名套接字,则无法创建目录。因此,
is_dir
听起来更准确,但可能导致误报和其他错误。纯属虚构。但是应该为现有的文件和目录调用回退代码。@mario:好的。对于这种情况,我现在意识到文件_exists是更好的选择,因为您列出了一些原因。您到底想实现什么?您的程序是做什么的?该程序根据表单的输入创建一个文件夹,然后将模板文件夹复制到新文件夹中。我想知道是否还有一种方法可以告诉脚本文件夹是否已经存在;不要复制任何东西?这是一个内部项目,需要密码才能访问网页。这似乎奏效了。有没有办法复制文件夹?如果文件夹已经存在,那么不要复制任何内容?是的,这应该可以:
。如果shell_exec()函数有问题,请使用受主题启发的其他复制函数替换它。
$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));
    }
}