به نام خدا
عرض سلام و درود خدمت شما همراهان عزیز سایت جاوا پرو
امیدوارم حالتون خوب و ایام به کامتون باشه
این جلسه با روش ثبت نام کاربر در خدمت شما عزیزان هستم
اول از همه میریم و شبیه ساز سرور رو فعال میکنیم
و به ادرس http://localhost/phpmyadmin/ میریم
در اینجا باید در دیتابیس Instagram که قبلا ساختیم table بسازیم تا بتونیم اطلاعات کابرمون رو درونش ذخیره کنیم.
مطابق مراحل تصویر 1 و گام به گام با بنده پیش برید
1)ابتدا new رو بزنید
2)در قسمت Table name اسم جدولمون رو میذاریم user
3)تعداد ستون هایی که برای جدول لازم داریم فعلا 7 ستون هست،4 تا رو داریم پس 3 تای دیگه رو اضافه میکنیم(اگر در ادامه بیشتر لازم شد اضافه میکنیم)
4)روی go کلیک میکنیم و به مرحله بعد میریم(تصویر2)
اطلاعات رو طبق تصویر 2 وارد میکنیم
این اطلاعات،تمام ویژگی های کاربر ما هست و یک آیدی از نوع primary key و auto increment برای اینکه هر آیدی مختص یک کاربر باشد و با ساخت هر کاربر جدید آیدی نیز خودکار افزایش یابد پس به یاد داشته باشید که تیک آن را فعال کنید.
Enter رو میزنیم و سپس جدول ما ساخته میشه.
حالا باید بریم و فایل php برای اتصال به دیتابیس ثبت نام کاربر رو برنامه نویسی کنیم.
ابتدا به ادرس c/xampp/htdocs و پوشه Instagram که قبلا ساختیم میریم و یک فایل جدید php به نام signup.php
میسازیم و با محیط notepad++ کدهای لازم رو مینویسیم.
تگ php رو در notepad++ به این شکل باز میکنیم و کدهامون رو درون این تگ مینویسیم:
<?php کدها رواینجا مینویسیم ?> |
نمونه کد 1
جلوتر هم توضیح دادیم به دو نوع متد post و get میتونیم عملیات درخواست به سرور رو انجام بدیم
گفتیم هم اطلاعاتی که با get ارسال میشه رو میشه دید پس برای عملیات ثبت نام که لازمه اطلاعات محرمانه کاربر ارسال بشه باید از متد post استفاده کنیم
پس یه شرط میذاریم و میگیم اگه فقط متد درخواستی post بود عملیات ثبت نام رو انجام بده
پس ابتدا این شرط رو در php به این شکل مینویسیم:
if($_SERVER['REQUEST_METHOD']=='POST'){ |
نمونه کد 2
حالا اتصال به دیتابیس رو برقرار میکنیم به این شکل:
define('HOST','localhost'); $conn = mysqli_connect(HOST,USER,PASS,DB); if (!$conn) { |
نمونه کد 3
حالا در ادامه باید 4 تا متغیر تعریف میکنیم برای 4 فیلد username,email,password,fullname که قراره از قسمت اندروید ارسال بشه رو دریافت کنیم و در این متغیر ها رو ذخیره کنیم تا بتونیم ازشون استفاده کنیم به این شکل:
$username = mysqli_real_escape_string($conn, $_POST['username']); |
نمونه کد 4
حالا باید چک کنیم که username و email ارسالی از سمت کاربر در دیتابیس موجود نباشد(دقیقا مثل الان اینستاگرام که ایمیل و یوزرنیم تکراری مورد قبول نیست و دو کاربر نمیتونن ایمیل و یوزرنیم یکسان داشته باشن)
این موضوع رو هم به صورت زیر(نمونه کد 4) هندل میکنیم که اگر از قبل یوزر نیم و یا ایمیل یکسان موجود بود به ما ارور بده به این شکل:
$stmt = $conn->prepare(" select id from user WHERE username = ? or email = ?"); |
نمونه کد 5
ابتدا من توضیح بدم نمونه کد 5 چیکار میکنه
بعدا نکاتش رو میگم و شما رو با statements کاملا اشنا خواهم کرد و مزیت هاش رو عرض خواهم کرد.
نمونه کد 5 ابتدا میاد چک میکنه که یوزر نیم و ایمیلی که ما از سمت اپلیکیشن ارسال کردیم توی جدولمون هست یا نه
خب اگه باشه یعنی کاربر قبلا ثبت نام کرده و نمیشه دوتا کاربر یوزرنیم و ایمیل یکسان داشته باشن پس توی یک شرط چک میکنیم اگر موجود بود باید به ما پیغام موجودیت بده(echo “ exist s ”;)
خب حالا چرا statement رو آموزش دادیم؟
این روش خیلی ایمن تر هست نسبت به روش عادی که هر بار کوئری بنویسیم و پارامترها رو بهش توی همون کوئری بدیم
ایمن از این جهت که توی این روش SQL injection رخ نمیده و توی پروژه های بزرگ از این روش استفاده بشه بسیار بهتره.
مزیت های دیگری هم نسبت به روش عادی داره که بنده به دلیل زیاد شدن مطالب از گفتنش صرف نظر میکنم ولی اگر علاقه مندید بدونید میتونید سرچ کنید و ببینید.
خب حالا این مشکل رو هم هندل کردیم با هم دیگه
شرط گذاشتیم که اگه موجود بود به ما پیغام وجود داشتن رو بده
حالا اگه یوزر نیم و ایمیل از قبل موجود نبود چی؟
خب این خیلی خوبه
این یوزرنیم و ایمیل و بقیه اطلاعات کاربر رو به دیتابیسمون وارد میکنیم و عملیات ثبت نام با موفقیت انجام میشه به این شکل:
else{ |
نمونه کد 6
مطابق نمونه کد 6 اطلاعات ارسالی از سمت کاربر رو به دیتابیسمون وارد میکنیم اگر با موفقیت کوئری انجام شد و اطلاعات وارد شد پیغام (done) رو میدیم و در غیر اینصورت بهمون error میده و در اخر هم اتصال به دیتابیسمون رو میبندیم.
کد کلی سمت سرور رو میذارم و بعد میریم سمت کلاینت یعنی در اندروید رو هم برنامه نویسی میکنیم.
<?php if($_SERVER['REQUEST_METHOD']=='POST'){ define('HOST','localhost'); $conn = mysqli_connect(HOST,USER,PASS,DB); if (!$conn) { $stmt = $conn->prepare(" select id from user WHERE username = ? or email = ?"); echo "done"; mysqli_close($conn); |
نمونه کد 7
نمونه کد 7 کد کلی سمت سرورمون هست.
خب حالا میریم توی پروژه مون توی اندروید استودیو
قبل از از اینکه شروع کنم یه نکته رو عرض کنم خدمتتون
بنده توی سرفصل ها بهش اشاره ای نکردم و فقط گفتم که قراره با کتابخانه Android Networking کار کنید و درخواست بدید
حالا یه خبر خوب بدمتون اینکه قراره آموزش کتابخانه معروف Volley هم بدیم بهتون که اگر نیازتون شد بتونید با Volley هم درخواست بدین.
پس حالا بریم و شروع کنیم.
برای اینکه بتونیم از این کتابخانه ها استفاده کنیم باید به پروژه مون اضافه اش کنیم
جلسات پیش کتابخانه عکس دایره ای(circle image view) رو اضافه کردیم و حالا هم مطابق قبل به مسیر build.gradle(module:app) میریم و این دو کتابخونه رو هم به این شکل اضافه میکنیم:
implementation 'com.amitshekhar.android:android-networking:1.0.2' |
کتابخانه 1
و بعد تحریم شکن رو روشن میکنیم و روی sync کلیک میکنیم و صبر میکنیم تا کتابخونه ها sync بشن توی پروژه مون.
بعد باید 2 تا کار رو انجام بدیم
اولیش اینه که به برناممون دسترسی اینترنت بدیم یعنی بهش بگیم تو مجازی از اینترنت استفاده کنی چون اگه دسترسی ندیم بهش خودشو مجاز نمیدونه که به اینترنت وصل شه و بهمون خطا میشه
یکی هم اینکه برناممون که اجرا میشه مستقیم میره توی صفحه اصلی یعنی MainActivity
خب ما که اینو نمیخوایم
ما میخوایم مثل اینستاگرام که تازه نصب میکنیم برناممون بعد از اجرا بره توی صفحه ورود(LoginActivity).
برای انجام این دوتا کار باید به manifest بریم.
همه کاری که باید انجام بدیم توی تصویر 3 موجوده
به ترتیب مراحل ابتدا به سر پوشه app میریم
بعدش به manifests و بعد از اون به AndroidManifest.xml میریم
ابتدا مطابق مرحله 4 به برناممون دسترسی اینترنت میدیم به این شکل:
<uses-permission android:name="android.permission.INTERNET" /> |
دسترسی 1
بعد برای اینکه برناممون پس از اجرا به صفحه به صفحه لاگین بره باید intent filter ها رو برای لاگین قرار بدیم
هم میتونید اونا رو به اکتیویتی لاگین ببرید و هم میتونید اسم های MainActivty و LoginActivity رو با هم دیگه جاشون عوض کنید.
در آخر باید مطابق مرحله 5 intent filter ها در قسمت اکتیویتی لاگین باشن.
خب حالا برنامه رو اگه روی شبیه ساز اجرا کنیم باید به صفحه ورود بریم یعنی این صفحه(تصویر 4):
حالا برناممون مثل اینستاگرام که تازه نصب میکنیم ابتدای کار به صفحه ورود میره ولی ما با صفحه ثبت نام کار داریم و از قبل وقتی که UI این صفحه رو طراحی میکردیم این موضوع رو هم برنامه نویسی کردیم که وقتی کاربر روی Signup کلیک کرد میره به صفحه ثبت نام که ما لازم داریم.
برای اینکه ثبت نام کاربر رو برنامه نویسی کنیم نیاز داریم که به ادرس سرورمون دسترسی داشته باشیم
سرور ما مجازیه و ادرسش همون ادرس ipv4 address شبکه ای که بهش وصل هستید هست.
راه های مختلفی برای دسترسی به این ip هست
راحت ترین راهش اینه که cmd رو باز کنیم و بنویسیم ipconfig و اینتر رو بزنیم و ivp4 address رو ذخیره کنید مثلا برای شبکه ای که بنده بهش وصلم 192.168.1.101 هست(ممکنه تغییر کنه هر بار چک کنید)
چون میخوایم از این ای پی استفاده کنیم برای درخواست دادن و ممکنه عوض بشه پس بهتره یه کلاس بسازیم که این ادرس سرورمون رو درونش نگه داریم
پس یه کلاس جدید میسازیم به نام Server
و درون این کلاس یک string از نوع static و final تعریف میکنیم و ادرس سرورمون رو بهش میدیم به این شکل:
public class Server { } |
نمونه کد 8
بعد از ادرس سرورمون باید اسم پوشه ای که در فولدر htdocs قبلا ساختیم رو بذاریم که ما گذاشتیم instagram(دقت داشته باشید حتما به فرم نمونه کد 8 اطلاعات را وارد کنید).
حالا به SignupActivity میریم
ابتدا توی متد onCreate باید یک RequestQueue برای درخواست دادنمون بسازیم به این شکل:
final RequestQueue queue = Volley.newRequestQueue(this); |
نمونه کد 9
بعد ما میخوایم وقتی که روی دکمه signup کلیک شد عملیات ثبت نام و درخواست به سرور انجام بشه.
پس برای دکمه signup رویداد کلیک تعریف میکنیم به این شکل:
signup.setOnClickListener(new View.OnClickListener() { } |
نمونه کد 10
................ادامه این آموزش را به صورت پی دی اف شده دانلود کنید................
این جلسه آموزشی را میتوانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)
نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا عضو کانال تلگرام ما شوید.
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |