Geocheats2 Δημοσ. 26 Απριλίου 2020 Δημοσ. 26 Απριλίου 2020 Χρησιμοποιώ αυτό το php για να μαζέψω κάποιες μεταβλητές από ένα esp8266 και να τις περάσω σε μια mysql το βρήκα εδώ <?php /* Rui Santos Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-mysql-database-php/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. */ $servername = "localhost"; // REPLACE with your Database name $dbname = "1"; // REPLACE with Database user $username = "1"; // REPLACE with Database user password $password = "1"; // 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 = "1"; $SERIAL = $SSID = $PASSWORD = $HVACCELL = $HVACMAIL = $CLIENTCELL = $CLIENTMAIL = $FRIDGENAME = $Reserved2 = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if($api_key == $api_key_value) { $SERIAL = test_input($_POST["SERIAL"]); $SSID = test_input($_POST["SSID"]); $PASSWORD = test_input($_POST["PASSWORD"]); $HVACCELL = test_input($_POST["HVACCELL"]); $HVACMAIL = test_input($_POST["HVACMAIL"]); $CLIENTCELL = test_input($_POST["CLIENTCELL"]); $CLIENTMAIL = test_input($_POST["CLIENTMAIL"]); $FRIDGENAME = test_input($_POST["FRIDGENAME"]); $Reserved2 = test_input($_POST["Reserved2"]); // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "INSERT INTO 1.1 (SERIAL, SSID, PASSWORD, HVACCELL, HVACMAIL, CLIENTCELL, CLIENTMAIL, FRIDGENAME, Reserved2) VALUES ('" . $SERIAL . "', '" . $SSID . "', '" . $PASSWORD . "', '" . $HVACCELL . "', '" . $HVACMAIL . "', '" . $CLIENTCELL . "', '" . $CLIENTMAIL . "', '" . $FRIDGENAME . "', '" . $Reserved2 . "')"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; echo $sql; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); } else { echo "Wrong API Key provided."; } } else { echo "No data posted with HTTP POST."; } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> Αλλά ενώ παίρνω 200 σαν response στον mozilla και στο log του apache βλέπω κανονικά τις μεταβλητές που εκανα post με την εντολή tail -100 /var/log/apache2/access.log Στο echo $sql; Παίρνω αυτό Αναφορά σε κείμενο New record created successfully INSERT INTO 1.1 (SERIAL, SSID, PASSWORD, HVACCELL, HVACMAIL, CLIENTCELL, CLIENTMAIL, FRIDGENAME, Reserved2) VALUES ('', '', '', '', '', '', '', '', '') και στο phpmyadmin πάλι παίρνω κενά ενώ ο SERIAL ο οποίος έχει auto increment ανεβένει κανονικά Δεν νομίζω ότι έχω κάποιο λάθος αλλά λόγο απειρίας έχω παραλείψει κάτι κουλό όπως π.χ. μεγάλο url Μήπως γνωρίζει κανείς?? Γιώργος Y.Γ το λινκ του post /post-esp-data.php?SERIAL=NULL&SSID=data1&PASSWORD=data2&HVACCELL=data3&HVACMAIL=data4&CLIENTCCELL=data5&CLIENTMAIL=data6&FRIDGENAME=data7&Reserved2=data8
t(o.ot) Δημοσ. 26 Απριλίου 2020 Δημοσ. 26 Απριλίου 2020 (επεξεργασμένο) Αναφορά σε κείμενο /post-esp-data.php?SERIAL=NULL&SSID=data1&PASSWORD=data2&HVACCELL=data3&HVACMAIL=data4&CLIENTCCELL=data5&CLIENTMAIL=data6&FRIDGENAME=data7&Reserved2=data8 Τις μεταβλητές τις περνάς στο query string, οχι στο request body. Θα τις διαβάσεις με $_GET και όχι $_POST. Ή ακόμα καλύτερα, όταν στέλνεις το request θα στείλεις το payload στο request body και όχι σαν μέρος του URL. ΥΓ: Διάβασε για prepared statements και άλλαξε τον κώδικά σου άμεσα. Επεξ/σία 26 Απριλίου 2020 από t(o.ot)
Geocheats2 Δημοσ. 27 Απριλίου 2020 Μέλος Δημοσ. 27 Απριλίου 2020 (επεξεργασμένο) 23 ώρες πριν, t(o.ot) είπε Τις μεταβλητές τις περνάς στο query string, οχι στο request body. Θα τις διαβάσεις με $_GET και όχι $_POST. Ή ακόμα καλύτερα, όταν στέλνεις το request θα στείλεις το payload στο request body και όχι σαν μέρος του URL. ΥΓ: Διάβασε για prepared statements και άλλαξε τον κώδικά σου άμεσα. Ευχαριστώ για την απάντηση το esp8266 τις στέλνει με POST και εγώ μέσα από τον firefox με post τις στέλνω (F12 -> Network -> επιλογη της GET -> Ηeader -> Edit and Resend -> Method POST)αλλά ενώ τις λαμβάνει κανονικά ο apache και το php ψιλοδουλευει (γτ μου φτιάχνει καινούργιο row στο table ) δεν μου περνάει τις μεταβλητές στην βάση, έχεις καμιά ιδέα ?? ΘΑ σου ποσταρα και το table μου αλλα με κοβει το cloudfaire Αγνόησε το api_key Επεξ/σία 27 Απριλίου 2020 από Geocheats2
t(o.ot) Δημοσ. 28 Απριλίου 2020 Δημοσ. 28 Απριλίου 2020 Δεν είπα ότι τις έστειλες με GET request αντί για POST request, είπα ότι τις στέλνεις στο query string του URL και όχι στο request body. Δοκίμασε το παρακάτω: l($url, PHP_RL_QUERY) parse_url($url, PHP_URL_QUERY)
stefanos90_K Δημοσ. 1 Μαΐου 2020 Δημοσ. 1 Μαΐου 2020 Στις 27/4/2020 στις 8:19 ΜΜ, Geocheats2 είπε και εγώ μέσα από τον firefox με post τις στέλνω Μη το κάνεις αυτό σου τρώει ώρα. Δοκίμασε το Postman, μπορείς να κάνεις ότι request θέλεις.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα