نام کاربری و رمز عبور
#11
(1399/2/21، 03:14 عصر)Master Badfar' نوشته است:
(1399/2/21، 01:28 عصر)'[email protected]' نوشته است:
!سلام و خسته نباشید خدمت اساتید و بازی سازان گرامی!
نماز و روزه هاتون قبول باشه


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

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

...با تشکر...

 
سلام دوست عزیز
ببینید چند حالت داره:
یا شما یک آشنایی جزئی با یک زبان سمت سرور مثل PHP دارین و میتونین به کمک اینترنت و سورس کدهایی که در اون موجوده خودتون سیستم ثبت نام رو پیاده سازی کنین. البته بهتره بدونین چیکار میکنین چون اشتباهاتی که مرتکب بشین تبعات سنگینی داره.
حالت دوم اینه که شما تسلط لازم به PHP و کار با پایگاه داده رو دارین (البته برای یک سیستم ثبت نام ساده چنتا دستور اس کیو اِل بیشتر به کار نمیاد) و خودتون همه چیز رو از صفر تا صد پیاده سازی میکنین.
حالت سوم اینه که شما از یک نفر درخواست میکنین که چنین سیستمی رو برای شما طراحی کنه.
حالت چهارم هم اینه که از یک پلاگینی که برای همین منظور توسعه داده شده و اخیراً هم دیدم سیدرضا توی مارکت منتشرش کرده استفاده کنید.
در هر سه حالت اول تمیز کد نوشتن خیلی مهمه؛
به طور مثال برای یک سیستم ثبت نام میتونین به کمک شیء گرایی و کلاس ها در PHP خیلی واضح و شفاف یک کلاس جامع برای ثبت نام کاربران تعریف کنین و کارتون هم ساده تر بشه یا هم اینکه صرفاً طوری کد بنویسید که چنتا متغیر مقدارشون از طریق متد GET یا POST دریافت بشه و بره توی دیتابیس. این بستگی به شما داره.
در ضمن یک سیستم ثبت نام و ورود کامل گرچه که ظاهراً پروسه ساده ای داره ولی کار زیادی رو میطلبه. مصون کردن دیتابیس از حملات SQL Injection تا حد ممکن و رمزنگاری اطلاعات و استفاده درست از سشن ها و جلوگیری از Session Hijacking و .... تنها ابتدایی ترین مواردی هستن که باید بهشون دقت زیادی داشته باشین.
به نظرم سیستمتون باید شامل ویژگی های زیر باشه:
1- سیستم ریست (بازنشانی) پسورد جهت مواقعی که کاربر پسورد خود را فراموش کرده باشد
2- سیستم اطلاع رسانی ایمیلی یا پیامکی
3- تأیید دو مرحله ای
4- سیستم جلوگیری از تست بیش از حد پسورد جهت جلوگیری از حملات بروت فورس یا وردلیست
5- سیستم کپچا (زیاد مهم نیست البته)
6- قابلیت ایجاد پروفایل و ثبت مشخصات مربوط به آن (عکس پروفایل، بیوگرافی، یوزرنیم و ....)
7- قابلیت حذف حساب کاربری 
8- پنل مدیریت کاربران برای اینکه بتونین کاربرا رو آنالیز کنین، یک اکانت رو حذف کنین و یا ....
.
.
.
.
کلی موارد دیگه هم هست که باید بهشون فکر کنین و اجرا کنین. البته بماند بسیاری از موارد صد درصد نیاز نیست و برعکسش بسیاری از موارد صد درصد نیازه.
اگر قصد ساخت بازی آنلاین رو دارین باید بدونین زحمتتون شاید هزار برابر ساخت بازی آفلاینه. قصد ندارم دلسردتون کنم و جسارتی کنم فقط خواستم بگم که پروژه تون مسلماً با اسمبل کردن چندتا کد از این ور و انور پروژه تمیزی نمیشه.
البته میتونین اصلاً از دیتابیس هم استفاده نکنین و اطلاعات رو توی یک فایل جیسون، XML و یا حتی یک فایل txt ذخیره کنین. البته اینطوری یکم کارتون دشوارتر میشه.
موفق باشین.

 


خب راستش من آشنایی با php ندارم
یعنی باید بدم یه نفر برام بسازه؟
 
همیشه باید از سختی ها گذشت
باید تجربه اندوخت
و از شکست درس گرفت! 54
  پاسخ


 سپاس شده توسط:
#12
من میتونم هم براتون بسازم و یا کد هاش و طرز استفاده شو بگم
  پاسخ


 سپاس شده توسط:
#13
(1399/2/21، 04:03 عصر)M.gh' نوشته است: من میتونم هم براتون بسازم و یا کد هاش و طرز استفاده شو بگم

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

 
همیشه باید از سختی ها گذشت
باید تجربه اندوخت
و از شکست درس گرفت! 54
  پاسخ


 سپاس شده توسط:
#14
ببخشید یادم رفت!
حتما امروز میگم
  پاسخ


 سپاس شده توسط:
#15
خب میرین توی دیتابیس یک تیبل با کد زیر ایجاد میکنید! :
کد:
CREATE TABLE `login` (
     `id` INT NOT NULL AUTO_INCREMENT ,
     `username` VARCHAR( 20 ) NOT NULL ,
     `password` VARCHAR( 20 ) NOT NULL ,
     PRIMARY KEY ( `id` )
     ) ENGINE = InnoDB;
 خب بعدش این دوتا فایل رو روی هاست آپلود می کنین :

فایل 1 با نام = register.php :
کد:
<?php
$db = "database name";//Your database name
$dbu = "database username";//Your database username
$dbp = "database password";//Your database users password
$host = "localhost";//MySQL server - usually localhost
$dblink = mysql_connect($host,$dbu,$dbp);
$seldb = mysql_select_db($db);
If(isset($_GET['username']) && isset($_GET['password'])){
     $username = strip_tags(mysql_real_escape_string($_GET['username']));
     $password = strip_tags(mysql_real_escape_string($_GET['password']));
     $sql = mysql_query("INSERT INTO `$db`.`login` (`id`,`username`,`password`) VALUES ('','$username','$password');");
     If($sql){
          echo 'Your acount was saved. Congrats!';
     }Else{
          
          echo 'There was a problem saving your acount. Please try again later.';
     }
}Else{
     echo 'Your username or password wasnt passed in the request. Make sure you add ?username=USERNAME_HERE&password=m.gh To the tags.';
}
mysql_close($dblink);
?>
توضیحات این فایل :

این فایل حساب ها را در دیتابیس ثبت می کند

شما باید بجای database name در خط 2 نام دیتابیس را جایگزین کنید و
شما باید بجای database username در خط 3 یوزرنیم دیتابیس را وارد کنید و
شما باید بجای database password در خط 4 پسورد یوزر نیم را وارد کنید و
تامام

فایل 2  نام فایل = login.php :
کد php:
<?php
$username
$_GET['username'];
$conn mysqli_connect("localhost""database username""database password","database Name");
if (!
$conn) {
  die("Connection failed: " mysqli_connect_error());
}

$sql "SELECT `password` FROM `login` WHERE `username` = '$username'";
$result mysqli_query($conn$sql);
if (
mysqli_num_rows($result) > 0) {
    $row mysqli_fetch_assoc($result);
    echo $row['username'];
}
?>
این فایل درستی پسورد را بررسی میکند

شما باید بجای database name در خط 2 نام دیتابیس را جایگزین کنید و
شما باید بجای database username در خط 2 یوزرنیم دیتابیس را وارد کنید و
شما باید بجای database password در خط 2 پسورد یوزر نیم را وارد کنید و
تامام

 
خب
حالا میر تو کانس 
دو تا تکست باکس و یک باتن میسازی برا لاگین
دو تا تکست باکس و یک باتن میسازی هم برا ثبت نام
ثبت نام :
یکی از اون تکست باکس هایی که ساختی برا ثبت نام رو اسمشو میزاری = inp_re_username
اون یکی که هم مال ثبت نام بود رو اسمشو میزاری = inp_re_password
یک باتن هم اضافه میکنی اسمشو میزاری = btn_reg
( راستی پلاگین ایجکس رو هم اضافه میکنی)
بقیه شو فردا میگم .....
  پاسخ


 سپاس شده توسط: MohammadHadi ، Mahdi Azimi
#16
خب ادامش 
ورود : 
حالا میریم سراغ اون سه تا دیگه

یکی از اون تکست باکس هایی که ساختی برا ثبت نام رو اسمشو میزاری = inp_lo_username
اون یکی که هم مال ثبت نام بود رو اسمشو میزاری = inp_lo_password
یک باتن هم میزاریم و اسمشو میزاریم = btn_lo
ایونت نویسی :
خب ما مثلا میخوایم بگیم اگه وارد شد بره داخل لیوت Welcome و اگه ثبت نام کرد ، .....
خب حالا برای ثبت نام ایونت زیر رو مینویسیم =
کد:
on button btn_reg clicked -->ajax--> post to url-->URL : "http://myhost.ir/register.php" & "?username=" & inp_reg_username.text & "&password=" &  inp_reg_password.text --> tag = "reg"
به جای myhost.ir/register.php آدرس فایل رو روی هاست مینویسیم
بعد ایونت زیر رو مینویسیم :
کد:
ajax -->on "reg" compelete --> اتفاقی که میخوای بیافته ( set txt یا ... )
توی اکشنش مثلا میتونی بنویسی یک text ست بشه به مثلا ثبت نام موفقیت آمیز بود.....
خب این از ثبت نام

اینم از ورود :

