آموزش php به صورت مرحله به مرحله

نظر شما درباره اين آموزش


  • مجموع رای دهندگان
    18

teshneh

Active Member
با سلام، دوستان سری جدید آموزش رو شروع کردم. میتونید از لینک زیر اون رو مشاهده کنید.
[url]http://www.ncis.ir/php5a[/URL]
در این آموزش، مباحث پیشرفته مدنظر قرار گرفته. امیدوارم مورد توجه و کاربرد دوستان محترم قرار بگیره.
منتظر نظرات سازنده شما دوستان گرامی هستم.
موفق باشید.

با عرض سلام و ادب
از آموزش هاتون متشکرم.
میشه لینک را چک کنید؟چیزی باز نکرد!
موفق باشید
 

MMSHFE

Active Member
با سلام، سایت در حال طراحی مجدد هست. امضا رو اصلاح کردم. موفق باشید.
 

ramtin2025

New Member
سلام
از آموزشهای بسیار خوبی که قرار دادین ممنون
از لحاظ بار علمی خیلی عالی هستند ولی فایل pdf ای که ساخته شده دارای فونت ریز، عرض زیاد و کلا فاقد قالب بندی مناسبه و با توجه به اینکه از عکسی هم در این آموزشها استفاده نشده باعث خستگی چشم میشه و خوندن مطلب رو سخت میکنه.
اگه محبت کنید و فایل word هم قرار بدید عالی میشه
نکته مهم اینه که این روند آموزشی که شما دارید، فکر نمیکنم هیچ مورد مشابهی داشته باشه و بهتون تبریک میگم
پیروز باشید
 

MMSHFE

Active Member
رمز تمام فایلها www.ncis.ir هست. درمورد فونت ریز مطالب هم باید بگم که توی جلسات بعد از پروژه عملی (جلسه 10 به بعد) فونت درشت تر شده. ازطرفی چون PDF هست، امکان بزرگنمایی هم وجود داره. حقیقتش فایل Word رو ترجیح میدم نگذارم چون PDF هم ازنظر نمایش یکسان در همه سیستمها و هم ازنظر حجم کمتر، بهتره. پهنای باند سایتم هم هدر نمیره :wink: ضمناً عکس که توی آموزشها زیاده. منظورتون رو هم از عرض زیاد متوجه نشدم. درهرحال فکر میکنم با بزرگنمایی مشکل تا حدود زیادی رفع بشه. به زودی فیلمهای آموزشی هم تولید خواهم کرد. موفق باشید.
 

MMSHFE

Active Member
دوستان محترم اگه نظری درخصوص بهتر شدن روند آموزش دارین خوشحال میشم در میون بگذارین.
 

MMSHFE

Active Member
جلسه سیزدهم هم اضافه شد. اگه خدا بخواد فکر کنم یکی دو جلسه دیگه بحث oop تکمیل بشه و بریم سروقت mvc
اینو گفتم که از الآن کمربندتون رو محکم ببندین
 

restles20

Active Member
دوستان محترم اگه نظری درخصوص بهتر شدن روند آموزش دارین خوشحال میشم در میون بگذارین.
سلام
قبل از هر چیز بابت به راه انداختن ای تاپیک ازتون سپاسگزارم
در رابطه با بهتر شدن مطالب اگر خروجی کدها رو بصورت عکس رنگی بزارین ممنون میشم و در رابطه با موضوعاتی که آموزشش میدن مثال خیلی خیلی کم میزنید لطفا بیشترش کنید
 

MMSHFE

Active Member
در جلسات 7 به بعد، کدها رنگی هستن. مثال هم بیشتر شده. توی 7 جلسه اول چون هنوز دانش کلی درباره php کم هست، طبیعتاً نمیشه مثالهای خوبی مطرح کرد و درنتیجه بیشتر مثالها کوتاه و غیر کاربردی هستن و فقط هدف از اونها، تفهیم مطلب بوده. موفق باشید.
 

restles20

