我的'保存文件'php代码有什么问题?

时间:2017-10-05 19:04:32

标签: php web elgg

问题很简单,但我会提供一些背景资料,希望能更容易回答。

因此,我正在使用ELGG框架并从表单和文本框中获取信息,希望将该数据打印到一个简单的文本文件中。

不幸的是,由于某种原因,这给我带来了很多麻烦,无论我在哪里,我都无法弄清楚为什么。

代码如下

    <?php

error_reporting(E_ALL);
//Get the page
$title = get_input('title');
$body = get_input('body');
$date = date("l jS  F Y h:i A");

//remove any possible bad text characters


$FileName = $title . ' ' . $date;
//print to file
//get filename and location to save
$folderName =  '/Reports/' . $FileName . '.txt';
$ReportContent = "| " . $body . " |";

//write to the file
file_put_contents($folderName, $ReportContent, 0);

//error check to see if the file now exists
if (file_put_contents($folderName, $ReportContent)) {
    system_message("Report Created (" . basename($folderName) . ")");
    forward(REFERER);
} else {
    register_error("Report (" . basename($folderName) . ") was not saved!");
    forward(REFERER);
}

所以上面应该做的是从标题和正文框中抓取文本(我至少可以从标题中确认它),然后将其保存在/ reports /文件夹下(插件的完整路径是Automated_script_view /报告/如果需要)。然而,我总会得到寄存器错误,我似乎无法找到原因。

我认为它与文件夹(/ reports /)的声明有关,好像我把那部分拿走了,它通过并提交,虽然它似乎没有实际保存在任何地方。

非常感谢任何和所有建议!

1 个答案:

答案 0 :(得分:0)

函数 file_put_contents(文件,数据,模式,上下文)返回成功时写入文件的字符数,或者失败时返回FALSE。请注意以下更正,您的脚本将正常工作:

1您的文件名有一个'非法'字符“:”来自您连接的字符串的$ date部分,以形成文件名。

2删除 file_put_contents($folderName, $ReportContent, 0); 由于该函数返回一个整数,因此使用简单:

if( file_put_contents($folderName, $ReportContent) > 0 ){
//true
 }else{
//false
}