برای ورود ایونت های زیر را مینویسیم :
کد:
on button btn_lo clicked ---> Ajax --> request Url --> tag "login"  url : "http//:myhost.ir/login.php?username=" & inp_lo_username.text 
بعدش ایونت زیر =
کد:
Ajax | on "login" completed -->

Sub event --> system | compare two value  value1=ajax.lastdata  =  value2 =inp_lo_password.text --> اینجا هم اکشنی رو که میخوای مینویسی مثلا میگی بره لیوت ولکام یا مثلا ست تکست شه به شما با موفقیت وارد شدید  

Sub event2 --> system | compare two value  value1=ajax.lastdata  # ( هشتگ یعنی مخالف )  value2 =inp_lo_password.text --> اینجا هم مثلا مینویسی ست تکست شه به رمز عبور یا یوزر نیم اشتباه است

و این بود ثبت نام و لاگین ....


سوالی بود در خدمتم 



 
  پاسخ


 سپاس شده توسط:
#17
(1399/2/27، 09:36 عصر)M.gh نوشته است: خب ادامش 
ورود : 
حالا میریم سراغ اون سه تا دیگه

یکی از اون تکست باکس هایی که ساختی برا ثبت نام رو اسمشو میزاری = inp_lo_username
اون یکی که هم مال ثبت نام بود رو اسمشو میزاری = inp_lo_password
یک باتن هم میزاریم و اسمشو میزاریم = btn_lo
ایونت نویسی :
خب ما مثلا میخوایم بگیم اگه وارد شد بره داخل لیوت Welcome و اگه ثبت نام کرد ، .....
خب حالا برای ثبت نام ایونت زیر رو مینویسیم =
کد:
on button btn_reg clicked -->ajax--> post to url-->URL : "http://myhost.ir/register.php" & "?username=" & inp_reg_username.text & "&password=" &  inp_reg_password.text --> tag = "reg"
به جای myhost.ir/register.php آدرس فایل رو روی هاست مینویسیم
بعد ایونت زیر رو مینویسیم :
کد:
ajax -->on "reg" compelete --> اتفاقی که میخوای بیافته ( set txt یا ... )
توی اکشنش مثلا میتونی بنویسی یک text ست بشه به مثلا ثبت نام موفقیت آمیز بود.....
خب این از ثبت نام

اینم از ورود :

برای ورود ایونت های زیر را مینویسیم :
کد:
on button btn_lo clicked ---> Ajax --> request Url --> tag "login"  url : "http//:myhost.ir/login.php?username=" & inp_lo_username.text 
بعدش ایونت زیر =
کد:
Ajax | on "login" completed -->

Sub event --> system | compare two value  value1=ajax.lastdata  =  value2 =inp_lo_password.text --> اینجا هم اکشنی رو که میخوای مینویسی مثلا میگی بره لیوت ولکام یا مثلا ست تکست شه به شما با موفقیت وارد شدید  

Sub event2 --> system | compare two value  value1=ajax.lastdata  # ( هشتگ یعنی مخالف )  value2 =inp_lo_password.text --> اینجا هم مثلا مینویسی ست تکست شه به رمز عبور یا یوزر نیم اشتباه است

و این بود ثبت نام و لاگین ....


سوالی بود در خدمتم 



 
کدی که به ایشون دادی صد درصد در برابر SQL Injection آسیب پذیره.
لطفاً کد رو اصلاح کن تا لاقل نشه با یک اینجکشن ساده دیتابیس رو نابود کرد چون ایشون قصد استفاده جدی از کدها رو داره.
در ضمن بهتر بود لاقل یه سقفی برای ورود پسوردهای غلط در کدهای لاگین تعبیه میکردی و از سشن ها هم یه استفاده ای میکردی.
غایب
  پاسخ


 سپاس شده توسط: M.gh
#18
بله 
من فقط میخواستم ثبت نام و لاگین رو به ایشون یاد بدم
وگرنه این کرد ها هنوز خیلی جای کار داره و زیاذ امن نیست..
  پاسخ


 سپاس شده توسط: Master Badfar


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
Information پرداخت درون برنامه مایکت کوردوا ya mahdi 0 230 1404/1/17، 05:43 عصر
آخرین ارسال: ya mahdi
  نحوه خروجی اندروید کوردوا ya mahdi 0 180 1404/1/11، 04:06 عصر
آخرین ارسال: ya mahdi
Wink حل شده مقادير لازم در environment variable ᔕinaᗪehghani 24 11,596 1403/10/23، 12:10 صبح
آخرین ارسال: Tggi
  تپسل .....فروشگاه Hamidreza 3 1,932 1403/10/22، 11:57 عصر
آخرین ارسال: Tggi
  خروجی اندروید با Intel xdk ya mahdi 0 130 1403/8/25، 02:08 عصر
آخرین ارسال: ya mahdi

پرش به انجمن: