通过Javascript将PHP注入Value属性

时间:2012-12-04 06:48:47

标签: php javascript jquery html code-injection

我正在尝试使用javascript将存储在PHP $ _SESSION变量中的值注入到输入标记的“value”属性中。我能够在“value”属性中成功注入PHP代码,但存储的值不会出现在文本框中。我的代码如下:

HTML:

<input type="text" name="fname" value="" />

使用Javascript:

fields.eq(n).attr('value', "<?php echo $_SESSION['fname'] ; ?>");

问题是 通常 $_SESSION['fname']变量的值放在输入框中。但那是的情况。单击该按钮将PHP代码注入value属性时,这就是HTML的样子:

<input type="text" name="fname" value="<?php echo $_SESSION['fname'] ; ?>" />

这就是我想要的样子,但在文本框中,它实际上显示的是PHP代码,而不是$_SESSION['fname']中存储的值。

我有什么遗失的吗?这不应该工作吗?任何帮助表示赞赏!

enter image description here

3 个答案:

答案 0 :(得分:1)

Php代码在请求时被解释,因此就浏览器/ javascript而言,您必须将“注入”的代码视为一个简单的字符串。

你可以这样做,使用一个返回会话var:

的calue的回调
$('#someButton').click(function() {
     $.ajax({
           type: 'POST',
           url: <callbackUrl>,
           data: <params if any>
           }).done(function( msg ) {
                fields.eq(n).attr('value', msg);
                });
});

答案 1 :(得分:1)

PHP是服务器端脚本,这意味着:PHP将在服务器上执行。

JavaScript是一个客户端脚本,这意味着:JavaScript将由浏览器执行。

通常默认情况下,.php文件将由服务器上的PHP引擎处理,从而执行PHP脚本。结果将发送给客户端。这就是为什么当你有.php文件时,<?php?>之间的事情将由PHP引擎处理,你不会看到中的实际PHP脚本客户端。有时您可以配置HTTP服务器,以便PHP引擎也处理.html文件。

对于其他文件,HTTP服务器(例如Apache)将直接将整个文件发送到客户端,而不由PHP引擎处理,因此任何PHP脚本都将进行处理,并且直接去客户端。

现在您的问题是您尝试将一些PHP放入JavaScript文件(.js),并希望它将被执行,但事实上它将。因此,当您尝试使用显示的JavaScript设置input元素的值时,将设置“text”<?php echo $_SESSION['fname'] ; ?>

如果您将JavaScript 放入您的.php文件,或将您的JavaScript文件(*.js)重命名为*.php,您将获得价值期望的。

或者您可以在页面中添加额外的JavaScript,使用PHP设置“全局”变量,并在.js文件中使用该“全局变量”。
window.myFname = <?php echo $_SESSION['fname'] ; ?>;


根据您的要求,您可能需要选择如何设计。如果您只想设置值,您可以只执行我提供的两个建议中的一个。如果你想动态获取值 (即在需要时获取值),你会像其他人一样建议使用AJAX。

答案 2 :(得分:0)

假设您已包含jQuery库。

<强> getUser.php

<?php echo $_SESSION['fname']; ?>

对于 JavaScript

$(document).ready(function(){
    $.get("getUser.php", function(data) {
      fields.eq(n).attr('value', data);
    });
});

供参考,http://api.jquery.com/jQuery.get/