【问题标题】:can not Send data to php file using ajax无法使用ajax将数据发送到php文件
【发布时间】:2018-09-10 07:54:49
【问题描述】:

我有这个 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( 'graphs/fortigate_cpu.inc.php')  

即使变量是从 ajax 接收到的,为什么 type 不包含在包含会话中

【问题讨论】:

  • 1.这个ajax是如何被解雇的? 2. 是否访问了正确的 URL SNMP/graph.php?3。您是否检查了浏览器控制台,没有像URL NOT FOUND ?4 这样的错误。尝试先在 php 页面上打印 POST 数据以查看数据是否到来?
  • 网址是正确的,如您所见,我可以打印 ajax 变量 $type 的结果,但是当我尝试包含文件 ('graphs/'.$type.'inc.php') 时,结果即使 echo $type 的结果,在日志文件中也找不到文件(graphs/inc.php);是'fortigate _cpu',即php可以从ajaax接收值
  • 所以可能在 include('rrdtools.inc.php');变量设置为空?
  • 从安全的角度来看,这样做并不是一个好主意。您可能允许攻击者执行任意代码。无论如何,您可以使用输入变量来帮助决定执行哪些代码,但我真的不会让它直接指定要使用的文件的名称。它在自找麻烦 IMO
  • 关于这个问题,您的代码看起来应该可以工作。所以我会说要么a)回发实际上不是由ajax引起的(例如,可能同时发生提交到同一个脚本的表单-我们不知道你是如何触发你的ajax的),或者b)$ type 变量与 rrdtools.inc.php 中另一个同名的全局变量冲突,并且在该脚本中再次设置为空。我们又看不到了。但是看看代码,我能想到的只有两件事可能会导致它。

标签: javascript php ajax


【解决方案1】:

正如 cmets 中的其他用户所提到的,您的问题可能是您在包含 rrdtools.inc.php 后将 type 设置为不同的值。

尝试随机化(更改名称)类型变量:

$host = $_POST['hostname'];
echo $type123456=$_POST['type_char'];
include('rrdtools.inc.php');
include('graphs/'.$type123456.'.inc.php');

这是我唯一能想到的,因为我(和其他人)都测试了您的代码。 (前端和后端)。

PS:包含使用 post 参数是一种不好的做法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多