PHP和Javascript:使用Javascript变量获取文件内容

时间:2013-10-23 21:42:47

标签: javascript php html variables

有人可以帮助我理解为什么这不起作用吗?

var uname = "<?php echo strtolower($_GET['un']) ?>";
var source = "<?php echo file_get_contents('accounts/"+uname+"') ?>";
console.log(source);

我已经尝试了一段时间才能使这个工作,它似乎似乎没有。在我添加源变量之前,它工作正常并在页面上显示un变量。

感谢。

4 个答案:

答案 0 :(得分:4)

您正在混合客户端和服务器端技术... + uname +看起来像PHP命令中的JavaScript变量......在呈现页面之前,JavaScript变量不可用。

...试

var source = "<?php echo file_get_contents('accounts/'. $_GET['un']) ?>";

答案 1 :(得分:2)

您将uname设置为javascript变量,然后尝试使用php读取它。

var source = "<?php echo file_get_contents('accounts/'.strtolower($_GET['un'])) ?>";
console.log(source);

我必须说这无论如何都不适合公众使用。

答案 2 :(得分:0)

我只是想指出,您不需要PHP来访问查询字符串中的变量,正如已经提到的那样,您在这里混合技术。另请注意,您的问题示例存在安全问题,我非常确定这些问题会持续存在,因为您需要清理所调用脚本中的输入!

您的完整示例可以在javascript中完成。我将jQuery用于ajax调用(你可以省略它的ofc并显然自己处理ajax调用 - 我只是懒惰;-))和MDN snippte用于查询字符串检索。 / p>

// populate a variable with your query string (window.location.search) - courtesy of MDN
var oGetVars = new (function (sSearch) {
  var rNull = /^\s*$/, rBool = /^(true|false)$/i;
  function buildValue(sValue) {
    if (rNull.test(sValue)) { return null; }
    if (rBool.test(sValue)) { return sValue.toLowerCase() === "true"; }
    if (isFinite(sValue)) { return parseFloat(sValue); }
    if (isFinite(Date.parse(sValue))) { return new Date(sValue); }
    return sValue;
  }
  if (sSearch.length > 1) {
    for (var aItKey, nKeyId = 0, aCouples = sSearch.substr(1).split("&"); nKeyId < aCouples.length; nKeyId++) {
      aItKey = aCouples[nKeyId].split("=");
      this[unescape(aItKey[0])] = aItKey.length > 1 ? buildValue(unescape(aItKey[1])) : null;
    }
  }
})(window.location.search);

// with jQuery
$.ajax({
    url: "accounts/" + oGetVars.un,
    success: function(data, textStatus, jqXHR) {
        console.log(data);
    }
});

// plain javascript
var xhr = new XMLHttpRequest();
xhr.open("GET", "accounts/" + oGetVars.un, true);
xhr.onreadystatechange = function () {
    if(http.readyState == 4 && http.status == 200) {
        console.log(this.responseText);
    }
};
xhr.send();

[edit]使用普通的javascript XMLHttpRequest调用更新示例。

答案 3 :(得分:-3)

试试这个:

<?php $uname = strtolower($_GET['un']); ?>
var source = "<?php echo file_get_contents('accounts/'.$uname) ?>";