Active Member
سلام
دو تا سوال از جناب آقای شهرکی داشتم
اولیش اینکه قسمت 14 آموزش کی آماده میشه و سوال دوم هم در رابطه با درس 8 هستش
تو درس 8 شما یک فایل به نام config.php ساختید و یکسری اطلاعات پایه ای از جمله نام کاربری و رمز عبور مدیریت رو توش قرار دادین
حال سوال من اینه که به طور کلی و حرفه ای و امنیتی برای طراحی قالب با زبان php بهتره نام کاربری و رمز عبور مدیریت رو در دیتابیس ذخیره کنیم و یا در فایلی مثل config.php ؟؟؟؟
 

MMSHFE

Active Member
با سلام، درخصوص سؤال اول باید بگم که دارم مینویسمش و میخوام یه جورایی تکمیل و جمع بندی مبحث oop باشه تا از جلسه بعدش شروع به کار روی mvc کنیم.
درمورد سؤال دوم هم ازنظر امنیت فرقی نمیکنه کجا باشه (هرچند دیتابیس یک مرحله امنیتی بیشتر داره و یکم امنتره) اما مهم اینه که رمز عبور بصورت خام ذخیره نشه (توی آموزش بخاطر سادگی اینکار انجام نشده ولی در جلسات مربوط به امنیت کد رو اصلاح خواهیم کرد). در کل اگه فقط یک مدیر دارین و رمز هم قرار نیست تغییر کنه، فایل بهتره چون سرعت خیلی بیشتری داره ولی در سایر موارد، دیتابیس ارجحیت داره. موفق باشید.
 

restles20

Active Member
توی مقاله آموزشی تون نام کاربری و رمز عبور رو با استفاده از الگوریتم MD5 کد کردین
می خواستم بدونم امنیت این الگوریتم تا چه حد و اندازه ایه ؟؟؟ آیا مقداری که با این الگوریتم کد میشه قابل برگشت (encode) هست یا خیر ؟؟؟
 

MMSHFE

Active Member
MD5 یک الگوریتم غیر قابل برگشت هست یعنی از کد Hash نمیشه رشته اصلی رو بدست آورد ولی امروزه سایتهای زیادی دیتابیسی از کلمات پرکاربرد همراه با Hash اونها ذخیره کردن که به شما اجازه میده Hash رو جستجو کنید و اگه پیدا شد، رشته متناظر با Hash رو به شما اعلام میکنه و این مسئله اصلاً به معنای رمزگشایی MD5 نیست ولی درهرحال برای امنیت بیشتر، امروزه روشهای پیچیده تری مثل Salt و Pepper و Multiple Hashing و همچنین الگوریتمهای قویتری مثل SHA و... معرفی شدن که استفاده از اونها توصیه میشه. در آموزش هم چون صرفاً قصدمون یک مثال ساده بوده، به همون حد امنیت اکتفا کردیم وگرنه امنیت با یک هش ساده MD5 خیلی قابل اعتماد نیست. موفق باشید.
 

restles20

Active Member
در رابطه با روش های پیچیده تری مثل Salt و Pepper و Multiple Hashing و همچنین الگوریتمهای قویتر مثل SHA میشه توضیحاتی بفرمایید ؟؟؟
 

MMSHFE

