1
level1/level2/level3/CWD/mkdir.php

Level1 の名前は不明です。ユーザー指定であり、何でもかまいません。level2 と level3 の名前は既知であり、静的なままです。現在の作業ディレクトリには、ユーザーが指定した名前で level1 にディレクトリを作成するために必要な mkdir.php ファイルが含まれています。以下の mkdir.php ファイルは機能しますが、それが正しい方法かどうかはわかりません。専門家の承認とアドバイスが欲しい。前もって感謝します。

<?php
    if (isset($_POST['Name']))
    {   
    $newdir = $_POST['Name'];
    $dirname = "..\\$newdir";   

    $step1 = "..\\CWD";     
    $step2 = "..\\$step1";      
    $step3 = "..\\$step2\\$dirname";    

    if (mkdir($step3, 0777, true))
        {
        echo "dir created successfully";
        }
        else
        {
        echo  "dir not created";
        }
    }
?>
4

2 に答える 2

4

走っていればに到達するまで連続してmkdir.php使用できます。dirname()level1

また、悪意のあるユーザーがシステム上に「不正な」ディレクトリを作成するのを防ぐために、入力データをサニタイズすることも重要です。

$name = filter_input(INPUT_POST, 'Name', FILTER_VALIDATE_REGEXP, array('options' => array(
    'regexp' => '/^\w+$/',
    'flags' => FILTER_NULL_ON_FAILURE,
)));

if (!is_null($name)) {
    $base = dirname(dirname(dirname(__DIR__)));
    //      level1  level2  level3  CWD
    $path = sprintf('%s/%s', $base, $name);

    mkdir($path, 0777, true);
}
于 2013-08-26T06:25:28.113 に答える