menusearch
javapro.ir

جلسه چهاردهم:ورود کاربر

جستجو
یکشنبه ۲۲ تیر ۱۳۹۹ | ۱۳:۱:۱۵
۱۳۹۸/۱۲/۲۶ دوشنبه
(3)
(0)
جلسه چهاردهم:ورود کاربر
جلسه چهاردهم:ورود کاربر

آموزش ساخت برنامه اینستاگرام با اندروید

 

به نام خدا

 

عرض سلام و درود خدمت شما دوستان عزیز و همراهان همیشگی جاوا پرو
امیدوارم حالتون خوب باشه و ایام هم به کامتون باشه
این جلسه با برنامه نویسی ورود کاربر در برنامه اینستاگرام در خدمت شما عزیزان هستیم
در جلسه قبلی آموزش پروژه محور ساخت برنامه ایسنتاگرام ما ثبت نام کاربر رو برنامه نویسی کردیم و الان کاربر توی برنامه ما ثبت نام کرده و اطلاعات کاربرمون توی دیتابیس ذخیره شده
در این جلسه آموزش پروژه محور ساخت برنامه اینستاگرام ما میخوایم همون اطلاعات رو از دیتابیس بخونیم و ورود کاربر رو برنامه نویسی کنیم.
ابتدا سمت سرور رو برنامه نویسی میکنیم و بعد میریم سراغ برنامه نویسی سمت کلاینت.
در فولدر htdocs ابتدا یک فایل جدید php میسازیم به نام login.php
و بعد با notepad++ اون رو ویرایش میکنیم.
ابتدا تگ php رو باز میکنیم به این شکل و کدها رو درون این تگ مینویسیم:

 

<?php


?>


نمونه کد 1


حالا برنامه نویسی سمت سرور رو شروع میکنیم
ما در بخش ورود هم مثل ثبت نام باید با متد post درخواست بدیم چون اطلاعات شخصی کاربرمون رو میخوایم بفرستیم
پس ابتدا مثل برنامه نویسی سمت سرور ثبت نام،بایدچک کنیم متد درخواست پست باشه و اگه متد پست بود عملیات ورود رو انجام بده.
به این شکل:

 

if($_SERVER['REQUEST_METHOD']=='POST'){

}


نمونه کد 2


تمام کدمون در بدنه این شرط باید نوشته بشه
ابتدا باید اتصال به دیتابیس رو برقرار کنیم دقیقا مشابه کد ثبت نام به این شکل:

 

define('HOST','localhost');
define('USER','root');
define('PASS','');
define('DB','instagram');

$conn = mysqli_connect(HOST,USER,PASS,DB);

 if (!$conn) {
    die("Connection failed" );
}


نمونه کد 3


حالا در قدم اول باید username و password که از سمت کلاینت میاد رو ذخیره کنیم تا بتونیم ازش استفاده کنیم به این شکل:

 

    $username = mysqli_real_escape_string($conn, $_POST['username']);
    $password = mysqli_real_escape_string($conn, $_POST['password']);


نمونه کد 4


مشابه نمونه کد 4 username و password ارسالی از سمت کلاینت رو توی دوتا متغیر که ساختیم ذخیره میکنیم.
حالا باید کوئری بنویسیم و اطلاعات ارسالی رو با اطلاعات موجود توی دیتابیس مطابقت بدیم که کاربرمون اگه اطلاعات رو درست وارد کرده بود وارد بشه و در غیر این صورت وارد نشه
باز هم مطابق ثبت نام
کوئری رو باز هم به فرم statement مینویسیم
از مزیت های این روش در جلسه قبل گفتیم
به این روش عمل میکنیم:

 

$stmt = $conn->prepare("select * from user WHERE username = ? and password = ?");
  $stmt->bind_param("ss", $username, $password);
  $stmt->execute();
  $stmt->store_result();


نمونه کد 5


کوئری رو به شکل نمونه کد 5 میدیم و دو پارامتری رو که از سمت کلاینت دریافت کردیم بهش پاس میدیم
حالا باید چک کنیم ببینیم آیا اصلا username و password ارسالی از سمت کاربر در دیتابیس وجود داره یا نه
اگر وجود داشته باشه باید تعداد سطرهای موجود $stmt بیشتر از صفر باشه
یعنی چی تعداد سطرها بیشتر از صفر باشه
یعنی اینکه کوئری که ما بهش دادیم تونسته حداقل یک مورد رو در دیتابیس پیدا کنه
پس برای چک کردن از این کار استفاده میکنیم:

 

    if($stmt->num_rows > 0){
    echo "done";    
    }
else{
        echo "error";
    }
    mysqli_close($conn);


نمونه کد 6


در نمونه کد 6 میگیم اگه کوئری که دادیم تونست چیزی رو پیدا کنه پاسخ "done" رو میفرستیم یعنی آقا اطلاعاتی که شما برای ما فرستادی اوکیه  و میتونی وارد بشی
اگه هم اطلاعات ارسالی اشتباه بود و مطابقت نداشت یا توی دیتابیس موجود نبود “error” رو ارسال میکنه به کاربرمون و میگه این چیزی که دادی به من توی دیتابیس نیست و اجازه وارد شدن نداری.
و در آخرم اتصال به دیتابیس رو میبندیم.
حالا کد کامل سمت سرور رو میذارم و بعد میریم سمت کلاینتمون رو برنامه نویسی میکنیم.

 