Active Member
ببینید، Salt (نمک) یک رشته ثابت هست که به عبارت اصلی اضافه میشه (در مکان مشخص مثل اول، آخر، پنجمین کارکتر و...) و بعد، رشته Hash میشه تا ازطرفی امکان پیدا شدن رمز توی سایتهایی که بهشون اشاره کردم، کمتر بشه و ازطرف دیگه، درصورت پیدا شدن، پسورد اصلی لو نره. البته اگه چند تا از رمزها پیدا بشه، اونوقت میشه به راحتی Salt رو حدس زد که چیه و از رشته تولیدشده حذف کرد و رمز اصلی کاربر رو بدست آورد. بنابراین، روش دیگری به نام Pepper (فلفل) ابداع شد که توی این روش، رشته ای که به عبارت اضافه میشه، تصادفی هست و همراه رمز توی دیتابیس (توی یک فیلد جداگانه توی همون رکورد کاربر) ذخیره میشه تا بعداً موقع بررسی رمز، دوباره توی تولید Hash بر اساس کدی که کاربر وارد کرده بکار گرفته بشه و اگه همون رمز موجود در دیتابیس تولید شد، یعنی کاربر رمز رو درست وارد کرده. احتمال حدس زدن Pepper از Salt کمتره. البته میشه ترکیب این روشها رو هم بکار برد. روش Multiple Hashing هم خیلی ساده میگه که بجای یکبار Hash کردن، چندبار این عمل انجام بشه. این روش دو امتیاز داره: 1- احتمال پیدا شدن Hash نهایی توی سایتهای مذکور کمتر میشه و 2- سرعت تولید رمز کاهش پیدا میکنه و درنتیجه نمیشه با روشهایی مثل Bruteforce (امتحان کردن رمزهای مختلف توسط سیستمهای خودکار - مثل کاری که موقع بازکردن قفل چمدانی که رمزش رو نمیدونین انجام میدین) و... به راحتی رمز رو پیدا کرد. بگذارین یه مثال بزنم:
فرض کنید توی دیتابیس در جدول users علاوه بر فیلدهای استاندارد، یک فیلد دیگه هم برای Pepper اضافه کردیم و Salt رو هم یک رشته ثابت مثلاً www.ncis.ir درنظر گرفتیم. بنابراین، فیلدهای جدول users میشه این:
1- id (کلید اصلی)
2- name (نام)
3- user (نام کاربری)
4- pass (رمز عبور)
5- pepper (فلفل)
حالا به تابع زیر که رمز و Pepper رو تولید میکنه دقت کنید:
PHP:
function MakeHash($value, &$pepper = NULL) {
    if($pepper == NULL) {
        $pepper = md5(microtime());
    }
    $salt = 'www.ncis.ir';
    for($i = 0; $i < 1000; $i++) {
        $value = md5($salt . $value . $pepper);
    }
    return $value;
}
این تابع، ابتدا md5 زمان جاری رو برحسب میلیونیوم ثانیه بعنوان pepper$ تعریف میکنه. بعد هم www.ncis.ir رو توی متغیر salt$ میگذاره. حالا میاد و 1000 بار، هر دفعه salt$ و pepper$ رو دوطرف value$ (مقداری که میخوایم Hash کنیم) قرار میده و میفرسته به md5 تا Hash این رشته رو تولید کنه و خروجی رو توی value$ میگذاره. نهایتاً هم value$ رو برمیگردونه. pepper$ هم که چون با & توی تعریف تابع اومده، بصورت ارجاعی هست یعنی هر تغییری ما توی تابع روی pepper$ دادیم، بیرون از تابع روی آرگومانی که بجای این متغیر فرستادیم اعمال میشه. حالا کافیه خروجی این تابع رو توی فیلد pass دیتابیس و مقدار آرگومانی که موقع فراخوانی تابع بجای pepper$ نوشتیم رو هم توی فیلد pepper توی دیتابیس ذخیره کنیم. اینطوری موقع چک کردن رمز کاربر، اول بر اساس نام کاربری، pepper$ مربوط به اون کاربر رو از دیتابیس پیدا کرده و میخونیم و بعد، اون رو با مقداری که کاربر توی کادر password وارد کرده، همراه با pepper$ که از دیتابیس خوندیم، به همین تابع MakeHash میدیم و اگه همون pass توی دیتابیس تولید شد یعنی رمز درست وارد شده. ازطرفی چون 1000 بار Hash انجام شده، درنتیجه عملیات تولید و مقایسه رمز بجای چند میلیونیوم ثانیه (الگوریتم MD5 خیلی سریعه)، چند هزارم ثانیه طول میکشه و درنتیجه در هر ثانیه میشه یک هزارم تعداد حالت عادی، رمز امتحان کرد که این مسئله خودش باعث خنثی سازی اکثر حملات Bruteforce میشه.
 

ativsv

New Member
لطفا سریع با من تماس بگیرید

09130085100
من می خام مثله اپلیکیشن mehrad-co.com رو بهم بدین.قیمت 200 تومن
 

MMSHFE

Active Member
دوست عزيز، شما همزمان چندتا قانون رو دارين نقض ميكنيد:
1- درج Off Topic
2- درج شماره تماس
3- درخواست پروژه آماده
4- (جزو قوانين نيست) ولي از كي تا حالا كارفرما قيمت رو مشخص ميكنه؟
 

restles20

Active Member
در مثالی که شما زدین مقدار نهایی value همون مقداریست که در فیلد password ذخیره میشه ؟؟؟
 

جدیدترین ارسال ها

بالا