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