رفتن به مطلب

آموزش رایگان ارتباط b4a با فایل php در هاست


mohammad_mahdi

ارسال‌های توصیه شده

با سلام و خسته نباشید خدمت اساتید محترم.

این اولین تاپیک من در این سایته. امیدوارم مفید باشه.

 

قبلش باید بگم که من در بیسیک 4 اندروید خیلی تازه کار هستم و فقط یه اپ آزمایشی تاحالا نوشتم ولی با زبان هایی مثل HTML و CSS و JS و PHP خیلی سر و کار داشتم. تو این چند وقت خیلی از نرم افزار ها رو آزمایش کردم و فعلا b4a رو انتخاب کردم تا ببینم چی میشه!

 

خب دیگه میریم سر اصل مطلب:

همونطور که خیلیا میدونند، الآن آموزش رایگان برای اتصال به اینترنت و آنلاین شدن در b4a خیلی کمه. حالا من میخوام تجربه های شخصی خودمو در اختیارتون بذارم(خودم از سایتای خارجی مخصوصا سایت اصلی b4a یعنی b4x یاد گرفتم)

 

هزینه آموزش هم یک صلواته.

 

ابزار مورد نیاز:

نرم افزار b4a

نرم افزار xampp (اگر میخواهید به صورت آفلاین و بدون سرور به php متصل بشوید) پیشنهاد میشود در این آموزش حتما از این نرم افزار استفاده کنید.

 

خب اول یه توضیحی درباره xampp بدم. این نرم افزار، به شما کمک میکنه تا بدون نیاز به هزینه کردن و خریدن هاست و دامنه، راحت بتونید یه هاست مجازی روی کامپیوتر خودتون راه اندازی کنید و از تمام ویژگی های mysql و php استفاده کنید!

 

آخرین نسخه xampp رو از اینجا به رایگان دانلود کنید.

 

حالا میخوایم کمی درباره نحوه اتصال به php و ... بیشتر توضیح بدیم:

چون اندروید به طور مستقیم نمیتونه به سرورهای روی اینترنت وصل بشه، پس باید به طور غیر مستقیم و از طریق فایل php وصل بشه. این مساله در مورد خیلی از ابزار و نرم افزارها و زبان های برنامه نویسی دیگه هم صدق میکنه(مثل نرم افزار یونیتی که مربوط به بازی سازیه).

به طور معمول و در برنامه نویسی تحت وب(وبسایت)، 5 تا زبان معروف برای برنامه نویسی وب وجود دارند که عبارتند از HTML و CSS و Javascript یا همون JS و PHP و ASP که ما با اون 3 تای اولش کاری نداریم. یعنی میمونه php و asp که چون من تخصصی در asp ندارم، سراغش نمیرم و به php میپردازم. البته asp هم فکر کنم به b4a وصل میشه اما باهاش کاری نداریم. لازم به ذکره که اون سه تای اولی، همگی زبانهای سمت کاربر هستند. (یعنی مثلا من با مرورگرم میام تو سایت basic4android.org و اطلاعاتی که دریافت میکنم و میبینم و میتونم توی inspect element تغییر بدم رو میگن سمت کاربر که در رابطه با مسائل امنیتی کمتر مطرح میشن). php و asp هم زبانهای سمت سرور هستند که از طریق اونها میشه کاربرها رو به هم مرتبط کرد و کدهای این زبان ها از دید ما مخفیه(در inspect element نمایش داده نمیشوند) خلاصه بهتون بگم که اگه قصد ساختن برنامه به این سبک داشته باشین، باید مسئله امنیت رو جدی بگیرین که اونم مربوط به توابع امنیتی php میشه.

حالا ما فقط به php میپردازیم.

 

برای ارسال اطلاعات از طریق php، دو روش وجود داره. یکی روش get و دیگری روش post

مطمئنا همتون در نوار آدرس مرورگر حروف عجیب و غریب که تو در تو و پشت سر هم هستند رو دیدین. به عنوان مثال:

