1

我试图在 PHP 中使用 if 语句来创建一个目录来上传文件。我正在使用一个引用自身的表单,这样我就可以创建另一个文件夹并将另一组文件上传到具有不同名称的不同文件夹,或者如果我选择的话,将另一组文件上传到同一个文件夹,一旦第一个有完全的。问题是if我使用的语句似乎不起作用。当我提交表单时,它会第二次创建该文件夹,无论该文件夹是否已经存在。

我的if陈述是怎么回事?

<?php
    $dirname = $_REQUEST['dirname'];
    $taken = $_REQUEST['taken'];
    $location = $_REQUEST['location'];
    $subject = $_REQUEST['subject'];
    $urldirectory = $_REQUEST['urldirectory'];

    function makeDirectory($dirname) {
        mkdir(trim($dirname, 0777));
        mkdir(trim($dirname.'/thumbs', 0777));
    } 

    if (file_exists($dirname)) {
        echo "the directory exists and it is called: " . trim($dirname);        
    } else {
        makeDirectory($dirname);
    }

    //........... code omitted from here for brevity............

?>

<form enctype="multipart/form-data" method="post" action="upload2.php">
<input type="submit" name="submit" value="Upload" />
4

1 回答 1

0

处理目录创建和检查的方式存在一些问题:

  • 您检查是否$dirname存在,如果不存在,则创建trim($dirname, 0777).
  • trim需要一个字符串作为第二个参数,但您传递一个整数(即0777)。我的猜测是,你想传递0777mkdir,而不是传递给trim

我不知道第二点,但第一点肯定会导致file_exists($dirname)两次连续提交具有相同表单值的表单失败。我建议尽早清理请求值,即使用

$dirname = trim($_REQUEST['dirname']);

$dirname从那里开始使用,无需任何进一步的修剪

于 2013-05-24T15:33:33.783 回答