2017-02-01 21 views
1

當我請求這個網址:傳遞一個文件名可變PHP

http://example.com/csv_build.php?filename=test.txt&time=1485902100000&data=25

我希望PHP代碼來創建一個文件名爲:datafile.txt將包含以下數據:

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

由於某種原因,datafile.txt未被創建。

我犯了一個錯誤嗎?

<? 
# GRAB THE VARIABLES FROM THE URL 
$File = 'datafile.txt'; 
$FileName = $_GET['filename']; 
$HeureTronconMesure = $_GET['time']; 
$DonneeCapteur = $_GET['data']; 
# -------------------------------- 

$FICHIER = fopen($File, "a"); 

#ftruncate($FICHIER,0); 

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

fclose($FICHIER); 
?> 
+2

直接從查詢字符串中提供的數據中寫入文件內容看起來是個壞主意 – Andy

回答

3

你沒有做任何錯誤檢查。爲什麼你認爲一切都會好起來?如果您發現一些錯誤,我會檢查的第一件事是文件權限。

<?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); 
?> 

雖然說真的,我非常願意用some shortcuts和連接字符串簡化該代碼。

<?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

+0

請注意,在寫入文件之前,文件名需要被轉義... – miken32

+0

您的文件名意味着什麼需要轉義?你能告訴我嗎? –

+0

它在回答中 – miken32

相關問題