basic4android.org/index.php?app=forums&module=post&section=post&do=new_post&f=13

خب در این آدرس، اول علامت سوال رو پیدا کنید. تا علامت سوال، یه آدرس معمولیه اما بعد از اون یک سری اطلاعات نوشته شده و این اطلاعات از طریق روش get ارسال شده اند! و بین هر متغیر، یک علامت & وجود دارد. همونطور که اشاره کردم، به این روش، روش get میگویند.

روش post، یک روش زیر پوستی است که در آن، اطلاعات، بدون اینکه آشکار شوند، رد و بدل میشوند(یعنی، ما نمیتوانیم آنرا مثل روش get ببینیم)

 

شما هم آزمایش کنید

 

نرم افزار xampp رو که دانلود کردید، نصب کنید(مثل نصب های معمولی). بعد از نصب، آنرا اجرا کنید و حالا محیط کنترل پنل زمپ رو میبینید. در ستون Service دقت کنید و اگر علامت ضربدر مانند روی آن میبینید، کافیست یکبار روی آن کلیک کنید تا گزینه ها فعال شوند و اگر نمیبینید که هیچ. با دقت در ستون module، گزینه های Apache و MySQL رو میبینید(به بقیه گزینه ها کاری نداشته باشید). دکمه Start که در ستون Actions قرار دارد و مربوط به Apache و MySQL میشود را جداگانه(روی هر دو) کلیک کنید چند لحظه صبر کنید و سپس دکمه Admin را برای هر دو کلیک کنید. 2 صفحه در مرورگرتان باز میشود که یکی مربوط به MySQL و دیگری مربوط به دامین هاستتون میشه. تبریک میگوییم، نرم افزار راه افتاد. ولی هنوز یکسری تنظیمات مونده.

به آدرس محل نصب xampp بروید و وارد پوشه htdocs بشوید. یک نیو فولدر در داخل htdocs بسازید و اسمش را هرچه میخواهید بگذارید(مثلا xampp) و همه محتویات داخل htdocs را داخل آن پوشه ای که ساختید کات کنید. حالا دوباره داخل htdocs، پوشه دیگری بسازید به نام b4a_php_test و واردش بشوید.

مرورگر را باز کنید و آن صفحه با حاشیه های نارنجی که توسط نرم افزار باز شد، رفرش کنید(اگر بسته بودین، دوباره گزینه Admin کنار Apache را بزنید).

در مرورگرتون، 2 تا پوشه میبینید که همون پوشه های ساخته شده توسط شما هستند. از این به بعد اگه پروژه جدید php داشتین به همین سبک در htdocs پوشه بسازید و از طریق این قسمت در مرورگر، اونهارو باز کنید.

خب حالا برگردید به پوشه b4a_php_test و یک فایل txt ایجاد کنید و داخلش بنویسید:

<?php
$my_name = $_GET['name'];
$my_age = $_GET['age'];
echo "My Name Is $my_name And I Am $my_age Years Old.";
?>

و در هنگام ذخیره کردن، اسم فایل رو بذارید index.php یعنی با فرمت php حتما باید باشه.

مقدار Encoding رو هم UTF-8 بگذارید.

حالا دوباره از طریق نرم افزار xampp به مرورگر برگردید و از بین لیست پوشه ها که در مرورگر نمایش داده میشود، b4a_php_test را انتخاب کنید و نتیجه را ببینید. احتمالا با 2 تا ارور مواجه شدید و متنی که ناقص است. خب حالا کافیه در نوار آدرس مرورگر، این را در ادامه آدرس وارد کنید:

?name=mohammad mahdi&age=19

سپس اینتر بزنید.

نتیجه این است: My Name Is mohammad Mahdi And I Am 19 Years Old

خب شما موفق شدید با برنامه نویسی php و از طریق دستور get، اولین متنتون رو ارسال کنید.

