无法在HTTP Get Request PHP中保存URL参数

时间:2016-04-27 06:43:06

标签: php http curl arduino url-parameters

我正在使用Arduino及其GSM Shield。这是一个硬件设备,允许我对任何IP地址或Web URL发出HTTP GET请求。

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

现在,当我在浏览器中访问带有参数的网址时,效果很好。一切都保存,可以通过DB访问。但是当Arduino发出请求或我使用cURL ping网址时,记录不会被保存。

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

我已经看过会议,等等没有运气。

提前致谢!!

EDIT :::

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 {
  };
?>

这是Arduino代码:

 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);
 }

注意 - 我们正在使用MAMP在localhost上进行开发,使用ngrok隧道到localhost:8888。当您在浏览器中访问ngrok网址时,它可以正常工作,但是当我们通过请求访问它时,它不会正常工作。包含的网址无关紧要且不活跃。

0 个答案:

没有答案