使用php的MKDIR 3级以上
级别1的名称未知;是用户指定的&可以是任何内容。level2和level3的名称是已知的,将保持不变。 当前工作目录包含mkdir.php文件,该文件是在level1中使用用户提供的名称创建目录所必需的。 下面的mkdir.php文件完成了这项工作,但不知道它是否正确。希望得到专家的认可和建议。提前谢谢使用php的MKDIR 3级以上,php,Php,级别1的名称未知;是用户指定的&可以是任何内容。level2和level3的名称是已知的,将保持不变。 当前工作目录包含mkdir.php文件,该文件是在level1中使用用户提供的名称创建目录所必需的。 下面的mkdir.php文件完成了这项工作,但不知道它是否正确。希望得到专家的认可和建议。提前谢谢 level1/level2/level3/CWD/mkdir.php 为什么使用\而不是/ 您使用的变量太多,可以将路径写入目录,在其中使用一行创建新目录 $\u POST['Name']
level1/level2/level3/CWD/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";
}
}
?>
<?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";
}
}
?>
如果您正在运行
mkdir.php
,则可以连续使用dirname()
,直到达到level1
此外,清理输入数据以防止恶意用户在系统上创建“恶意”目录也很重要
if(isset($_POST['Name'])) {
$new_dir_name = $_POST['Name'];
// it should work on linux and windows
$new_dir_path = '../../../../'; # '/' should be at the end!!!
//use this if one above doesn't work on windows
//$new_dir_path = '..\\..\\..\\..\\';
if(mkdir($new_dir_path.$new_dir_name, 0777, true)) {
echo "dir created successfully";
}
else {
echo "dir not created";
}
}
如果您正在运行
mkdir.php
,则可以连续使用dirname()
,直到达到level1
此外,清理输入数据以防止恶意用户在系统上创建“恶意”目录也很重要
if(isset($_POST['Name'])) {
$new_dir_name = $_POST['Name'];
// it should work on linux and windows
$new_dir_path = '../../../../'; # '/' should be at the end!!!
//use this if one above doesn't work on windows
//$new_dir_path = '..\\..\\..\\..\\';
if(mkdir($new_dir_path.$new_dir_name, 0777, true)) {
echo "dir created successfully";
}
else {
echo "dir not created";
}
}
测试你的代码。在xammp中,即在htdocs中,在级别1之上创建一个级别的目录。删除最后一个..\\n将在级别1中创建。如果指定了CWD,是否需要结束“/”。例如,
。/../CWD
?/是必需的,因为$new\u dir\u path.$new\u dir\u name。否则它将在一个级别下创建dir,dir将是level2$\u POST['Name'],这正是以前发生的事情,我不明白为什么会发生这种情况。谢谢你的澄清。测试了你的代码。在xammp中,即在htdocs中,在级别1之上创建一个级别的目录。删除最后一个..\\n将在级别1中创建。如果指定了CWD,是否需要结束“/”。例如,。/../CWD
?/是必需的,因为$new\u dir\u path.$new\u dir\u name。否则它将在一个级别下创建dir,dir将是level2$\u POST['Name'],这正是以前发生的事情,我不明白为什么会发生这种情况。感谢您的澄清。级别1的dirname未知。它是一个域名,可以是任何东西,例如sample.com、example.com等。但是,感谢提供卫生代码,但给出了unknown“。。。在线…
。我需要更改或添加一些内容吗?@CodeCruncher我的代码没有假定任何关于级别1的名称,因此这应该可以工作。由于卫生代码导致的错误怎么办?是不是因为缺少一个)
?@CodeCruncher是的,我很抱歉,它是在我脑子里编译的:)我还需要修改代码吗?现在,它给出了一些长名称required
之类的错误。感谢您的及时帮助。级别1的目录名未知。它是一个域名,可以是任何东西,例如sample.com、example.com等。但是,感谢提供卫生代码,但给出了unknown“。。。在线…
。我需要更改或添加一些内容吗?@CodeCruncher我的代码没有假定任何关于级别1的名称,因此这应该可以工作。由于卫生代码导致的错误怎么办?是不是因为缺少一个)
?@CodeCruncher是的,我很抱歉,它是在我脑子里编译的:)我还需要修改代码吗?现在,它给出了一些长名称required
之类的错误。谢谢你的及时帮助。