آموزش ساخت سیستم ورود با php و mysql در اندروید

سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ساخت سیستم ورود با php و mysql در اندروید خواهیم پرداخت در آموزش قبلی به آموزش ساخت سیستم ورود با استفاده از php و mysql پرداختیم که در ادامه لینک آن را برای شما قرار میدهم با استفاده از آموزش قبلی و این آموزش می توانید یک سیستم جامع ورود و ثبت نام سفارشی برای خودتان ایجاد کنید در ادامه با ما همراه باشید.
آموزش ساخت سیستم ثبت نام با php و mysql در اندروید
در این آموزش ما دو اکتیویتی داریم
که نام layout های آن همانند زیر می باشد.
Layout

  • activity_main.xml
  • activity_profile.xml

Activity

  • MainActivity.java
  • ProfileActivity.java

کار بعد از ورود موفق از MainActivity به ProfileActivity منتقل می شود.
اگر آموزش قبل را دنبال کرده اید دیگر نیاز به ساخت دیتابیس ندارید و می توانید از همان دیتابیس استفاده کنید.
در صورتی که آموزش قبل را دنبال نکرده اید یک جدول به نام User_Details_Table با چهار فیلد ایجاد کرده هر فیلد به ترتیب id, User_Email, User_Password, User_Full_Name قرار دهید و id را برابر با primary key قرار دهید همانند عکس زیر

در بالا ما یک Insert انجام داده ایم شما نیاز است این کار را انجام دهید برای insert از تب بالای phpmyadmin می توانید این کار را بکنید.
همانند آموزش قبلی یک فایل به نام DatabaseConfig.php داریم که اطلاعات مربوط به دیتابیس در آن قرار دارد. (در صورتی که در آموزش قبل آن را ایجاد کردید نیازی نیست دوباره آن را ایجاد کنید)

<?php
$HostName = "localhost";
$HostUser = "id302300_android_examples_data_user";
$HostPass = "1234567890";
$DatabaseName = "id302300_android_examples";
?>

در بالا به جز HostName بقیه را باید تغییر دهید.
باید یک فایل php به نام user_login.php ایجاد کرده و کدهای زیر را در آن قرار دهید.

<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
include 'DatabaseConfig.php';
$con = mysqli_connect($HostName,$HostUser,$HostPass,$DatabaseName);
$email = $_POST['User_Email'];
$password = $_POST['User_Password'];
$Sql_Query = "select * from User_Details_Table where User_Email = '$email' and User_Password = '$password' ";
$check = mysqli_fetch_array(mysqli_query($con,$Sql_Query));
if(isset($check)){
echo "User Found";
}
else{
echo "Invalid Username or Password Please Try Again !";
}
}else{
echo "User NotFound";
}
mysqli_close($con);
?>

کد php بالا بررسی می کند که آیا یوزری با Email و Password مورد نظری که به این فایل post می شود وجود دارد یا خیر در صورتی که در دیتابیس user پیدا شود پیام User Found چاپ می شود در غیر این صورت User NotFound نمایش داده می شود.
پس کد بالا یکسری مقدار ورودی بهش post می شود و یکسری بررسی انجام میدهد.
برویم به سراغ کد برنامه
در این آموزش هم از کتاب خانه volley استفاده می شود.
ابتدای کار وارد فایل AndroidManifest.xml شده و دسترسی زیر را اضافه کنید.

<uses-permission android:name="android.permission.INTERNET"/>

وارد فایل Build.gradle از نوع Module شده سپس در بخش dependencies خط زیر را اضافه کنید.

compile 'com.android.volley:volley:1.0.0'

پروزه را sync کنید.
در activity_main.xml کدهای زیر را قرار دهید.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="15dp"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:textSize="20dp"
        android:textStyle="bold"
        android:text="Programchi.ir"
        android:gravity="center"
        android:layout_marginTop="20dp"/>
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Enter Your Email"
        android:gravity="center"
        android:id="@+id/editText_Email"
        android:layout_below="@+id/textView"
        android:layout_marginTop="20dp"/>
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Enter Your Password"
        android:gravity="center"
        android:id="@+id/editText_Password"
        android:inputType="textPassword"
        android:layout_below="@+id/editText_Email"
        android:layout_marginTop="20dp"/>
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="LOGIN"
        android:id="@+id/button_login"
        android:layout_below="@id/editText_Password"
        android:layout_marginTop="20dp"/>
</RelativeLayout>

در بالا دو EditText برای دریافت متن و یک دکمه برای ارسال درخواست قرار داده شده است.
ابتدا وارد MainActivity.java شده و کدهای زیر را در آن قرار دهید.

