رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سیستما لاگین معتبر تر
#1
سلام و خسته نباشید به دوستان عزیز
من همیشه هنگام لاگین فقط id کاربر رو چک میکردم.
مثل کد زیر
$_SESSION['user_id']=$user['id'];
if(!isset($_SESSION['user_id'])){
	echo 'شما کاربر جعلی هستید';
	die;
}

همینطور که خودتون میدونید هکر ها میان و session ها رو هک میکنن.
حالا روشی که به نظرم بهتره اینه:

$id=md5($user['id']);
$ip =md5($_SERVER['REMOTE_ADDR']);
$ua=md5($_SERVER['HTTP_USER_AGENT']);

$_SESSION['user_id']=$id;
$_SESSION['ip']=$ip;
$_SESSION['ua']=$ua;

if(!isset($_SESSION['user_id'])){
	echo 'شما کاربر جعلی هستید';
	die;
}
if(!isset($_SESSION['ip'])){
	echo 'شما کاربر جعلی هستید';
	die;
}
if(!isset($_SESSION['ua'])){
	echo 'شما کاربر جعلی هستید';
	die;
}


اگه هکر بیاد و user_id رو هک کنه و وارد بشه ولی دیگه نمیتونه ip و نام مرورگر رو که هک کنه و بفهمه.
به نظرتون این روش من درسته؟
از ی نظری هم این کارا باعث میشه که سرور پردازش های زیادی رو انجام بده و سرعتش بیاد پایین.
میشه نظرتون رو در این مورد بگید.
مرسی
پاسخ
تشکر شده توسط:
#2
سلام. بله کار خوبی کردید ولی خوب پیاده سازی نشده! به نظر من بهتره به این کلاس لینک زیر، این مواردی که گفتید رو بهش اضافه کنید و توی خود کلاس سشن این موارد رو لحاظ کنید:
http://forum.ncis.ir/Thread-%D8%B0%D8%AE...B%8C%D8%B3


از لحاظ سرعت هم خیلی مشکلی نداره. به نظر من برنامه نویس خیلی نباید با وسواس به سرعت فکر کنه،(البته وقت داشته باشه و فکر کنه خیلی هم عالیه)
همه میگن خب ممکنه چند ماه دیگه کاربرای سایت زیاد بشن و به سرور فشار بیاد! به نظر من 90% سایت هایی که تازه کارشون رو شروع میکنن شکست میخورن و هیچ وقت هم کاربرانشون زیاد نخواهند بود، اگر هم زیاد بشن و به سرور فشار بیاد تا اون موقع از سایت پول در میارید و میتونید یک سرور قوی تر بخرید یا یک کسی رو استخدام کنید همه کدهاتون رو بهینه کنه!
مساله سرعت به نظر من بیشتر باید اینطوری دیده بشه که برنامه نویس یاد بگیره به جای این کد چه کدهای بهتری موجوده که استفاده کنه، مثلا به جای in_array از isset کردن index آرایه استفاده کنه که چند هزار درصد سرعت بیشتری داره!
نباید اینطوری باشه که برنامه نویس امکاناتی که میخواد رو اضافه نکنه چون سرعت سایت کم میشه!
پاسخ
تشکر شده توسط:
#3
(08-05-1394، 11:53 ب.ظ)php نوشته: مساله سرعت به نظر من بیشتر باید اینطوری دیده بشه که برنامه نویس یاد بگیره به جای این کد چه کدهای بهتری موجوده که استفاده کنه، مثلا به جای in_array از isset کردن index آرایه استفاده کنه که چند هزار درصد سرعت بیشتری داره!

میشه به من یاد بدید چطوری به جای in_array از isset استفاده کنیم؟ Ywhat
پاسخ
تشکر شده توسط:
#4
بله چرا نمیشه، به جای
in_array($needle,$haystack)
بنویسید:

foreach(array_values($haystack) as $v){
$new_haystack[$v] = 1;
}
unset($haystack);

if(isset($new_haystack[$needle])){
//your code goes here
}

پاسخ
تشکر شده توسط:
#5
این راه هم مناسبه:
if(isset(array_flip($array))) {
    // your code goes here
}
پاسخ
تشکر شده توسط: php




کاربران در حال بازدید این موضوع: 1 مهمان