gpt4 book ai didi

javascript - 在链接中转义javascript中的特殊字符

转载 作者:行者123 更新时间:2023-11-30 17:24:05 25 4
gpt4 key购买 nike

不确定我问的问题是否正确。但这就是我想要的:我有这段代码:

$content = rawurlencode(file_get_contents("c://Server/www/Codice/LOGS/".$user."/".$file));
$thelist .= "<li class=files><a href=javascript:alert('".$content."') class=filelink>".$file."</a></li>";
echo $thelist;

我想要的是提醒 (实际上这只是一个测试,我想使用 $content 作为函数中的参数) $content 当我点击链接时。我应该怎么做?

我猜如果文件是一个简单的 txt 文件就可以正常工作。但是我在这里使用的文件是一个C++程序,其中包含字符<>,显然

最佳答案

首先您需要获取文件内容。这非常简单,除了您需要确保 $user$file 不包含任何意外字符,例如 "../" 这会将您带到指定目录之外。使用 preg_match() 的示例:

if (!preg_match ('/^[\w\d]+$/', $user) ||
!preg_match ('/^[\w\d]+$/', $file)) {
/* Error */
return;
}
$content = file_get_contents("c://Server/www/Codice/LOGS/".$user."/".$file);

接下来,您需要将内容转换为有效的 javascript 字符串。为此,您需要转义反斜杠 引号行终止符 个字符(包括 U+2028U+2029)。我相信最简单的方法是使用 json_encode() :

$code = json_encode ($content);

代码(在 javascript: 部分之后)在技术上是一个 URL,所以它必须用 rawurlencode() 进行转义。 :

$href = 'javascript: ' . rawurlencode ("alert ($code)");

然后需要使用 htmlspecialchars() 适本地转义 href(以及文件名)用作 HTML 属性。我认为这实际上可以为 $href 跳过,因为字符串在 rawurlencode()

之后是 HTML 安全的
$href_h = htmlspecialchars ($href);
$file_h = htmlspecialchars ($file);

现在我们终于可以输出结果了。我喜欢用 HEREDOC将变量与 HTML 混合时:

echo <<<_
<li class=files><a href="$href_h" class=filelink>$file_h</a></li>

_;

关于javascript - 在链接中转义javascript中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24600996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com