حتی دیگه میتونید هر چیزی خواستید وارد کنید و مقدار ها رو عوض کنید و کلی کار دیگه و حتی اینهارو با توابع php ترکیب کنید و خروجی مورد نظرتون رو نشون بدین.

 

خب از الآن به بعد میخوام بهتون یاد بدم که چطوری از طریق b4a و روش get با php ارتباط برقرار کنیم

دقیقا همین متن رو میتونیم بفرستیم توی برنامه مون در b4a و حتی میتونیم مقدار name و age رو از طریق b4a بهش بدیم و نتیجه رو با php درست کنیم و دوباره به b4a ارسال کنیم(مقدار را به b4a برگردانیم).

 

خب حالا که کدهای سمت سرور رو درست کردیم، میریم سراغ کدهای b4a:

اول یه پروژه ایجاد کنید. این کتابخونه ها رو هم باید داشته باشه: Core و HttpUtils2 و Network

 

حالا دو تا دکمه توی صفحه بذارین. دقت کنید که حتما 2 تا دکمه بذارین. اگر خواستین براشون تکست بذارید تا قاطی نکنید.

 

این کد رو به اسم لایوت خودتون داخل Activity_Create بذارین تا لایوت اجرا بشه

Activity.LoadLayout("Layout1")

این dim رو هم در داخل ساب Globals اضافه کنید

Dim InsertPerson As HttpJob

و حالا یک ساب برای کلیک روی دکمه شماره یک اضافه کنید:

Sub Button1_Click
  InsertPerson.Initialize("InsertP", Me)
  InsertPerson.download2("http://Your_IPv4_Address/b4a_php_test/index.php", Array As String ("name", "mohammad mahdi", "age", "19"))  
End Sub

و ساب کلیک دکمه شماره دو:

Sub Button2_Click
  InsertPerson.Initialize("InsertP2", Me)
  InsertPerson.download2("http://Your_IPv4_Address/b4a_php_test/index.php", Array As String ("name", "Ali", "age", "27"))  
End Sub

توضیحات:

منظور از IPv4 _address چیست؟ cmd یا خط فرمان را باز کنید و بنویسید: ipconfig و اینتر بزنید و بگردید دنبال عبارت IPv4 Address که فکر کنم 3 تا گزینه پیدا میکنید با آدرس آی پی مختلف. اونی که اولش 10 داره(برای من اینه 10.3.0.1) رو به جای Your_IPv4_Address قرار دهید. اگر تا آخر ساخت برنامه پیش رفتید و برنامه کار نکرد، 2 تای دیگه رو هم امتحان کنید.

 

چرا باید به جای آدرس دامنه، آدرس آی پی وارد کنم؟ چون داریم با شبیه ساز هاست کار میکنیم و این شبیه ساز روی کامپیوتر ماست، و برای ارتباط با این شبیه ساز هاست، باید برنامه مان را از شبیه ساز موبایل، مثل بلو استکس یا AVD یا YouWave اجرا کنیم. در این صورت، باید به جای آدرس دامنه، از IPv4 Address استفاده کنیم. چنانچه فایل شما روی هاست واقعی میباشد، آدرس خود فایل php رو به طور مستقیم، به جای این آدرس، بنویسید.

 

خب در اینجا ما به برنامه گفتیم که اگر دکمه لمس یا کلیک شود، InsertPerson که همان HttpJob میباشد، تنظیم شود و اطلاعاتی از قبیل mohammad mahdi با شناسه name و 19 با شناسه age به روش get، به فایل php ارسال شوند و سپس، برنامه، نتیجه را دانلود کند.(به جای "mohammad mahdi" و "19" میتوانید مقدار یک EditText یا چیز دیگری را جایگزین کنید و آنرا گسترش دهید)

همچنین در دکمه شماره دو هم مقادیر دیگری را به وسیله نام InsertP2 و در قالب HttpJob، به فایل php فرستادیم و نتیجه را از فایل php دانلود کردیم.

 

حالا این ساب رو هم کپی کنید و داخل کدهاتون بذارید

