PHP fopen() 在 JavaScript 逻辑中的漏洞
PHP fopen() 在 JavaScript 逻辑中的漏洞
我想在本地主机目录下创建一个文本文件。
以下是我的代码。
在app.php下方
document.getElementById("save_button").addEventListener("click", function() {
var content = document.getElementById("final_span").value();
var file_name = document.getElementById("filename").value();
$fn = strstr($file_name, '.', true);
$dir = "../project/Record";
$file = fopen($dir . "/" . $fn . ".txt", "w+");
fwrite($file, $content);
fclose($file);
?>
});
PHP fopen() inside javascript logic bug
在上述代码中,出现了一个PHP fopen() inside javascript logic bug的问题。问题的原因是JavaScript无法直接控制PHP的执行,因为JavaScript是在浏览器端执行的,而PHP是在服务器端执行的。为了解决这个问题,可以通过从JavaScript向PHP文件发起ajax调用来创建文件。
解决方法如下:
在app.php文件中,可以通过$_GET['file_name']获取从JavaScript传递过来的文件名,并进行相应的操作。
在这段代码中,通过fopen()函数创建了一个文件,并将内容写入该文件中。
另外,还有一个问题是在app.php文件中没有设置任何响应消息。可以通过在PHP代码中使用echo语句来设置响应消息,如:
echo "File created successfully!";
如果想要在JavaScript中传递变量content的值,可以将链接中的参数修改为:
"app.php?file_name=" + file_name + "&content=" + content
如果不想将内容显示在链接中,可以使用POST方法进行传递。可以参考以下链接中的解决方案: