gpt4 book ai didi

php - PHP 中 JS 函数调用中的简单引用

转载 作者:行者123 更新时间:2023-11-28 21:10:12 25 4
gpt4 key购买 nike

我已经阅读了很多有关此问题的回复,但没有发现 100% 正确的答案。

我希望在 php 中创建的代码如下所示:

<a href="#" onclick="a_js_function('moduleSee.php','sql_restriction','popup')">See</a>

a_js_function() 是一个内部 javascript 函数,它接收一些参数并像这样简单地调用

$str = '<a href="#" onclick="';
$str .= " a_js_function('moduleSee.php','sql_restriction','popup')";
$str .='">See</a>';

但是 sql_restriction 参数包含引号:

concat('000000',table_id)

并不是 100% 有效的解决方案是使用 \' 而不是 ' => 这允许 SQL 查询正确执行,但会创建一个 javascript 错误,从而阻止部分页面。

$str = '<a href="#" onclick="';
$str .= " a_js_function('moduleSee.php','concat(\'000000\',table.id)','popup')";
$str .='">See</a>';

看看 chrome 怎么说:

Uncaught SyntaxError: Unexpected number -> point the numbers of received argument: concat('000000',table.id)

因为用\'接收到'之间的000,所以js函数的参数出错,而不是SQL。避免在数字中使用引号会使 SQL 查询不起作用

输入 '\"\\''' 也不起作用,addslashes()两者都不是

有什么想法吗?

最佳答案

问题不在于你如何转义引号 - 反斜杠是正确的。但发生的情况是,您转义得不够,因为每次代码通过一种语言时,转义都会完成,下一种语言将不再看到它。代码

$str = '<a href="#" onclick="';
$str .= " a_js_function('moduleSee.php','concat(\'000000\',table.id)','popup')";
$str .='">See</a>';

是 php 的输出

<a href="#" onclick="
a_js_function('moduleSee.php','concat('000000',table.id)','popup')
">See</a>

Javascript 看到 concat 中的单引号并尝试结束字符串,然后被 0 搞糊涂了,这不是 javascript 关键字。您需要 JavaScript 才能看到以下内容

<a href="#" onclick="
a_js_function('moduleSee.php','concat(\'000000\',table.id)','popup')
">See</a>

这是通过转义 php 中的 \' 字符来完成的,这意味着您的 php 需要看起来像

$str = '<a href="#" onclick="';
$str .= " a_js_function('moduleSee.php','concat(\\\'000000\\\',table.id)','popup')";
$str .='">See</a>';

关于php - PHP 中 JS 函数调用中的简单引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8900010/

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