【问题标题】:modifying a js file on my server and reloading it?修改我服务器上的 js 文件并重新加载它?
【发布时间】:2011-09-09 02:43:47
【问题描述】:

如果我在<textarea> 中加载了一个带有保存按钮的 js 文件,我可以将其保存到我服务器上的现有 js 文件中,然后重新加载它。基本上,我想做的就像所见即所得一样工作,只是我希望能够将 js 保存到现有文件中。

我正在使用有效的 document.write ("<script src='file.js'></script>") 加载 js 文件。

顺便说一句,这个网站不让我在文件中写上'

【问题讨论】:

  • 要在帖子中包含标签和其他代码,请用 ` 字符引用它们。 (我已经编辑了你的帖子。)

标签: javascript dynamic load save


【解决方案1】:

简短回答:是的,但从您的帖子来看,我认为您不会觉得这很容易。

更深入地讲,您需要为此使用服务器端语言,例如 PHP。

我不会介绍如何使用 PHP 进行设置,我们假设您知道这一点,如果您不知道,那么您有一个很好的理由去谷歌搜索 :) 但是,这里有一个简单的工作示例脚本给你。

警告:允许人们写入服务器上的文件有很多陷阱。除了高度信任的人​​之外,您当然不想让任何人都可以访问这样的东西。除非您了解其中的含义,否则我不能过分强调您对此类事情的谨慎程度。

<?php

// Change this to the file you want to be editing
// This path is relative to this script
// So if this script is in /somewhere/something/scripts/save.php
// And your file is at /somewhere/something/files/hello.txt
// This should read: $fname = "../files/hello.txt";
$fname = "something.txt";
// Now don't touch anything else :)



// This checks if we've submitted the file
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // Get the posted content
    $content = $_POST['content'];

    // Open the file, or exit with an error message if we can't
    if (!$handle = fopen($fname, 'w')) {
        echo "Cannot open file ($filename)";
        exit;
    }
    // Write the new content into the file
    fwrite($fhandle, $content);
    fclose($fhandle);
}

// Get the contents of the file
$content = file_get_contents($fname);

?>
<form action="" method="post">
    <p>Editing <?php echo $fname; ?></p>
    <textarea name="content"><?php echo $content; ?></textarea>
    <input type="submit" value="Save" />
</form>

【讨论】:

  • 你让我意识到我没有提到 PHP 适合我。我不知道我可以在 PHP 中做到这一点。至于安全漏洞,当他们点击保存时,它只会保存到 js 文件中。用户可能会弄​​清楚这一点并保存到其他文件类型吗?你是这个意思吗? JS 是客户端,所以我很好奇实际会发生什么。顺便说一句,我是唯一可以访问此内容的人。
  • 好吧,首先,如果我可以注入 JS,我可以在您的网站上窃取会话。我可以包含远程脚本。如果您使用 Htaccess 将 JS 文件解析为 PHP(很多人都这样做),那么我也可以将 PHP 嵌入其中。授予某人对您网站上任何内容的写入权限是危险的,因为它几乎肯定会被滥用。如果你让他们选择他们想要编辑的文件,他们可能会在你的服务器上创建新文件,覆盖你的索引文件,等等。
  • 哦,我明白了。嗯,很高兴知道。幸运的是,我唯一需要修改的是值(在等号之后)。所以,如果我取消了文本区域并加载了可编辑的 div,我应该没问题。这样我可以更改某些值,而不是让用户(我)添加任何自定义代码。有人可以在等号后放置危险代码并让它执行吗?
  • 12; nastyFunction(); 怎么样?当您开始这样做时,就是对您接受的数据类型设置非常严格的限制。如果您正在编辑高度或数字,请执行$string = preg_replace('/[^0-9]/', '', $string); 或只是$string = (int) $string;。脚本可以添加诸如“px”之类的东西。如果您想允许字符串,请确保使用 preg_replace 删除确实不应该在其中的字符,然后确保其他所有内容都被转义。
  • 嗯,我不知道我是否正确拼写了 hmmm(谁在乎)。所以,你说如果我改变高度或其他东西,“px”可能会发挥作用,这可能会包含危险的字符串。如果我只接受数字怎么办?如果不是数字,则不会被接受。唯一需要改变的是数字。那里有什么危险吗?
猜你喜欢
  • 2021-06-24
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 2011-10-26
  • 2013-08-03
  • 1970-01-01
  • 2012-04-14
相关资源
最近更新 更多