Đăng nhập Android Studio bằng PHP MySQL

Xin chào Technoz. Trong hướng dẫn này, chúng ta sẽ xem cách xây dựng ứng dụng đăng ký đăng nhập Android bằng cách sử dụng PHP và MySQL làm hệ thống phụ trợ. Bạn có thể sử dụng bất kỳ ngôn ngữ và cơ sở dữ liệu nào khác làm phần phụ trợ. Tuy nhiên, vì PHP và MySQL là phổ biến và thông dụng nhất nên chúng tôi sẽ sử dụng nó trong hướng dẫn này. Hướng dẫn đăng ký đăng nhập Android bằng PHP và MySQL này bao gồm tạo đăng ký người dùng mới, đăng nhập học sinh đã đăng ký và đăng xuất. Vì vậy, hãy bắt đầu

Tạo phía máy chủ

Trong dự án của chúng tôi, ứng dụng sẽ là một máy khách gửi yêu cầu đến máy chủ và các tệp và cơ sở dữ liệu PHP sẽ hoạt động như một máy chủ phụ trợ. Vì vậy, chúng tôi đang tạo hai phần trong hướng dẫn đăng ký đăng nhập Android của chúng tôi

Tạo cơ sở dữ liệu

Rõ ràng, trước tiên chúng ta cần một cơ sở dữ liệu để lưu trữ và truy xuất dữ liệu. Vì vậy, hãy tạo cơ sở dữ liệu và bảng người dùng trong đó. Bảng chứa các trường như id, tên người dùng, email và mật khẩu. Bạn có thể sử dụng truy vấn SQL sau

DROP TABLE IF EXISTS `users`;
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
)

Tạo tập tin PHP

Tất nhiên, chúng ta cần một tệp php riêng để thiết lập kết nối với cơ sở dữ liệu. Vì vậy, tạo tập tin cấu hình. php và dán mã bên dưới vào đó

connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//echo "Connected successfully";
?>

Hãy nhớ thay đổi các giá trị kết nối với giá trị của bạn

Bây giờ, chúng ta sẽ tạo một tệp riêng thực hiện công việc đăng nhập người dùng. Vì vậy, tạo một tập tin đăng nhập. php với đoạn mã sau

prepare("SELECT username, password FROM users WHERE email = ?");
	$stmt->bind_param("s",$email);
	$stmt->execute();
	$stmt->bind_result($username, $db_password);
	$stmt->fetch();
	if(password_verify($post_password, $db_password)){
		$response['error'] = false;
		$response['message'] = "Login Successful!";
		$response['email'] = $email;
		$response['username'] = $username;
	} else{
		$response['error'] = false;
		$response['message'] = "Invalid Email or Password";
	}
} else {
	$response['error'] = true;
	$response['message'] = "Insufficient Parameters";
}
echo json_encode($response);	
?>

Vì ứng dụng đăng ký đăng nhập android yêu cầu dữ liệu ở định dạng JSON, chúng tôi đang sử dụng một mảng ở đây. Đầu tiên chúng ta sẽ nhận các biến POST và kiểm tra xem user có tồn tại trong database hay không và thực hiện xác minh mật khẩu. Nếu thông tin đăng nhập đúng, chúng tôi sẽ đặt thông báo thành công vào biến mảng. Cuối cùng, chúng tôi sẽ lặp lại mảng dưới dạng phản hồi JSON

Bây giờ là lúc cho một nhiệm vụ đăng ký. Tương tự, chúng ta sẽ tạo một thanh ghi tệp php. php với đoạn mã sau trong đó

prepare("SELECT * FROM users WHERE email = ?");
	$sql->bind_param("s",$email);
	$sql->execute();
	$sql->store_result();

	if($sql->num_rows > 0){
		$response['error'] = false;
		$response['message'] = "User already registered";
	} else{
		$stmt = $conn->prepare("INSERT INTO `users` (`username`, `email`, `password`) VALUES(?,?,?)");
		$stmt->bind_param("sss", $username, $email, $password);
		$result = $stmt->execute();
		if($result){
			$response['error'] = false;
			$response['message'] = "User Registered Successfully";
		} else {
			$response['error'] = false;
			$response['message'] = "Cannot complete user registration";
		}
	}
} else{
	$response['error'] = true;
	$response['message'] = "Insufficient Parameters";
}
echo json_encode($response);	
?>

