乐鑫技术交流
直播中

杨杰

7年用户 1107经验值
私信 关注
[问答]

如何将ESP826的数据POST到xammpp服务器上的php文件?

我正在尝试从 PicMicro 18F47K40 中开机自检数据,该 PicMicro 18F47K40 正在控制
使用ESP8266的太阳能跟踪器。
我已经更新了ESP8266:-
AT版本:1.7.5.0(Oct 9, 2021 09:26:04)
SDK版本:3.0.5(b29dcd3)
编译时间:2021-10-15 18:05:30

问题是我无法让它发布数据,所有其他命令都工作正常
我最初尝试使用 8 个变量,但现在只设置了一个 2 个字段
数据库来测试它。使用相同的 PHP 文件从浏览器发送 POST
it works OK.  But when sent from ESP8266 it comes up with "Undfined Array Key"
这是因为服务器未接收 POST 变量信息。
这是发送的逗号:-

AT+CIPSTART=0,"TCP","192.168.1.103",80rn
在 cipsend=0,132rn
POST /insert.php, HTTP/1.1rn  
Host: 192.168.1.103rn         
User-Agent: Mozillarn   
Content-Type: application/x-www-form-urlencodedrnrn"]   
rnrn
Content-Length: 20rn     
rnrn                     
Col_1=,Dec Value1,&Col_2=,Dec Value2,rnrn   
rnrn

ESP8266的回应是:

AT+CIPSTART=0,"TCP","192.168.1.103",80
0,连接

OK
在 cipsend=0,132

OK
>

接收 132 字节

发送确定

IPD,0,488:HTTP/1.1 302 找到
日期:2022 年 5 月 18 日星期三 17:00:17 GMT
服务器:Apache/2.4.53 (Win64) OpenSSL/1.1.1n PHP/8.1.5
X-技术支持:php/8.1.5

内容长度:254
内容类型:text/html;字符集 = UTF-8


Warning:  Undefined array key "Col_1" in
          C:xampphtdocsinsert.php
on line 17

Warning:  Undefined array key "Col_2" in
          C:xampphtdocsinsert.php
on line 18

record created successfully
0,已关闭



它确实访问 PHP 文件并向数据库添加一条记录,但
字段值为空。

显然命令顺序不正确或我有问题
任何帮助或建议都会很好,谢谢。
                                                                                                                                                  

回帖(1)

京五环以外

2024-7-19 14:36:56
要将ESP8266的数据POST到XAMPP服务器上的PHP文件,您需要按照以下步骤操作:

1. **连接ESP8266到WiFi网络**:
   首先,确保您的ESP8266模块已连接到WiFi网络。您可以使用以下代码示例连接到WiFi网络:

   ```cpp
   #include

   const char* ssid = "YOUR_SSID";
   const char* password = "YOUR_PASSWORD";

   void setup() {
     Serial.begin(115200);
     WiFi.begin(ssid, password);

     while (WiFi.status() != WL_CONNECTED) {
       delay(500);
       Serial.print(".");
     }

     Serial.println("WiFi connected");
     Serial.println("IP address: ");
     Serial.println(WiFi.localIP());
   }
   ```

2. **发送HTTP POST请求**:
   使用ESP8266的`ESP8266HTTPClient`库发送HTTP POST请求。首先,确保在Arduino IDE中安装了该库。

   ```cpp
   #include
   #include

   const char* ssid = "YOUR_SSID";
   const char* password = "YOUR_PASSWORD";
   const char* serverName = "YOUR_SERVER_IP_OR_DOMAIN";
   const char* url = "/path/to/your/php_file.php";

   void setup() {
     Serial.begin(115200);
     WiFi.begin(ssid, password);

     while (WiFi.status() != WL_CONNECTED) {
       delay(500);
       Serial.print(".");
     }

     Serial.println("WiFi connected");
     Serial.println("IP address: ");
     Serial.println(WiFi.localIP());

     if (WiFi.status() == WL_CONNECTED) {
       HTTPClient http;
       http.begin("http://" + String(serverName) + url);
       http.addHeader("Content-Type", "application/x-www-form-urlencoded");

       String httpRequestData = "field1=value1&field2=value2";
       int httpResponseCode = http.POST(httpRequestData);

       if (httpResponseCode > 0) {
         String response = http.getString();
         Serial.println(httpResponseCode);
         Serial.println(response);
       } else {
         Serial.println("Error on sending POST");
       }

       http.end();
     }
   }

   void loop() {
     // Your loop code here
   }
   ```

3. **在PHP文件中处理POST请求**:
   确保您的PHP文件可以正确处理POST请求。以下是一个简单的示例,用于从POST请求中获取数据:

   ```php
       if ($_SERVER["REQUEST_METHOD"] == "POST") {
     $field1 = $_POST["field1"];
     $field2 = $_POST["field2"];

     if (isset($field1) && isset($field2)) {
       echo "Received data: field1 = " . $field1 . ", field2 = " . $field2;
     } else {
       echo "Undefined Array Key";
     }
   } else {
     echo "Invalid request method";
   }
   ?>
   ```

4. **测试**:
   将ESP8266代码上传到您的设备,并确保它能够连接到WiFi网络。然后,运行您的PHP服务器并观察ESP8266发送的数据是否正确显示在PHP文件中。

5. **调试**:
   如果遇到问题,请检查以下内容:
   - 确保ESP8266连接到正确的WiFi网络。
   - 确保PHP文件的URL和路径正确。
   - 检查ESP8266发送的POST请求数据格式是否正确。
   - 检查PHP文件是否正确处理POST请求。

通过遵循这些步骤,您应该能够成功地将ESP8266的数据POST到XAMPP服务器上的PHP文件。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分