Sub JobDone (Job As HttpJob)
If Job.Success = True Then
Select Job.JobName
Case "InsertP"
Msgbox(Job.GetString, "محمد مهدی")
Case "InsertP2"
Msgbox(Job.GetString, "علی")
End Select
Else
ToastMessageShow("Error: " & Job.ErrorMessage, True)
End If
Job.Release
End Sub

توضیحات: این ساب که به کتابخانه HttpUtils2 وابسته هست، نتیجه رو پس از کلیک بر روی دکمه ها بررسی میکنه و به ازای نتیجه، دستورات ما رو انجام میده و در برنامه اونهارو اجرا میکنه. همونطور که میبینید، HttpJob در اینجا فراخوانی شده است و از اینجا به بعد همه چیز روی محور HttpJob میچرخد. یعنی HttpJob نتیجه را مدیریت میکند. حالا ما اینجا Job رو جایگزین HttpJob کردیم. در خط دوم یک دستور شرطی مینویسیم که اگر اتصال برقرار شده باشد، یعنی موفقیت آمیز باشد، و نتیجه اش True باشد شامل این دستورات باشد. و بعد از Select و Case استفاده کردیم که اگر InsertP به عنوان JobName اجرا شده بود(یعنی کلیک روی دکمه شماره یک)، در Msgbox، نتیجه کار(یعنی Job.GetString) نمایش داده شود و تایتل مسیج باکس، محمد مهدی شود. و در Case بعدی گفتیم اگر InsertP2 اجرا شود(کلیک روی دکمه شماره دو)، به همان ترتیب، یک مسیج باکس با تایتل علی نمایش داده شود. البته ما میتوانستیم هر 2 دکمه را از InsertP تغذیه کنیم و دیگر لازم به InsertP2 نبود. اما هر دستوری که مینوشتیم، برای هردو، یکسان در نظر گرفته میشد و در تایتل مسیج باکس ها فقط محمد مهدی نوشته میشد. البته به سلیقه خودتان و کاربرد برنامه تان، میتوانید هر روشی که خواستید انجام دهید و هر چند تا که خواستید از نام مشترک استفاده کنید و هر چقدر که میخواهید از Case ها استفاده کنید و حتی اگر نمیخواهید، استفاده نکنید.

در آخر هم Select را میبندیم و سپس از Else استفاده میکنیم. یعنی اگر موفقیت دریافت نتیجه، True نبود، متن ارور(Job.ErrorMessage) را نمایش بده.

و سپس برای پایان کار، از Job.Release استفاده میکنیم.

 

 

خب امیدوارم تا اینجا مفید بوده باشه و اصول اولیه و پایه را فرا گرفته باشید.

برای ارتباط با بانک اطلاعاتی روی هاست(MySQL)، نیاز به دستوراتی دارید که در php نوشته میشوند و کافیست نتیجه همان دستورات را از طریق روشی که امروز یاد گرفتید، به b4a بفرستید تا بتوانید با بانک اطلاعاتی ارتباط برقرار کنید.

انشاءالله سر فرصت در همین تاپیک یا تاپیکی دیگر درباره دستورات MySQL در PHP توضیح خواهم داد. اما اگر عجله دارید میتوانید در اینترنت به جستجو بپردازید و آموزش های مفیدی را در این زمینه بیابید. در این رابطه، در اینترنت، آموزش های فراوانی وجود دارد.

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

فرق این روش  با روش گت المنت کردن توی جاوا اسکریپت چیه؟

شوخی میکنی؟؟

اگه منظورت از گت المنت اینا باشه:

document.getElementById
یا
document.getElementsByClassName
یا
document.getElementsByTagName

انگار داری میگی فرق قورباغه با قناری چیه؟؟ یعنی این یه کار دیگه میکنه و اون یه کار دیگه.

البته شاید من اشتباه متوجه شدم؟

منظورتون دقیقا همین بود؟؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خوب من توی این ضمینه خیلی وارد نیستم میشه یه توضیح مختصر بدید کار این روش چیه و چه موقع استفاده میشه؟

