Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在HTTP Get请求PHP中保存URL参数_Php_Http_Curl_Arduino_Url Parameters - Fatal编程技术网

Can';t在HTTP Get请求PHP中保存URL参数

Can';t在HTTP Get请求PHP中保存URL参数,php,http,curl,arduino,url-parameters,Php,Http,Curl,Arduino,Url Parameters,我在和Arduino及其GSM屏蔽一起工作。这是一个硬件设备,允许我对任何IP地址或web URL发出HTTP GET请求 因此,我们构建了一个PHP脚本来读取URL参数,并将数据提交到数据库。当它ping我们的服务器时,它将保存我们的Arduino数据 现在,当我使用浏览器中的参数访问URL时,效果非常好。所有内容都可以通过数据库保存和访问。但是当Arduino发出请求或者我用cURL ping URL时,记录不会被保存 我得到的响应显示它正在加载页面并返回预期的HTML。为什么我的PHP不读

我在和Arduino及其GSM屏蔽一起工作。这是一个硬件设备,允许我对任何IP地址或web URL发出HTTP GET请求

因此,我们构建了一个PHP脚本来读取URL参数,并将数据提交到数据库。当它ping我们的服务器时,它将保存我们的Arduino数据

现在,当我使用浏览器中的参数访问URL时,效果非常好。所有内容都可以通过数据库保存和访问。但是当Arduino发出请求或者我用cURL ping URL时,记录不会被保存

我得到的响应显示它正在加载页面并返回预期的HTML。为什么我的PHP不读取这些URL参数并保存它们

我调查过会议等,运气不好

提前谢谢

编辑:::

handle_data.php (parses parameters, saves them to DB)
<?php

// Setup our DB login info
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "arduino";

    if (!empty($_GET['lat']) && !empty($_GET['lon'])) {

        function getParameter($par, $default = null){
            if (isset($_GET[$par]) && strlen($_GET[$par])) return $_GET[$par];
            elseif (isset($_POST[$par]) && strlen($_POST[$par])) 
                return $_POST[$par];
            else return $default;
        }

        $lat = getParameter("lat");
        $lon = getParameter("lon");
        $person = $lat.",".$lon.",".$time.",".$sat.",".$speed.",".$course."\n";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO gps_data (latitude, longitude)
VALUES (".$lat.", ".$lon.")";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
// close connection
$conn->close();
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
    }
    else {
  };
?>

注意-我们正在使用MAMP在localhost上开发,使用ngrok隧道到localhost:8888。当您在浏览器中访问ngrok url时,它可以正常工作,但当我们通过请求点击它时,它就不能正常工作。包含的url不相关且不活动。

尝试输出请求变量,让我们知道您发现了什么。rfc2616第13.9节说GET不应有副作用。如果你想遵守这些标准,你可以使用POST。如果你能在这里发布显示你的问题的简化代码(两边都是Arduino/cUrl cmd line和PHP),它可能会帮助我们找到问题所在。就目前而言,你的问题无法得到回答。也就是说,如果您想自己跟踪问题,可以在PHP程序中插入调试代码,将从浏览器和cUrl/Arduino调用时执行的步骤的信息放入HTML输出(或本地日志文件)中。尝试输出请求变量,让我们知道你的发现。rfc2616的13.9节说GET不应该有副作用。如果你想遵守这些标准,你可以使用POST。如果你能在这里发布显示你的问题的简化代码(两边都是Arduino/cUrl cmd line和PHP),它可能会帮助我们找到问题所在。就目前而言,你的问题无法得到回答。这就是说,如果您想自己跟踪问题,可以在PHP程序中插入调试代码,将从浏览器和cUrl/Arduino调用时执行的步骤的信息放入HTML输出(或本地日志文件)中。
 if(started) {
      //GPRS attach, put in order APN, username and password.
      //If no needed auth let them blank.
      if (inet.attachGPRS("internet.wind", "", ""))
           Serial.println("status=ATTACHED");
      else Serial.println("status=ERROR");
      delay(1000);

      //Read IP address.
      gsm.SimpleWriteln("AT+CIFSR");
      delay(5000);
      //Read until serial buffer is empty.
      gsm.WhileSimpleRead();
      //TCP Client GET, send a GET request to the server and
      //save the reply.
      numdata=inet.httpGET("http://cd5d6640.ngrok.io", 80, "/handle_data.php?lat=44.87654&lon=-88.77373", msg, 50);
      //Print the results.
      Serial.println("\nNumber of data received:");
      Serial.println(numdata);
      Serial.println("\nData received:");
      Serial.println(msg);
 }