cari
Rumahpembangunan bahagian belakangtutorial phpPHP后台与手机APP接口开发实例代码

PHP后台与手机APP接口开发实例代码

May 29, 2018 am 10:44 AM
phpkodContoh pembangunan

本文主要和大家分享PHP后台与手机APP接口开发实例代码,希望能帮助到大家

一、手机APP(客户端)程序接口

这里采用在PC上使用C++程序模拟HTTP协议数据的POST

#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;
}

二、后台PHP测试程序

<?php
$input = file_get_contents("php://input");
var_dump($input);

if ($_POST[&#39;user&#39;] == "hello" && $_POST[&#39;password&#39;] == "123456") {
    echo "welcome hello";
} else {
    echo "welcome guest";
}
?>

三、实现效果


上图中,客户端C++程序,POST数据给后台Nginx+PHP后,PHP通过以下前两种方式获取POST的数据:

方法1、最常见的方法是:$_POST['fieldname'];
说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据。
解释:也就是表单POST过来的数据。

方法2、file_get_contents("php://input");
说明:
允许读取 POST 的原始数据。
和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。
php://input 不能用于 enctype="multipart/form-data"。
解释:
对于未指定 Content-Type 的POST数据,则可以使用file_get_contents(“php://input”);来获取原始数据。
事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。

所以用方法二是最保险的方法。

方法3、$GLOBALS['HTTP_RAW_POST_DATA'];

说明:
总是产生 $HTTP_RAW_POST_DATA  变量包含有原始的 POST 数据。
此变量仅在碰到未识别 MIME 类型的数据时产生。
$HTTP_RAW_POST_DATA  对于 enctype="multipart/form-data"  表单数据不可用
如果post过来的数据不是PHP能够识别的,可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,
比如 text/xml 或者 soap 等等
解释:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST过来的原始数据。
$_POST或$_REQUEST存放的是 PHP以key=>value的形式格式化以后的数据。 

但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST过来的数据取决于Content-Type的设置,即POST数据时 必须显式示指明Content-Type: application/x-www-form-urlencoded,POST的数据才会存放到 $GLOBALS['HTTP_RAW_POST_DATA']中。

对于上传文件,采用POST enctype="multipart/form-data"。PHP后端代码示例:

<!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>

相关推荐:

PHP开发APP接口需要注意哪些问题

laravel编写APP接口(API)

关于PHP写APP接口的安全问题探讨一

Atas ialah kandungan terperinci PHP后台与手机APP接口开发实例代码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tujuan PHP: Membina Laman Web DinamikTujuan PHP: Membina Laman Web DinamikApr 15, 2025 am 12:18 AM

PHP digunakan untuk membina laman web dinamik, dan fungsi terasnya termasuk: 1. Menjana kandungan dinamik dan menghasilkan laman web secara real time dengan menyambung dengan pangkalan data; 2. Proses Interaksi Pengguna dan Penyerahan Bentuk, Sahkan Input dan Menanggapi Operasi; 3. Menguruskan sesi dan pengesahan pengguna untuk memberikan pengalaman yang diperibadikan; 4. Mengoptimumkan prestasi dan ikuti amalan terbaik untuk meningkatkan kecekapan dan keselamatan laman web.

PHP: Pengendalian pangkalan data dan logik sisi pelayanPHP: Pengendalian pangkalan data dan logik sisi pelayanApr 15, 2025 am 12:15 AM

PHP menggunakan sambungan MySQLI dan PDO untuk berinteraksi dalam operasi pangkalan data dan pemprosesan logik sisi pelayan, dan memproses logik sisi pelayan melalui fungsi seperti pengurusan sesi. 1) Gunakan MySQLI atau PDO untuk menyambung ke pangkalan data dan laksanakan pertanyaan SQL. 2) Mengendalikan permintaan HTTP dan status pengguna melalui pengurusan sesi dan fungsi lain. 3) Gunakan urus niaga untuk memastikan atomik operasi pangkalan data. 4) Mencegah suntikan SQL, gunakan pengendalian pengecualian dan sambungan penutup untuk debugging. 5) Mengoptimumkan prestasi melalui pengindeksan dan cache, tulis kod yang sangat mudah dibaca dan lakukan pengendalian ralat.

Bagaimana anda menghalang suntikan SQL di PHP? (Penyataan yang disediakan, PDO)Bagaimana anda menghalang suntikan SQL di PHP? (Penyataan yang disediakan, PDO)Apr 15, 2025 am 12:15 AM

Menggunakan penyataan preprocessing dan PDO dalam PHP secara berkesan dapat mencegah serangan suntikan SQL. 1) Gunakan PDO untuk menyambung ke pangkalan data dan tetapkan mod ralat. 2) Buat kenyataan pra -proses melalui kaedah menyediakan dan lulus data menggunakan ruang letak dan laksanakan kaedah. 3) Hasil pertanyaan proses dan pastikan keselamatan dan prestasi kod.

PHP dan Python: Contoh dan perbandingan kodPHP dan Python: Contoh dan perbandingan kodApr 15, 2025 am 12:07 AM

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

PHP dalam Tindakan: Contoh dan aplikasi dunia nyataPHP dalam Tindakan: Contoh dan aplikasi dunia nyataApr 14, 2025 am 12:19 AM

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

PHP: Membuat kandungan web interaktif dengan mudahPHP: Membuat kandungan web interaktif dengan mudahApr 14, 2025 am 12:15 AM

PHP menjadikannya mudah untuk membuat kandungan web interaktif. 1) Secara dinamik menjana kandungan dengan memasukkan HTML dan paparkannya dalam masa nyata berdasarkan input pengguna atau data pangkalan data. 2) Penyerahan borang proses dan menjana output dinamik untuk memastikan bahawa htmlspecialchars digunakan untuk mencegah XSS. 3) Gunakan MySQL untuk membuat sistem pendaftaran pengguna, dan gunakan kata laluan dan preprocessing untuk meningkatkan keselamatan. Menguasai teknik ini akan meningkatkan kecekapan pembangunan web.

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popularPHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popularApr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Relevannya PHP: Adakah ia masih hidup?Relevannya PHP: Adakah ia masih hidup?Apr 14, 2025 am 12:12 AM

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini