我正在为我制作的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都是字符串,虽然htmlToSave相当长,实际上是我转换为字符串的html文本。
有没有人对这里发生的事情有所了解?我根本不是PHP开发人员。
我正在使用回调,所以我可以确定在将字符串传递给PHP之前我已经收集了所有的html。
我已阅读并测试了有关此问题here的建议,但这种方法毫无结果。
编辑不要对代码感到惊慌,我意识到这是一个安全问题,但这是一个学习项目,这不会在生产中。
答案 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);
编辑:我也觉得我应该指出你不应该允许你的用户命名你的文件。他们可能会为你的机器做一些讨厌的事情。