مثلا  برنامه های مسنجر یا ارتباط با درگاه بانک؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خوب من توی این ضمینه خیلی وارد نیستم میشه یه توضیح مختصر بدید کار این روش چیه و چه موقع استفاده میشه؟

منظورتون روش get هست؟

اگه منظورتون همینه، باید بگم که این روش برای دریافت اطلاعات در زبان برنامه نویسی php هست. اگه این آموزش رو کامل مطالعه کرده باشید، نحوه استفاده از این روش رو ذکر کردم.

اما روش getElement مربوط به زبان برنامه نویسی Javascript هست که با اون میشه از طریق شناسه یک آبجکت(شئ) به ویژگی های اون شئ دسترسی پیدا کرد و اونهارو تغییر داد و اونهارو نمایش داد.

 

والسلام

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دقیقا چیرو خبر بده ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

این آموزشی که شما گذاشتید با اونی که توی فروشگاه این سایت یا سایتای دیگه با همین موضوع هست فرق داره؟؟

اگه آره چه فرقی و چه کم و زیادی؟

و اگر نه چرا گذاشتید شما؟اینجوری که دیگه کسی اونا رو نمیخره!!!

 

ممنون از آموزش خوبتون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من آموزش سایت رو ندیدم ولی بیشتر مواقع از این نوع اتصال استفاده میکنم 

ولی باز راه های دیگه ای هم وجود داره

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دقیقا چیرو خبر بده ؟

اینکه کار میکنه یا نه رو خبر بده.

 

 

این آموزشی که شما گذاشتید با اونی که توی فروشگاه این سایت یا سایتای دیگه با همین موضوع هست فرق داره؟؟

اگه آره چه فرقی و چه کم و زیادی؟

و اگر نه چرا گذاشتید شما؟اینجوری که دیگه کسی اونا رو نمیخره!!!

 

ممنون از آموزش خوبتون

 

فکر نمیکنم فرقی داشته باشه.

خب این آموزش رو من خودم از دانسته های خودم گذاشتم و اگه کسی آموزشهای سایت رو بخره، برای من نه سودی داره نه ضرری و فقط در جهت رفاه و کمک به شما عزیزان بود.

امیدوارم مفید بوده باشد

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درود

تشکر از آموزش خوبتون

خب بله این روش با آموزشی که در فروشگاه داده شده فرق داره از بعضی لحاظ.

آموزش توی فروشگاه در 4-5 جلسه به صورت تصویری آموزش داده شده و تمامی مباحث و نکات کلیدی آموزش داده شده اند

و البته از نظر کار کردن با php هم تفاوت هایی رو داره و چند مورد کار با php دیگه هم آموزش داده شده.

از نظر بحث امنیتی این روش که آقای محمدمهدی عزیز آموزش دادن امنیت بالاتری رو داره و کلا استاندارد تر هستش.

روشی که ما آموزش دادیم تمام سعیمون رو کردیم که ساده آموزش بدیم و هر کاربر که با php آشنایی نداره بتونه درک کنه موضوع رو.

 

تشکر از آموزش خوبتون.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقای ایزدی جسارت نباشه شما استاد مایی ولی آقای محمد مهدی آموزشی رو که دادن از روش get هست و از نظر امنیت پایین تر از روش post هست.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من فکر میکنم سایت یاهو که برای شناخته شده هست از متد GET استفاده میکنه اما انکریپت شده پس اونقدر ها هم بدون امنیت نیست

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقای ایزدی جسارت نباشه شما استاد مایی ولی آقای محمد مهدی آموزشی رو که دادن از روش get هست و از نظر امنیت پایین تر از روش post هست.

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقای ایزدی جسارت نباشه شما استاد مایی ولی آقای محمد مهدی آموزشی رو که دادن از روش get هست و از نظر امنیت پایین تر از روش post هست.

 

اختیار دارید.

