PHP 使用两个变量创建文件夹给出了错误的文件夹名称

PHP creating folder with two variables gives wrong foldername

我正在尝试为上传文件创建一个随机文件夹名称。 文件夹路径应类似于“receivedfiles/$name$date/”。相反,我得到这个:“receivedfiles/.13.06.2016/”。我真的不知道怎么了...

变量 $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;

解决方法: $name 是稍后在脚本中首先指定的。将其移至顶部解决了部分问题。如上所述更改文件夹路径解决了其余问题 - 谢谢大家:)

好吧,多出来的点是因为你没有正确连接。第二行应该是这样的

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

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

。问题是这是来自发送电子邮件表单的代码。电子邮件在下面组成,文件上传在上面。因此,当然该行不知道该变量。

难得的是,你把答案写在了问题里

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

因为它是双引号 php 将 $.. 解释为变量并打印其内容

顺便打印$varfoldername看看输出是什么

首先需要检查$name变量是否不为空

然后,使用sprintf创建路径。它提供了更灵活的格式,并帮助您摆脱多余的 spaces/dots/etc。试试这个:

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