使用PHP脚本发出保存文件

时间:2016-05-24 03:37:28

标签: javascript php

我正在为我制作的JavaScipt网站制作一个PHP脚本。

目标是在单击按钮时将字符串的内容保存为HTML文件。

我正在使用jQuery发出Post请求。

我正在使用带有Apache 2服务器的Ubuntu操作系统。我正在写的文件夹具有权限777(仅用于测试,将废除此内容)。

要求是PHP必须存在于另一个文件中。

问题是每当我发出请求时,文件都会保存为空白。

要求是每个文件名必须是时间戳。该文件具有正确的文件名,但不包含内容。

到目前为止,这是我的代码:

var newURL = 'saveHTML.php/?fileNameData=' + fileName + '&htmlToSaveData=' + htmlToSave
$.post(newURL)
    .done(function(){
        alert('Your file saved as ...' + htmlToSave)
    })

我已经尝试了我注释掉的frwite功能,效果相同。

我通过传入参数($ argv [1]和$ argv [2])在终端中对此进行了测试。这很好。

我用来运行我的网站的JS看起来像:

$.post('saveHTML.php/', {
    fileNameData : fileName,
    htmlToSaveData : htmlToSave
})

我也试过这段代码,结果相同:

InnerException

fileName和htmlToSave都是字符串,虽然h​​tmlToSave相当长,实际上是我转换为字符串的html文本。

有没有人对这里发生的事情有所了解?我根本不是PHP开发人员。

我正在使用回调,所以我可以确定在将字符串传递给PHP之前我已经收集了所有的html。

我已阅读并测试了有关此问题here的建议,但这种方法毫无结果。

编辑不要对代码感到惊慌,我意识到这是一个安全问题,但这是一个学习项目,这不会在生产中。

1 个答案:

答案 0 :(得分:0)

我可以直接看到你的蝙蝠

$myFile = fopen($fileName, "w") or die('You do not have write permissions');

//fwrite($myFile, $htmlToSave);
file_put_contents($myFile, $htmlToSave); 
fclose($myFile);

file_put_contents采用文件名,而不是句柄。所以你只需要

file_put_contents($fileName, $htmlToSave);

编辑:我也觉得我应该指出你不应该允许你的用户命名你的文件。他们可能会为你的机器做一些讨厌的事情。