post و get دو مبحث جداگونه هستند و نحوه ی عملکردشون فرق داره. حرف شما متینه.

توی آموزش فروشگاه ما اومدیم به ساده ترین روش ممکن یک سری اطلاعات رو post کردیم و Download کردیم .

مشکل توی Download بود از نظر امنیت چون هر کسی که لینک فایل show.php مارو بدست میاورد عملا کل اطلاعات دیتابیس

آنلاین لو رفته بود دیگه !!!

فرض کنید یک سری User و PW دارید و برنامه هم از اهمیت بالایی برخورداره .اگه show.php رو پیدا کنن کل یوزر ها هک شدن دیگه :S

من بحث امنیتی رو از اون نظر میگم :bye:

ما آموزش رو میدیم که درکی پیدا کنید از این روش اتصال. برای برنامه های مهم این روش هم امنیتش پایینه.

آقای قاسمی نیا که توی انجمن درجه ی وب نویس رو داره .... یک روشی رو برای امنیت رفته بودن که من توش موندم :S

فرصت نکردم هنوز اون روش رو یاد بگیرم ولی امنیت فوق العاده ای داشت که بدون شک اگه میخواستن باز میتونستن همون امنیت رو چند برابر کنند.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

فرض کنید یک سری User و PW دارید و برنامه هم از اهمیت بالایی برخورداره .اگه show.php رو پیدا کنن کل یوزر ها هک شدن دیگه :S

با عرض احترام باید بگم که اگه ورودی ها کنترل بشن و کاملا از همه لحاظ بررسی بشن، فکر نکنم مشکلی پیش بیاد.

البته شاید اشتباه کرده باشم و ...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اختیار دارید.

post و get دو مبحث جداگونه هستند و نحوه ی عملکردشون فرق داره. حرف شما متینه.

توی آموزش فروشگاه ما اومدیم به ساده ترین روش ممکن یک سری اطلاعات رو post کردیم و Download کردیم .

مشکل توی Download بود از نظر امنیت چون هر کسی که لینک فایل show.php مارو بدست میاورد عملا کل اطلاعات دیتابیس

آنلاین لو رفته بود دیگه !!!

فرض کنید یک سری User و PW دارید و برنامه هم از اهمیت بالایی برخورداره .اگه show.php رو پیدا کنن کل یوزر ها هک شدن دیگه :S

من بحث امنیتی رو از اون نظر میگم :bye:

ما آموزش رو میدیم که درکی پیدا کنید از این روش اتصال. برای برنامه های مهم این روش هم امنیتش پایینه.

آقای قاسمی نیا که توی انجمن درجه ی وب نویس رو داره .... یک روشی رو برای امنیت رفته بودن که من توش موندم :S

فرصت نکردم هنوز اون روش رو یاد بگیرم ولی امنیت فوق العاده ای داشت که بدون شک اگه میخواستن باز میتونستن همون امنیت رو چند برابر کنند.

در تکمیل گفتار مهدی اگه اطلاعات شما با سیزن ایدی و یا imei بررسی بشه و سپس اطلاعات ارسال بشه این مشکل هم برطرف میشه

مثال وب سرویس های گوگل که باید api ثبت کنی تا اطلاعات رو به شما نمایش بدن

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در تکمیل گفتار مهدی اگه اطلاعات شما با سیزن ایدی و یا imei بررسی بشه و سپس اطلاعات ارسال بشه این مشکل هم برطرف میشه

مثال وب سرویس های گوگل که باید api ثبت کنی تا اطلاعات رو به شما نمایش بدن

آخه سیزن یا سشن مگه روی برنامه اندروید هم کار میکنه؟؟ تا اونجایی که من میدونم، این قضیه فقط روی مرورگر اینترنت کار میکنه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

شما این لینک رو ببین هیچ خروجی بهت نمیده و اخطارشو بخون

 

البته آقای قاسمی در سایت فعالیت دارن که امیدوارم به زودی آموزشش رو برای دوستان بزارن

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...