<?php
if($_SERVER['REQUEST_METHOD']=='POST'){

define('HOST','localhost');
define('USER','root');
define('PASS','');
define('DB','instagram');
$conn = mysqli_connect(HOST,USER,PASS,DB);
if (!$conn) {
die("Connection failed" );
}
$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

$stmt = $conn->prepare("select * from user WHERE username = ? and password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows > 0){
echo "done";
    }else{
    echo "error";
    }
    mysqli_close($conn);
}
?>


نمونه کد 7


نمونه کد 7 کد کامل سمت سرور قسمت ورود هست
حالا میریم و سمت کلاینت رو برنامه نویسی میکنیم با همدیگه
ابتدا Android Studio رو باز میکنیم
و بعد میریم به LoginActivity
باز هم بنده میخوام با استفاده از کتابخانه volley درخواست بدم پس در onCreate مشابه ثبت نام یک صف درخواست میسازیم به این شکل:

 

final RequestQueue queue= Volley.newRequestQueue(this);


نمونه کد 8


روش درخواست کاملا مشابه با قسمت ثبت نام کاربر هست و هیچ تفاوتی با یک دیگر ندارند
چه زمانی باید درخواست بدیم حالا؟
وقتی که کاربر روی دکمه لاگین کلیک کرد و فیلد ها رو به درستی پر کرده بود
ابتدا رویداد کلیک را برای دکمه لاگین تعریف میکنیم به این شکل:

 

login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {


}


نمونه کد 9


و بعد درون متد oncClick باید با یک شرط چک کنیم که کاربر به درستی فیلدها رو تکمیل کرده باشه به این شکل:

 

if (username.getText().toString().isEmpty() || password.getText().toString().isEmpty()){
    Toast.makeText(LoginActivity.this, "Please fill the fields Correctly", Toast.LENGTH_SHORT).show();
}


نمونه کد 10


در نمونه کد 10 میگیم که اگر کاربر به درستی فیلدها رو تکمیل نکرده باشه و فیلدها خالی باشن باید بهش یه پیغام بدیم که فیلدها رو پر کن واگرنه ما نمیدونیم که چه اطلاعاتی رو باید با دیتابیسمون مقایسه کنیم.
خب حالا اگه به درستی پر کرده بود چی
حالا وقتشه که درخواست بدیم
چون درخواست دقیقا مشابه عملیات ثبت نام هست پس من دیگه مرحله به مرحله پیش نمیرم و تمام کد رو میذارم و بعد اگر توضیحی لازم بود رو عرض میکنم خدمتتون
درخواست به سرور به این شکل انجام میشه:

 

else {
    StringRequest login = new StringRequest(Request.Method.POST, Server.server_address + "login.php", new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            if (response.contains("done")) {
                startActivity(new Intent(LoginActivity.this, MainActivity.class));
                finish();
                Toast.makeText(LoginActivity.this, "Login successfully", Toast.LENGTH_SHORT).show();
            } else if (response.contains("error")) {
                Toast.makeText(LoginActivity.this, "Username or password is incorrect", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(LoginActivity.this, "Unable connect to server", Toast.LENGTH_SHORT).show();
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(LoginActivity.this, "Unable connect to server", Toast.LENGTH_SHORT).show();
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("username", username.getText().toString());
            params.put("password", password.getText().toString());
            return params;
        }
    };
    queue.add(login);

}


نمونه کد 11


مطابق عملیات ثبت نام در متد ()getParams اطلاعات رو از فیلدهایی که کاربر پر میکنه میگیریم و به سرور میفرستیم
عملیات ورود به این صورته که اطلاعاتی که کاربر میفرسته به سرور رو باید سرور چک کنه توی دیتابیس هست یا نیست
اگه باشه که اوکیه و سرور هم بهمون میگه "done" و ما اجازه ورود داریم
اگه هم اطلاعات ارسالی ما توی دیتابیس نباشه
سرور میگه "error" یعنی اجازه ورود نداریم
پس سرور فقط 2 پاسخ به ما میده
پس ابتدا به ip شبکه مون و بعد فایل login.php درخواست میدیم و میگیم پاسخی که از سرور میاد برامون هم از نوع String هست و بعد این دو پاسخ رو مطابق نمونه کد 11 در onRespone مدیریت میکنیم و میگیم اگه پاسخ سرور "done"  یعنی مثبت بود برو به صفحه اصلی یا همون MainActivity و به کاربرمون هم یه پیام بدیم که ورود با موفقیت همراه بوده
اگر هم پاسخ "error" بود یعنی اطلاعات ارسالی توی دیتابیس وجود نداره پس به کاربر میگیم یوزرنیم یا پسورد اشتباهه
پاسخ غیر از این 2 بود هم که یعنی کلا ارتباط به سرور برقرار نشده و پیغام مربوطش رو به کاربرمون نشون میدیم.
برنامه اگه به قسمت onError هم بره یعنی ارتباط با دیتابیس برقرار نشده پس اینو به کابرمون نشون میدیم.

حالا  مجددا ip رو چک میکنیم و بعد xampp رو استارت میکنیم تا سرور مجازیمون ساخته بشه
برنامه رو ران میکنیم
توی صفحه لاگین اطلاعات یعنی یوزرنیم و پسورد رو به این شکل و همونطور که در دیتابیس وجود داره وارد میکنیم و بعد روی لاگین کلیک میکنیم
 


آموزش اندروید ساخت برنامه اینستاگرام


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


 این جلسه آموزشی را می توانید بصورت  کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)

 

 

 

 

دانلود رایگان کتاب اموزش زبان برنامه نویسی جاوا

لینک دانلود کتاب

 

 


نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا 
عضو کانال تلگرام ما شوید.

نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

0 نظر