フォームに基づいてフォルダーを作成する PHP スクリプトがあります。そのフォルダーが既に存在する場合、そのフォルダーを作成して置き換えない方法があるかどうか疑問に思っていますか?
<?php
mkdir("QuickLinks/$_POST[contractno]");
?>
フォームに基づいてフォルダーを作成する PHP スクリプトがあります。そのフォルダーが既に存在する場合、そのフォルダーを作成して置き換えない方法があるかどうか疑問に思っていますか?
<?php
mkdir("QuickLinks/$_POST[contractno]");
?>
is_dirを使用できます:
<?php
$path = "QuickLinks/$_POST[contractno]";
if(!is_dir($path)){
mkdir($path);
}
?>
一般に:
$dirname = "whatever";
if (!is_dir($dirname)) {
mkdir($dirname);
}
特に、ユーザー入力を伴うファイルシステム (またはその他の種類の機密性の高い) 操作を行うときは、十分に注意してください! 現在の例 (ディレクトリの作成) では、攻撃対象となる可能性はあまりありませんが、入力を検証しても問題はありません。
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));
}
}
制御不能な入力に注意、大変危険です!
あなたが試すことができます:
<?php
if (!is_dir("QuickLinks/$_POST[contractno]"))
mkdir("QuickLinks/$_POST[contractno]");
?>
あなたは見ることができます:
PHP の is_dir 関数を使用して、ディレクトリが既に存在するかどうかを確認し、存在しない場合にのみ mkdir 関数を呼び出します。
POST 変数を使用してディレクトリを作成する前に、ここでいくつかの検証規則 (正規表現) を実行してください。
if(!file_exists("QuickLinks/$_POST[contractno]"))
mkdir("QuickLinks/$_POST[contractno]");