Tương tự với file đăng nhập chúng ta đã tạo file trên cho nhiệm vụ đăng ký. Ở đây chúng tôi đang chấp nhận tên người dùng, email và mật khẩu dưới dạng tham số POST. Như thường lệ, chúng tôi đang chèn dữ liệu nhận được vào cơ sở dữ liệu bằng mật khẩu được mã hóa. Thông báo thành công/thất bại được gửi bằng các biến mảng dưới dạng phản hồi JSON

Như vậy là chúng ta đã hoàn thành phần server side. Bây giờ chúng tôi sẽ chuyển sang ứng dụng Android phía máy khách trong đăng ký đăng nhập Android

Tạo phía máy khách

Bây giờ chúng ta phải xây dựng một ứng dụng Android sẽ lấy các giá trị do người dùng nhập vào, gửi nó đến các url cụ thể, lấy lại kết quả và hiển thị cho người dùng. Vì vậy, hãy bắt đầu

Chúng tôi sẽ sử dụng yêu cầu http để gửi/nhận dữ liệu. Với mục đích đó, chúng ta cần thêm dòng dưới đây vào bản dựng cấp ứng dụng. tệp gradle

useLibrary 'org.apache.http.legacy'

Hơn nữa, chúng ta cần thêm quyền internet trong AndroidManifest. tệp xml như sau


Ghi chú. Trong bài đăng này, chúng tôi đang sử dụng một lớp tùy chỉnh để thực hiện cuộc gọi api và truy xuất dữ liệu, quá trình này tốn thời gian và có một chút trục trặc. Có một cách tốt hơn để làm điều này với thư viện Retrofit, trong đó cuộc gọi được bảo mật, yêu cầu ít mã hơn và là một cách được đề xuất. Phải xem hướng dẫn Thư viện trang bị thêm đã cập nhật với RecyclerView trong bài đăng Kotlin để tìm hiểu cách được đề xuất

 

Lúc đầu, chúng tôi sẽ xây dựng một lớp đặc biệt sẽ chấp nhận các tham số dữ liệu URL và POST, gửi chúng đến các vị trí tương ứng và trả về kết quả nhận được. Vì vậy, hãy tạo một lớp java mới RequestHandler. java với đoạn mã sau trong đó

package net.softglobe.tutorials;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

import javax.net.ssl.HttpsURLConnection;

/**
 * Created by Belal on 9/5/2017.
 */

public class RequestHandler {


    //this method will send a post request to the specified url
    //in this app we are using only post request
    //in the hashmap we have the data to be sent to the server in keyvalue pairs
    public String sendPostRequest(String requestURL, HashMap postDataParams) {
        URL url;

        StringBuilder sb = new StringBuilder();
        try {
            url = new URL(requestURL);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(15000);
            conn.setConnectTimeout(15000);
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);

            OutputStream os = conn.getOutputStream();

            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os, "UTF-8"));
            writer.write(getPostDataString(postDataParams));

            writer.flush();
            writer.close();
            os.close();
            int responseCode = conn.getResponseCode();

            if (responseCode == HttpsURLConnection.HTTP_OK) {

                BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                sb = new StringBuilder();
                String response;

                while ((response = br.readLine()) != null) {
                    sb.append(response);
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return sb.toString();
    }


    //this method is converting keyvalue pairs data into a query string as needed to send to the server
    private String getPostDataString(HashMap params) throws UnsupportedEncodingException {
        StringBuilder result = new StringBuilder();
        boolean first = true;
        for (Map.Entry entry : params.entrySet()) {
            if (first)
                first = false;
            else
                result.append("&");

            result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
        }

        return result.toString();
    }
}

