将文件名作为变量PHP传递

时间:2017-02-01 22:04:27

标签: 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);  
 ?>

1 个答案:

答案 0 :(得分:3)

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

$("#jqGrid").bind("jqGridInlineAfterSaveRow", function (e, rowid, orgClickEvent) {
    console.log("[Start]jqGridInlineAfterSaveRow");
    console.log(rowid);
    console.log(orgClickEvent);
    console.log(e);

    var data = $("#jqGrid").jqGrid('getGridParam', 'data');
    $.each(data, function(index, item){
      if(item._id_ === rowid){
        console.log(item);
      }
    });    


    console.log("[End]jqGridInlineAfterSaveRow");
    return e.result === undefined ? true : e.result;
});

尽管如此,我通过使用some shortcuts并连接字符串来极大地简化此代码。

<?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 } 打开您的代码,现在它已经被弃用了很长时间。使用<?