2016-06-13 19 views
0

我正在尝试为文件上传创建一个随机文件夹名称。 文件夹路径应该像“receivedfiles/$ name $ date/”。相反,我得到这个:“receivedfiles /。13.06.2016/”。我真的不知道什么是错的...PHP创建带有两个变量的文件夹给出错误的文件夹名称

变量$ name是用户输入,可以是例如“Simon”或“Simon Jensen”取决于用户想要的内容。

$d = date('d.m.y'); 
$varfoldername = "../receivedfiles/. $name . $d ./"; 
mkdir($varfoldername , 0777 , true); 
$upload_folder = $varfoldername; 

多亏了很大的帮助我已删除从代码点以上,请参阅下面的代码只命名的日期的文件夹。

$name = $_POST['name']; 
$d = date('d.m.y'); 
$varfoldername = "../receivedfiles/$name$d/"; 
mkdir($varfoldername , 0777 , true); 
$upload_folder = $varfoldername; 

解决方案: $的名字第一次在后面脚本中指定。移动解决问题的一部分。如上所述更改文件夹路径解决了其余的问题 - 谢谢大家:)

+0

的问题是我用这个与其他相关信息之间的路径发送电子邮件$ _ POST [“名”] – CiroRa

+0

。该部分起作用。 –

+0

确定,但尝试在$ d变量之前打印$ name名称,以查看$名称内容是什么 – CiroRa

回答

0

。问题是这是来自发送电子邮件表单的代码。电子邮件在下面组成,fileupload在上面。所以当然这个变量在这条线上是不知道的。

显得格外,你写的问题

$varfoldername = "../receivedfiles/$name$date/"; 

的解决方案,因为它是双引号PHP解释$ ...作为变量,顺便说一下,打印$ varfoldername打印其内容

到看看输出是什么

+0

Thx。我更新了上面的代码并添加了一行。我只将日期作为文件夹名称。 –

0

好吧,额外的点在那里,因为你没有正确连接。第二行应该是这样的

$varfoldername = "../receivedfiles/" . $name . $d . "/"; 

,或者你可以因为你是使用双引号为您的文件夹名称值删除您的字符串中的点点滴滴。

+0

Thx。我更新了上面的代码并添加了一行。我只将日期作为文件夹名称。 –

+0

如果你没有得到任何回报$ name,那么$ _POST ['名称']不存在 – georaldc

+0

我用它来发送电子邮件,名称通过电子邮件发送,所以我相信它在那里。但是,如果有一次使用了变异,那它是空的还是取决于它写的是什么? –

0

首先,你需要检查$name变量是否为空。

然后,使用sprintf创建路径。它提供更灵活的格式,并帮助您摆脱冗余空间/点/等。试试这个:

$varfoldername = sprintf('../receivedfiles/%s%s/', $name, $d); 
相关问题