Phương thức sendPostRequest() chấp nhận các tham số url và post. Chúng tôi đang sử dụng cấu trúc dữ liệu HashMap tại đây để nhận và đặt các cặp khóa và giá trị. Ở đây chúng tôi đang xây dựng một chuỗi bằng cách sử dụng lớp StringBuilder và nối thêm phản hồi nhận được vào chuỗi. Phương thức getPostDataString() chấp nhận tham số HashMap và nối chúng với url

Tạo hoạt động

Hoạt động đăng ký

Bây giờ, chúng ta sẽ tạo hoạt động đăng ký. Tạo một hoạt động trống mới và viết mã bên dưới vào Activity_register. tập tin xml


    
        
        
        
        
        

Chúng tôi đã tạo ba EditText cho tên người dùng, email, mật khẩu và nút gửi để đăng ký đăng nhập Android. Xem hình ảnh bên dưới

Đăng nhập Android Studio bằng PHP MySQL

Bây giờ hãy xây dựng tệp RegisterActivity. Java như sau

________số 8

Lớp trên nhận các giá trị được nhập từ người dùng và các giá trị này được gửi đến phương thức sendPostRequest trong lớp RequestHandler. Lớp RequestHandler sau đó thực hiện công việc gửi và nhận dữ liệu và chúng tôi in thông báo phản hồi bằng văn bản bánh mì nướng. Chúng tôi thực hiện quy trình này bằng AsyncTask giúp thực hiện mọi việc trong nền. Bạn có thể tìm hiểu thêm về AsyncTask Tại đây. Các giá trị do người dùng nhập vào sẽ được lưu trữ bằng cơ sở dữ liệu PHP và MySQL

Hoạt động đăng nhập

Hơn nữa, chúng tôi tiến tới LoginActivity. Lúc đầu, hãy tạo bố cục bằng Activity_login. xml với đoạn mã sau trong đó


    
        
        
        
        

Tệp trên sẽ tạo hai trường nhập EditText cho email và mật khẩu và nút gửi như hình bên dưới

Đăng nhập Android Studio bằng PHP MySQL

Hãy xem tệp java LoginActivity. java bên dưới để biết hướng dẫn đăng ký đăng nhập Android

connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//echo "Connected successfully";
?>
0

Tương tự như tệp Đăng nhập, chúng tôi đang lấy các giá trị đầu vào từ người dùng và gửi chúng bằng lớp RequestHandler. Các tập lệnh php phía máy chủ sẽ kiểm tra thông tin đăng nhập hợp lệ và trả về kết quả. Nếu kết quả đúng chúng tôi sẽ mở hoạt động chào mừng mới. Ở đây, chúng tôi lưu ý rằng một khi người dùng đã đăng nhập, họ sẽ không cần phải đăng nhập lại. Với mục đích này, chúng tôi ở đây sử dụng cấu trúc dữ liệu SharedPreferences. Đây là cấu trúc dữ liệu được ghép nối khóa-giá trị lưu trữ lượng dữ liệu nhỏ trong đó

Ghi chú. Trong đoạn mã trên, bạn phải thay thế địa chỉ ip trong URL_LOGIN thành ip của PC của chính bạn. Để tìm địa chỉ ip, hãy mở dấu nhắc lệnh và gõ “ipconfig” và nhấn enter. Bạn sẽ thấy “Địa chỉ IPv4”, đó là ip của bạn. Sao chép nó và thay thế URL_LOGIN bằng địa chỉ IP của bạn. PC của bạn phải được kết nối với internet để địa chỉ ip hoạt động. Đây là một điều bắt buộc và ứng dụng sẽ không hoạt động trừ khi điều này được thiết lập cẩn thận

Hoạt động chào mừng

