在存在script.php的目录外上载文件
我的目录结构如下在存在script.php的目录外上载文件,php,Php,我的目录结构如下 Root |---Includes | |--script.php | |---uploads | | |---index.php My index.php有一个表单,该表单使用名称并将其发布到script.php文件。我想在上载中创建文件夹 script.php if(isset($_POST['name'])) { mkdir('../uploads/'.$_POST['name']); } 当
Root
|---Includes
| |--script.php
|
|---uploads
|
|
|---index.php
My index.php有一个表单,该表单使用名称并将其发布到script.php文件。我想在上载中创建文件夹
script.php
if(isset($_POST['name']))
{
mkdir('../uploads/'.$_POST['name']);
}
当我将script.php移动到根文件夹并删除../时,这运行正常,但当我使用上面的代码时,这不起作用尝试以下操作(假设您在Apache上运行网站) 此外,我还避免直接使用
$\u POST
变量,因为您可能希望文件夹有干净的名称
如果要使用相对路径,可以使用
$destination = sprintf('%s/../uploads/%s', dirname(__FILE__), $_POST['name']);
index.php包含script.php,当前文件夹是Root,无论包含的文件在哪里。只需使用
dirname(\uuuu FILE\uuuuu)
即可获取包含脚本的当前文件夹。您的代码应该是:
if(isset($_POST['name']))
{
mkdir( dirname(dirname(__FILE__)) . '/uploads/'.$_POST['name']);
}
调用dirname两次以获取Includes的父文件夹
另一个安全提示:不要对文件名使用未经检查的用户输入(_POST,_GET..)。更多信息可在此处找到:是否有任何错误消息?您会收到哪些错误消息?设置了什么权限?因为
script.php
在您的includes
目录中。您是从另一个目录中的脚本中包含上载脚本,还是直接调用它?
if(isset($_POST['name']))
{
mkdir( dirname(dirname(__FILE__)) . '/uploads/'.$_POST['name']);
}