将文件名作为变量传递给PHP

将文件名作为变量传递给PHP,php,Php,当我请求此URL时: 我希望PHP代码创建一个名为:datafile.txt的文件,该文件将包含以下数据: test.txt,1485902100000,25<CR><LF> 你没有做任何错误检查。为什么你认为一切都会好起来?如果您发现一些错误,我首先要检查的是文件权限 <?php # GRAB THE VARIABLES FROM THE URL $File = str_replace("/", "_", $_GET["filename"]); $Fil

当我请求此URL时:

我希望PHP代码创建一个名为:
datafile.txt
的文件,该文件将包含以下数据:

test.txt,1485902100000,25<CR><LF>

你没有做任何错误检查。为什么你认为一切都会好起来?如果您发现一些错误,我首先要检查的是文件权限

<?php
 # GRAB THE VARIABLES FROM THE URL
 $File = str_replace("/", "_", $_GET["filename"]);
 $FileName = $_GET['filename'];
 $HeureTronconMesure = $_GET['time'];
 $DonneeCapteur = $_GET['data'];
 # --------------------------------

 if (!$FICHIER = fopen($File, "a")) {
     //there was an error opening the file, do something here
 }

 fputs($FICHIER, $FileName);
 fputs($FICHIER , ",");
 fputs($FICHIER, $HeureTronconMesure);
 fputs($FICHIER , ",");
 fputs($FICHIER, $DonneeCapteur);
 fputs ($FICHIER , "\r\n");

 fclose($FICHIER);  
 ?>

尽管如此,我还是通过使用和连接字符串极大地简化了这段代码

<?php
// replace any slashes in the filename with underscores
$file = str_replace(["/", "\\"], "_", $_GET["filename"]);

// build a string out of your data
$data = "$_GET[filename],$_GET[time],$_GET[data]\r\n";

// write the data to the file, checking if it returns false
if (!file_put_contents($file, $data)) {
    //there was an error writing the file, do something here
}

从查询字符串直接提供的数据中写入文件内容似乎是一个坏主意。您所说的文件名需要转义是什么意思?你能给我看看吗?答案里有。你是说我应该加引号“”还是用不同的方式声明那个变量?很抱歉,“转义”不会跟我说话,我是个新手。我在提供的答案中转义了文件名,以防止任何人传递带有
/
或``的文件名。我只是指出而已。
<?php
// replace any slashes in the filename with underscores
$file = str_replace(["/", "\\"], "_", $_GET["filename"]);

// build a string out of your data
$data = "$_GET[filename],$_GET[time],$_GET[data]\r\n";

// write the data to the file, checking if it returns false
if (!file_put_contents($file, $data)) {
    //there was an error writing the file, do something here
}