Sau khi tìm nạp dữ liệu, chúng tôi sẽ lưu trữ dữ liệu đó trong SharedPreferences. Khóa "trạng thái" chứa giá trị Boolean sẽ đặt thành 1 sau khi đăng nhập thành công. Lần tới khi người dùng mở Hoạt động đăng nhập, họ sẽ được chuyển hướng trực tiếp đến màn hình Chào mừng. Chúng tôi cũng đang lưu trữ email, tên người dùng và mật khẩu sau khi đăng nhập. Bây giờ, hãy tạo một hoạt động mới WelcomeActivity sẽ chỉ mở sau khi đăng nhập thành công. Mã hoạt động bên dưới_welcome. xml

connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//echo "Connected successfully";
?>
1

Mã java của WelcomeActivity. java trong Android Login Đăng ký sử dụng PHP và MySQL hướng dẫn như sau

connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//echo "Connected successfully";
?>
2

Chúng tôi đang hiển thị ở đây tên người dùng của ứng viên và nút đăng xuất. Rõ ràng, nút đăng xuất sẽ xóa tất cả các giá trị trong SharedPreferences và chuyển hướng người dùng đến màn hình đăng nhập. Xem ảnh chụp màn hình bên dưới

Đăng nhập Android Studio bằng PHP MySQL

Như vậy là chúng ta đã hoàn thành Hướng dẫn đăng ký đăng nhập Android bằng PHP và MySQL. Hy vọng bạn hiểu nó. Hơn nữa, nếu bạn có bất kỳ nghi ngờ nào, vui lòng hỏi trong bình luận bên dưới. Bạn luôn có thể tải xuống mã nguồn từ liên kết bên dưới

Tải xuống mã nguồn

Liên kết tải xuống

Nếu bạn muốn xuất bản ứng dụng này và lưu trữ nội dung trực tiếp, thì bạn có thể xem Hướng dẫn lưu trữ web. Tôi khuyên bạn nên sử dụng Dịch vụ lưu trữ của Hostinger vì chúng rẻ và tốt nhất trong lớp. Nhấp vào biểu ngữ bên dưới để tìm hiểu thêm

Làm cách nào để kết nối PHP MySQL với Android Studio?

Đây là khi người dùng đã đăng ký. .
Bước 1. Tạo cơ sở dữ liệu mySQL trong phpMyAdmin. .
Bước 2. Tạo 3 file php. .
Bước 3. Các thành phần nên có trong Android Studio. .
Bước 4. Thiết kế hoạt động_main. xml. .
Bước 5. Tạo một lớp có tên Design the. .
Bước 6. Viết mã trong MainActivity. java. .
Bước 7. Bạn có thể kiểm tra ứng dụng của bạn

Làm cách nào để kết nối ứng dụng Android với cơ sở dữ liệu MySQL?

Kết nối qua phương thức Get . URL url = new URL(link); HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(); request. setURI(new URI(link)); Sau đó, bạn cần gọi phương thức thực thi của lớp HttpClient và nhận nó trong đối tượng HttpResponse.

Chúng ta có thể tạo ứng dụng Android bằng PHP và MySQL không?

Có thể bạn chưa biết hoặc chưa biết rằng bạn có thể sử dụng PHP để phát triển ứng dụng Android của mình. Chúng ta có thể sử dụng PHP làm back-end cho các Ứng dụng Android của mình và hãy tin tôi rằng chúng hoạt động hoàn hảo với nhau. Bất kỳ ứng dụng Android nào cần đăng nhập và đăng ký tài khoản đều có thể sử dụng hiệu quả PHP trên nền tảng của nó .

Làm cách nào để kết nối Android với PHP MySQL bằng XAMPP?

Mở Android Studio để bắt đầu dự án mới
Đặt tên Ứng dụng và tên miền công ty. .
Chọn SDK tối thiểu của Android. .
Chọn hoạt động trống, sau đó nhấp vào Tiếp theo
Đặt tên hoạt động và tên bố cục. .
Khởi động máy chủ Apache và MySQL trong máy chủ XAMPP
Tạo cơ sở dữ liệu data_user và sau đó nhấp vào Tạo