package ir.programchi;
import android.app.ProgressDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
    EditText Email, Password;
    Button LoginButton;
    RequestQueue requestQueue;
    String EmailHolder, PasswordHolder;
    ProgressDialog progressDialog;
    String HttpUrl = "https://orjinakteb.com/user_login.php";
    Boolean CheckEditText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Email = (EditText) findViewById(R.id.editText_Email);
        Password = (EditText) findViewById(R.id.editText_Password);
        LoginButton = (Button) findViewById(R.id.button_login);
        requestQueue = Volley.newRequestQueue(MainActivity.this);
        progressDialog = new ProgressDialog(MainActivity.this);
        LoginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                CheckEditTextIsEmptyOrNot();
                if (CheckEditText) {
                    UserLogin();
                } else {
                    Toast.makeText(MainActivity.this, "Please fill all form fields.", Toast.LENGTH_LONG).show();
                }
            }
        });
    }
    public void UserLogin() {
        progressDialog.setMessage("Please Wait");
        progressDialog.show();
        StringRequest stringRequest = new StringRequest(Request.Method.POST, HttpUrl,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String ServerResponse) {
                        progressDialog.dismiss();
                        if(ServerResponse.equalsIgnoreCase("user found")) {
                            Toast.makeText(MainActivity.this, "Logged In Successfully", Toast.LENGTH_LONG).show();
                            finish();
                            Intent intent = new Intent(MainActivity.this, ProfileActivity.class);
                            intent.putExtra("UserEmailTAG", EmailHolder);
                            startActivity(intent);
                        }
                        else {
                            Toast.makeText(MainActivity.this, ServerResponse, Toast.LENGTH_LONG).show();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        progressDialog.dismiss();
                        Toast.makeText(MainActivity.this, volleyError.toString(), Toast.LENGTH_LONG).show();
                    }
                }) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("User_Email", EmailHolder);
                params.put("User_Password", PasswordHolder);
                return params;
            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
        requestQueue.add(stringRequest);
    }
    public void CheckEditTextIsEmptyOrNot() {
        EmailHolder = Email.getText().toString().trim();
        PasswordHolder = Password.getText().toString().trim();
        if (TextUtils.isEmpty(EmailHolder) || TextUtils.isEmpty(PasswordHolder)) {
            CheckEditText = false;
        } else {
            CheckEditText = true;
        }
    }
}

دوستان دقت کنید در بالا شما باید HttpUrl به آدرس فایل خودتان در هاست تغییر دهید
بعد از اینکه view را find کردیم و بعد از بررسی خالی نبودن EditText ها داده ها به فایل php ما post می شود در فایل php بررسی میشود آیا این کاربر با این ایمیل  و پسورد رد دیتابیس وجود دارد یا خیر و توضیح دادیم بعد از آن چه پیام های چاپ می شود در بالا در صورتی کاربر اطلاعات را درست وارد کرده باشد به اکتیویتی دوم منتقل می شود.
کد مربوط به layout دوم ما که نام آن برابر با activity_profile.xml است همانند زیر میشود.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="20dp"
    tools:context=".ProfileActivity">
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/TextViewUserEmail"
    android:gravity="center"
    android:textStyle="bold"
    android:textSize="18dp"
    android:text="Welcome - "
    android:layout_marginTop="50dp"
    />
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="LOGOUT"
        android:id="@+id/button_logout"
        android:layout_below="@+id/TextViewUserEmail"
        android:layout_marginTop="50dp"/>
</RelativeLayout>

و کد  جاوا مربوط به ProfileActivity.java  همانند زیر می شود.

package ir.programchi;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.LoginFilter;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class ProfileActivity extends AppCompatActivity {
    TextView textView;
    Button logout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
        textView = (TextView)findViewById(R.id.TextViewUserEmail);
        logout = (Button)findViewById(R.id.button_logout);
        String TempHolder = getIntent().getStringExtra("UserEmailTAG");
        textView.setText(textView.getText() + TempHolder);
        logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(ProfileActivity.this, "Logged Out Successfully", Toast.LENGTH_LONG).show();
                finish();
                Intent intent = new Intent(ProfileActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

 
و یک کد خیلی ساده در بالا قرار دادیم تا یک مقدار که از MainActivity به این اکتیویتی پاس داده می شود و در این اکتیویتی نمایش داده می شود و یک دکمه وجود دارد که با کلیک بروی آن از اکتیویتی به اکتیویتی اصلی باز خواهیم گشت.
 
این آموزش هم به پایان رسید.
 
موفق و پیروز باشید.

مطالعه بیشتر