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 に答える