Tôi muốn chạy một ứng dụng web PHP MySQL trên thiết bị Android. Thiết bị không được root.
Không có cách nào khác ư? Nếu không có, thiết bị có thể kết nối với localhost của PC không?
Andrew T. ♦♦
12.7k9 Huy hiệu vàng62 Huy hiệu bạc106 Huy hiệu Đồng9 gold badges62 silver badges106 bronze badges
Hỏi ngày 14 tháng 10 năm 2017 lúc 3:46Oct 14, 2017 at 3:46
1
Cập nhật kể từ ngày 2 tháng 6 năm 2021
Tùy chọn số 1 [sử dụng APK dựa trên CLI] Tùy chọn tốt nhất
BEST OPTION
- Termux [Cài đặt các gói PHP, MARIADB, PHPMyAdmin trong Termux]
- Trình giả lập thiết bị đầu cuối
- Người dùng
Tùy chọn #2 [sử dụng APK dựa trên GUI]
- Ksweb
- Máy chủ cuối cùng
Summary:
- Các APK được đề cập ở trên không yêu cầu thiết bị gốc.
- Các APK dựa trên CLI rất được khuyến khích vì người dùng có thể sử dụng phiên bản cập nhật của PHP, Apache và bất kỳ gói nào khác bạn muốn cài đặt. APK KickWeb hỗ trợ chạy các tệp .PHP, nhưng thật không may, nó không có phiên bản PHP mới nhất. Sử dụng phiên bản O -dế của PHP tạo ra một số mã PHP của bạn để ném lỗi hoặc cảnh báo, v.v. are highly recommended because a user can use UPDATED version of PHP, Apache, and any other packages you want to install to. The KickWeb apk does support running .php files BUT ,unfortunately, it doesn't have the latest PHP VERSION. Using an outdated version of PHP makes some of your PHP code to throw errors or warnings etc.
Đã trả lời ngày 2 tháng 6 năm 2021 lúc 2:28Jun 2, 2021 at 2:28
0
Tôi đã thử KickWeb Server và nó hoạt động như mong đợi.
Firelord ♦♦
23.7K19 Huy hiệu vàng116 Huy hiệu bạc265 Huy hiệu Đồng19 gold badges116 silver badges265 bronze badges
Đã trả lời ngày 14 tháng 10 năm 2017 lúc 4:04Oct 14, 2017 at 4:04
Bạn phải đăng nhập để trả lời câu hỏi này.
Không phải là câu trả lời bạn đang tìm kiếm? Duyệt những câu hỏi khác được gắn thẻ
.
Đăng nhập và đăng ký Android là các kịch bản rất phổ biến. Bạn sẽ tìm thấy hoạt động đăng ký và đăng nhập trong tất cả các ứng dụng mà chúng tôi muốn thông tin người dùng. Trong hướng dẫn này, chúng tôi sẽ thiết lập một máy chủ web cục bộ và cơ sở dữ liệu MySQL. Chúng tôi sẽ phát triển ứng dụng đăng nhập và đăng ký Android. Chúng tôi sẽ sử dụng tập lệnh PHP để kết nối với cơ sở dữ liệu MySQL.
Đăng ký đăng nhập Android
Bước đầu tiên là tạo máy chủ web phụ trợ. Tôi đang làm việc trên Mac OS X và XAMPP có thể được sử dụng để thiết lập một máy chủ web Apache cục bộ và cơ sở dữ liệu MySQL một cách nhanh chóng.
Thiết lập máy chủ XAMPP
XAMPP [hoặc WAMP] là một phần mềm cài đặt một cú nhấp chuột tạo ra môi trường để phát triển ứng dụng web PHP, MySQL [mà chúng tôi sẽ kết nối với ứng dụng Android của chúng tôi]. Tải xuống và cài đặt XAMPP từ đây. Khởi chạy ứng dụng XAMPP sau khi cài đặt và bạn sẽ được chào đón với màn hình bên dưới. Bạn có thể kiểm tra máy chủ của mình bằng cách mở
CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
3. Màn hình sau sẽ xuất hiện. Ngoài ra, bạn có thể kiểm tra phpmyadmin bằng cách mở CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
4. Hãy để xem những gì nó cho thấy! ỐI! Bạn có thể kết thúc với một màn hình như thế này. Có vẻ như máy chủ MySQL không chạy đúng. Chuyển đến tab Quản lý máy chủ trong ứng dụng XAMPP và nhấp vào Khởi động lại tất cả. Các máy chủ nên được chạy đúng như trong hình dưới đây. Bây giờ hãy kiểm tra phpmyadmin trong localhost và bạn sẽ kết thúc với một màn hình tương tự như thế này. Bây giờ, hãy để thử nghiệm một tập lệnh PHP mẫu. Tạo một tệp CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
5 mới và thêm các dòng sau vào nó.CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
3. The following screen should appear.
CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
4. Let’s see what it shows!
CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
5 file and add the following lines into it.
Trong mã trên:
- ? PHP bắt đầu mở thẻ cho bất kỳ tập lệnh PHP. starts opening tag for any PHP script.
- ?> có nghĩa là đóng thẻ như đóng khung trong java. means closing tag like closing bracket in Java.
Lưu ý: Biết PHP không bắt buộc cho hướng dẫn này. Nếu bạn sử dụng máy Mac thì các ứng dụng goto-> xampp-> htdocs. Tạo một thư mục mới ở đây cho phép nói test_android và sao chép dán test.php đã được tạo trước đó. Bây giờ hãy mở URL
CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
6, bạn sẽ kết thúc với một màn hình như thế này:test_android and copy paste the test.php that was created before. Now open the url CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
6 You’ll end up with a screen like this:
Thiết lập cơ sở dữ liệu MySQL
Mở phpmyadmin bằng cách truy cập
CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
4. Bây giờ, chọn tab cơ sở dữ liệu mà trên cùng bên trái của hàng tiêu đề. Đặt một tên ngẫu nhiên và tạo nó. Cơ sở dữ liệu trống mới được tạo sẽ được hiển thị trong thanh bên trái. Hãy để tạo ra một bảng người dùng trong cơ sở dữ liệu mới được tạo. Chạy truy vấn sau trong bảng điều khiểnCREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
Nếu bảng được tạo thành công, bạn sẽ kết thúc với một màn hình tương tự như thế này:
Kết nối PHP với cơ sở dữ liệu MySQL
Để kết nối tập lệnh PHP với cơ sở dữ liệu MySQL, ba giá trị đầu vào được yêu cầu. Sau đây là các đầu vào và có giá trị mặc định cho máy chủ XAMPP
- Tên máy chủ: Localhost
- Tên người dùng MySQL: Root
- Mật khẩu MySQL: Nó trống. "
Hãy để tạo tập lệnh Test-Connect.php và thêm nó vào thư mục HTDOCS-> Test-Android.
mysql_connect [] là hàm sẵn có của PHP để kết nối với cơ sở dữ liệu MySQL với các tham số được liệt kê ở trên. Hãy thử chạy
8 và xem đầu ra. Nếu nó không được kết nối, thì hãy thử khởi động lại các máy chủ XAMPP. is a PHP’s inbuilt function to connect to MySQL database with the parameters listed above. Try running CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
8 and see the output. If it’s not connected, then try restarting the XAMPP servers.Ứng dụng đăng ký đăng nhập Android
Bây giờ chúng tôi đã thảo luận về thiết lập cơ bản của PHP và MySQL, hãy để Lừa vào phần ứng dụng đăng nhập Android. Chúng tôi sẽ phát triển một ứng dụng đăng nhập/đăng ký. Để giữ cho nó ngắn gọn và đơn giản, chúng tôi sẽ kiểm tra xem tên người dùng và email là duy nhất trong quá trình đăng ký. Trước khi chúng tôi nhảy vào logic ứng dụng, hãy để hoạt động trên các tập lệnh PHP và cơ sở dữ liệu MySQL. Đầu tiên, hãy để người dùng bỏ bảng và tạo một cái mới trong bối cảnh của ứng dụng trên.
CREATE TABLE IF NOT EXISTS `firstDB`.`users` [
`id` int[20] NOT NULL AUTO_INCREMENT PRIMARY KEY,
`username` varchar[70] NOT NULL,
`password` varchar[40] NOT NULL,
`email` varchar[50] NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime DEFAULT NULL
]
Sau đây là các tập lệnh PHP mà bạn có thể sao chép dán trong thư mục HTDOCS-> test_android.
CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
9
Tập lệnh cho kết nối cơ sở dữ liệu được đưa ra dưới đây.
0
Tập lệnh sau đây chứa tất cả các chức năng cốt lõi của ứng dụng.
1
Các chính hoạt động được đưa ra dưới đây.
package com.journaldev.loginphpmysql;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
EditText editEmail, editPassword, editName;
Button btnSignIn, btnRegister;
String URL= "//10.0.3.2/test_android/index.php";
JSONParser jsonParser=new JSONParser[];
int i=0;
@Override
protected void onCreate[Bundle savedInstanceState] {
super.onCreate[savedInstanceState];
setContentView[R.layout.activity_main];
editEmail=[EditText]findViewById[R.id.editEmail];
editName=[EditText]findViewById[R.id.editName];
editPassword=[EditText]findViewById[R.id.editPassword];
btnSignIn=[Button]findViewById[R.id.btnSignIn];
btnRegister=[Button]findViewById[R.id.btnRegister];
btnSignIn.setOnClickListener[new View.OnClickListener[] {
@Override
public void onClick[View view] {
AttemptLogin attemptLogin= new AttemptLogin[];
attemptLogin.execute[editName.getText[].toString[],editPassword.getText[].toString[],""];
}
}];
btnRegister.setOnClickListener[new View.OnClickListener[] {
@Override
public void onClick[View view] {
if[i==0]
{
i=1;
editEmail.setVisibility[View.VISIBLE];
btnSignIn.setVisibility[View.GONE];
btnRegister.setText["CREATE ACCOUNT"];
}
else{
btnRegister.setText["REGISTER"];
editEmail.setVisibility[View.GONE];
btnSignIn.setVisibility[View.VISIBLE];
i=0;
AttemptLogin attemptLogin= new AttemptLogin[];
attemptLogin.execute[editName.getText[].toString[],editPassword.getText[].toString[],editEmail.getText[].toString[]];
}
}
}];
}
private class AttemptLogin extends AsyncTask {
@Override
protected void onPreExecute[] {
super.onPreExecute[];
}
@Override
protected JSONObject doInBackground[String... args] {
String email = args[2];
String password = args[1];
String name= args[0];
ArrayList params = new ArrayList[];
params.add[new BasicNameValuePair["username", name]];
params.add[new BasicNameValuePair["password", password]];
if[email.length[]>0]
params.add[new BasicNameValuePair["email",email]];
JSONObject json = jsonParser.makeHttpRequest[URL, "POST", params];
return json;
}
protected void onPostExecute[JSONObject result] {
// dismiss the dialog once product deleted
//Toast.makeText[getApplicationContext[],result,Toast.LENGTH_LONG].show[];
try {
if [result != null] {
Toast.makeText[getApplicationContext[],result.getString["message"],Toast.LENGTH_LONG].show[];
} else {
Toast.makeText[getApplicationContext[], "Unable to retrieve any data from server", Toast.LENGTH_LONG].show[];
}
} catch [JSONException e] {
e.printStackTrace[];
}
}
}
}
Đó là một mã khá lớn! Hãy cùng rút ra những suy luận quan trọng từ mã trên.
- //10.0.3.2 là địa chỉ định tuyến lại localhost. Địa chỉ này hoạt động độc quyền nếu bạn sử dụng trình giả lập Genymotion. Sử dụng //10.0.2.2 cho trình giả lập AVD được cải thiện nhiều. Nếu bạn đang chạy ứng dụng trên thiết bị của riêng bạn bằng địa chỉ WiFi máy tính của bạn. Ví dụ: //192.168.0.143.Genymotion emulator. Use //10.0.2.2 for the AVD Emulator which is much improved now. If you’re running the application on your own device using your computer’s WIFI address instead. Example: //192.168.0.143.
- Khi nút đăng ký được nhấp, thay vào đó, chúng tôi lập trình lại nút đăng nhập và hiển thị trường văn bản đầu vào địa chỉ email.
- Lớp nỗ lực thực hiện các yêu cầu HTTP mạng đến Localhost của chúng tôi trong nền. Mật khẩu tên người dùng và các tham số email được thêm vào một danh sách mảng được truyền trong phương thức makeHttprequest [url, post post, params]; của lớp JsonParser.makeHttpRequest[URL, “POST”, params]; of the JSONParser class.
- Trong phương thức OnPostexecute, chúng tôi hiển thị chuỗi tin nhắn được trả về từ máy chủ trong tin nhắn bánh mì nướng.onPostExecute Method we display the message string returned from the server in a Toast message.
Lớp
6 được đưa ra dưới đây.CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
0Trong mã trên, chúng tôi gọi các lớp tương ứng httppost hoặc httpget tùy thuộc vào tham số thứ hai mà Lừa đã truyền trong hàm makehttprequest.HTTPPost or HTTPGet depending on the the second parameter that’s passed in the makeHttpRequest function.
CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
1Ở trên, chúng tôi đang nối thêm mã trạng thái phản hồi được trả về từ máy chủ trong JSONObject cuối cùng mà Lôi đã trả lại cho lớp chính. Lưu ý: Don Tiết quên thêm các quyền sau trong tệp androidmanifest.xml của bạn.
CREATE TABLE `firstDB`.`users` [
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR[ 20 ] NOT NULL ,
`password` VARCHAR[ 20 ] NOT NULL
]
2Nhiều người dùng đã đăng bình luận của họ ở dưới cùng của hướng dẫn này, nói rằng họ đã nhận được một cách không thể truy xuất bánh mì nướng dữ liệu. Xin lưu ý rằng vì Android 6.0 trở lên, bạn cần thêm thuộc tính sau trong thẻ ứng dụng của mình trong tệp kê khai.xml:
7 Tại sao như vậy? Để cho phép bảo mật mạng của trình giả lập/thiết bị thực hiện các cuộc gọi HTTP. Vui lòng kiểm tra đầu ra với các màn hình mới nhất từ trình giả lập Android Q bên dưới. Mã nguồn nhất với các thay đổi trong tệp AndroidManifest.xml được cập nhật trong liên kết và kho lưu trữ GitHub của chúng tôi.Please check the output with the latest screengrabs from Android Q emulator below. Latest source code with the changes in the
AndroidManifest.xml file is updated in the link and our Github Repository.Đầu ra của ứng dụng trong hành động được đưa ra dưới đây.
Người dùng đăng ký Android
Trong ScreenGrab bên dưới, chúng tôi đăng ký một người dùng mới và nó được thêm vào cơ sở dữ liệu. Sau đó, chúng tôi đăng nhập bằng thông tin đăng ký trong quá trình đăng ký.
Điều này mang lại kết thúc cho việc đăng nhập Android với hướng dẫn PHP MySQL. Bạn có thể tải xuống dự án từ liên kết dưới đây. Nó chứa thư mục Test_Android cũng giữ các tệp PHP. Sao chép nó vào thư mục XAMPP-> HTDOCS! Chúc may mắn.Android Login with PHP MySQL Tutorial. You can download the project from the link below. It contains the test_android folder too that holds the PHP files. Copy it into the xampp->htdocs folder! Good Luck.
Tải xuống Đăng ký đăng nhập Android Php MySQL Project
Bạn cũng có thể truy cập mã nguồn đầy đủ từ kho lưu trữ GitHub của chúng tôi bên dưới:
Liên kết dự án GitHub