我有这个php文件graph.php
$host = $_POST['hostname'];
echo $type=$_POST['type_char'];
include('rrdtools.inc.php');
include('graphs/'.$type.'.inc.php');
并且我尝试使用此Ajax代码将数据发送到此文件
var type_char='fortigate_cpu';//$('#graph').val();
var hostname='10.10.0.144';//$(this).attr('id');
//$('#device_host').val(id);
$.ajax({
type: 'POST',
url: 'SNMP/graph.php',
data: { hostname:hostname,type_char:type_char },
success: function(data) {
alert(data);
// show the response
$("#grph").attr("src", 'SNMP/graph.php');
console.log(data);
}
});
将数据发送到该文件时的结果是
fortigate_cpu作为type_char变量的值 当我在apache日志中打开error.log文件时 我收到此消息
include():无法打开要包含的'graphs / .inc.php'(include_path ='。:/ usr / share / php')
如您所见,即使char_type变量由ajax发送并打印在页面中,fortigate的值也不包含在include函数中 包含文件必须是
include( 'graphs/fortigate_cpu.inc.php')
即使从ajax接收到变量,为什么类型也不包含在include会话中
答案 0 :(得分:1)
正如其他用户在评论中提到的那样,也许您的问题是,在包含rrdtools.inc.php之后,您将type设置为其他值。
尝试随机化(更改名称)类型变量:
$host = $_POST['hostname'];
echo $type123456=$_POST['type_char'];
include('rrdtools.inc.php');
include('graphs/'.$type123456.'.inc.php');
这是我唯一能想到的,因为我(和其他人)都已经测试了您的代码。 (前端和后端)。
PS:包括使用post param是一个不好的做法。