Salve, anticipo che non sono molto esperto di PHP e HTML.
Sto cercando di realizzare una pagina web che visualizzi i dati raccolti da alcuni sensori tramite Arduino.
Ho sottoscritto un servizio di hosting gratuito nel quale ho creato la pagina e il database necessario. Purtroppo non riesco ad inviare direttamente i dati a questa pagina, probabilmente perchè si tratta di un server condiviso ed arduino non gestisce bene la cosa. Per risolvere il problema ho installato Apache /MySQL/PHP su una macchina nella mia rete e qui posso popolare il database. Ho pensato quindi di fare in modo che quando il mio pc riceve i dati li invii a sua volta al server remoto tramite una chiamata GET nello script PHP che uso per inserire i dati nel DB. Inserendo i dati tramite un form HTML tutto funziona regolarmente, quando i dati vengono inviati da Arduino invece finiscono solo nel database locale.
Sapete darmi una mano? Come fa il server remoto a distinguere i due casi. Ho cercato nei log di Apache ed ho trovato questa differenza: nella richiesta fatta da messaggio Arduino dopo la stringa GET/..... ci sono due codici 302 e 49 seguiti da "-" "-"
Nella richiesta generata da inserimento dati nel form i codici sono 302 697 seguiti dal nome della pagina php "http://localhost/get_test.html" e da un header "Mozzilla(5.0 (windows NT 10; Win64; x64) ..........."
Sapete aiutarmi a fare in modo che lo script funzioni in entrambi i casi?
Grazie in anticipo
Questo è il codice PHP:
Codice PHP:
/ REPLACE with your Database name
$dbname = "sensor_data";
// REPLACE with Database user
$username = "username_DB";
// REPLACE with Database user password
$password = "PWD_DB";
// Keep this API Key value to be compatible with the ESP32 code provided in the project page. If you change this value, the ESP32 sketch needs to match
$api_key_value = "xxxxxxxxx";
$api_key = $value1 = $value2 = $value3 = "";
foreach(getallheaders()as $name=>$value){
echo"$name:$value\n";
}
header("Location: http://aqair.byethost31.com/getdata.php?api_key=xxxxxxxxx&value1=12&value2=13&value3=14&submit_b=");
if ($_SERVER["REQUEST_METHOD"] == "GET") {
$api_key = test_input($_GET["api_key"]);
if($api_key == $api_key_value) {
$value1 = test_input($_GET["value1"]);
$value2 = test_input($_GET["value2"]);
$value3 = test_input($_GET["value3"]);
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO Sensor (value1, value2, value3)
VALUES ('" . $value1 . "', '" . $value2 . "', '" . $value3 . "')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
}
else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}
else {
echo "Wrong API Key provided.";
}
}
else {
echo "No data posted with HTTP GET.";
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}