我的目录结构就像
Root
|---Includes
| |--script.php
|
|---uploads
|
|
|---index.php
我的index.php有一个带名称的表单并将其发布到script.php文件。我想在上传的文件夹中创建文件夹
的script.php
if(isset($_POST['name']))
{
mkdir('../uploads/'.$_POST['name']);
}
当我将script.php移动到根文件夹并删除../但是当我使用上面的代码时它无法正常工作时运行正常
答案 0 :(得分:0)
尝试以下内容(假设您在Apache上运行您的网站)
$destination = sprintf('%s/uploads/%s', getenv('DOCUMENT_ROOT'), $_POST['name']);
另外,我会避免直接使用$_POST
变量,因为您可能希望为文件夹设置干净的名称。
如果您想使用相对路径,可以使用
$destination = sprintf('%s/../uploads/%s', dirname(__FILE__), $_POST['name']);
答案 1 :(得分:0)
script.php包含在index.php中,当前文件夹是Root,无论包含的文件在哪里。只需使用dirname(__FILE__)
获取包含脚本的当前文件夹即可。你的代码应该是:
if(isset($_POST['name']))
{
mkdir( dirname(dirname(__FILE__)) . '/uploads/'.$_POST['name']);
}
dirname被调用两次以获取包含的父文件夹。
安全性的另一个提示:不要使用未经检查的用户输入(_POST,_GET ..)作为文件名。可以在此处找到更多信息:http://php.net/manual/en/security.filesystem.php