Dieser Artikel teilt Ihnen hauptsächlich den Beispielcode für die Entwicklung von PHP-Backends und mobilen APP-Schnittstellen mit, in der Hoffnung, allen zu helfen
1. Mobile APP (Client)-Programmschnittstelle
Hier wird verwendet PC Verwenden Sie ein C++-Programm, um POST von HTTP-Protokolldaten zu simulieren
#include <iostream> #include <fstream> #include <cstdlib> #include <cstring> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/types.h> #include <unistd.h> using namespace std; #define DEST_IP "10.209.177.22" #define DEST_PORT 80 #define MAX_DATA_SIZE 1024 int main() { int ret; int sockfd; struct sockaddr_in dest_addr; memset(&dest_addr, 0x00, sizeof(sockaddr_in)); dest_addr.sin_family = AF_INET; dest_addr.sin_addr.s_addr = inet_addr(DEST_IP); dest_addr.sin_port = htons(DEST_PORT); cout << "dest addr IP:" << inet_ntoa(dest_addr.sin_addr) << endl; sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sockfd < 0) { cout << "create socket fail!" << endl; exit(1); } ret = connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)); if (ret != 0) { cout << "connect server fail!" << endl; close(sockfd); exit(1); } else { cout << "connect server success!" << endl; } cout << endl; int sendlen, recvlen; char sendbuf[MAX_DATA_SIZE] = {0}; char recvbuf[MAX_DATA_SIZE] = {0}; string body("user=hello&password=123456"); int content_length = body.length(); snprintf(sendbuf, sizeof(sendbuf) - 1, "POST /api.php HTTP/1.1\r\n" "Host: 10.209.177.22\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: %d\r\n", content_length ); strcat(sendbuf, "\r\n"); strcat(sendbuf, body.c_str()); sendlen = send(sockfd, sendbuf, sizeof(sendbuf), 0); if (sendlen < 0) { cout << "send fail" << endl; close(sockfd); exit(1); } if ((recvlen = recv(sockfd, recvbuf, sizeof(recvbuf), 0)) == -1) { cout << "recv fail" << endl; close(sockfd); exit(1); } else { cout << recvbuf << endl; } close(sockfd); return 0; }
2. Hintergrund-PHP-Testprogramm
<?php $input = file_get_contents("php://input"); var_dump($input); if ($_POST['user'] == "hello" && $_POST['password'] == "123456") { echo "welcome hello"; } else { echo "welcome guest"; } ?>
3. Implementierungseffekt
Im Bild oben das Client-C++-Programm, nachdem POST-Daten an den Hintergrund von Nginx+PHP gesendet wurden, erhält PHP die POST-Daten über die ersten beiden Methoden unten:
Methode 1. Die gebräuchlichste Methode ist: $_POST['fieldname'];
Hinweis: Es können nur Daten empfangen werden, die von Content-Type: application/x-www-form-urlencoded übermittelt wurden.
Erklärung: Es handelt sich um den Daten-POST aus dem Formular.
Methode 2, file_get_contents("php://input");
Beschreibung:
Ermöglicht das Lesen der Originaldaten von POST.
Es belastet den Speicher weniger als $HTTP_RAW_POST_DATA und erfordert keine speziellen php.ini-Einstellungen.
php://input kann nicht mit enctype="multipart/form-data" verwendet werden.
Erklärung:
Für POST-Daten ohne angegebenen Inhaltstyp können Sie file_get_contents("php://input"); verwenden, um die Originaldaten abzurufen.
Tatsächlich kann diese Methode verwendet werden, um beliebige POST-Daten mit PHP zu empfangen. Unabhängig vom Inhaltstyp ist auch die Einbeziehung binärer Dateiströme akzeptabel.
Methode 2 ist also die sicherste Methode.
Methode 3, $GLOBALS['HTTP_RAW_POST_DATA'];
Erklärung:
Generieren Sie immer die Variable $HTTP_RAW_POST_DATA, die die ursprünglichen POST-Daten enthält.
Diese Variable wird nur generiert, wenn Daten mit nicht erkannten MIME-Typen gefunden werden.
$HTTP_RAW_POST_DATA ist für enctype="multipart/form-data"-Formulardaten nicht verfügbar
Wenn die geposteten Daten von PHP nicht erkannt werden, können Sie $GLOBALS['HTTP_RAW_POST_DATA'] verwenden, um sie zu empfangen,
wie Text /xml oder Soap usw.
Erklärung:
$GLOBALS['HTTP_RAW_POST_DATA'] speichert die Originaldaten von POST.
$_POST oder $_REQUEST speichert von PHP formatierte Daten in der Form key=>value.
Aber ob die POST-Daten in $GLOBALS['HTTP_RAW_POST_DATA'] gespeichert werden, hängt von der Einstellung von Content-Type ab, d. h. beim POSTing von Daten muss Content-Type explizit angegeben werden: application/ x-www -form-urlencoded, POST-Daten werden in $GLOBALS['HTTP_RAW_POST_DATA'] gespeichert.
Verwenden Sie zum Hochladen von Dateien POST enctype="multipart/form-data". Beispiel für einen PHP-Backend-Code:
<!DOCTYPE> <html> <body> <form method="post" action="" enctype="multipart/form-data"> <input type="file" name="file" id="file" /> <input type="submit" value="submit" /> </form> <?php echo "<pre class="brush:php;toolbar:false">"; print_r($_FILES); if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; } else { $file = fopen($_FILES["file"]["tmp_name"], "r"); while (!feof($file)) { echo fgetc($file); } fclose($file); } ?> </body> </html>
Verwandte Empfehlungen:
Welche Probleme müssen bei der Entwicklung von APP-Schnittstellen mit PHP beachtet werden
APP in der Laravel-Schnittstelle (API) schreiben
Diskussion über die Sicherheitsprobleme der PHP-Schreib-APP-Schnittstelle
Das obige ist der detaillierte Inhalt vonBeispielcode für die Entwicklung von PHP-Hintergrund und mobilen APP-Schnittstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!