我想展示一些javascripts。为此我用php file_get_contents()然后json_encode()读取.js文件的内容并回显结果,然后在前端我通过$ .get()读取结果然后我做一个JSON.parse()结果(我试过没有解析它)但仍然eval()不能解决结果。
奇怪的是,如果我复制json_encode()的结果并将其粘贴到js变量中,那么eval()就可以了!
我做错了什么?
服务器端:
$name=$_GET['name'];
$t= file_get_contents('../graphics/'.$name);
$t= json_encode($t);
echo $t;
客户方:
$.get("php_lib/readGraph.php",{ name:name}, function(data, status){
if(status){
eval(JSON.parse(data));
}
else {
alert('Ajax error');
}
});
答案 0 :(得分:2)
无需将代码编码为json。您没有传递像变量这样的格式化数据,而是输出完整的JavaScript代码。我试着简单地删除json部分。
希望您粘贴的PHP只是一个示例,在允许人们从您的服务器输出文件之前,您正在进行认真的验证。在代码中指定路径远远不够,因为只需将..
添加到输入即可轻松避开。然后,黑客可以输出您的网络服务器正在运行的用户的所有内容,因为它具有读访问权限。甚至在您的Web根目录之外。除此之外,输出文件的更有效方法是使用google apps script。