#crypto
Blowfish:
الگوریتم Blowfish یک الگوریتم رمزنگاری متقارن کلیدی است که توسط بروس اشنایر در سال 1993 طراحی شد. این الگوریتم برای جایگزینی DES و IDEA طراحی شده و معمولاً برای رمزگذاری اطلاعات در محیطهایی که نیاز به رمزنگاری قوی و کارآمد دارند، مورد استفاده قرار میگیرد.
ویژگیهای کلیدی:
طول کلید میتواند بین 32 بیت تا 448 بیت باشد.
از بلوکهای داده 64 بیتی استفاده میکند.
رمزنگاری سریع در پلتفرمهایی با منابع محدود.
مقاومت بالا در برابر حملات رمزنگاری، به جز برخی نقاط ضعف در کلیدهای بسیار طولانی.
فرآیند رمزنگاری:
از یک شبکه فایستل استفاده میکند که شامل 16 دور تکرار میشود. دادهها به دو نیمه تقسیم شده و سپس با استفاده از کلیدهای تولید شده از یک ماتریس S-box و کلید اصلی پردازش میشوند.
1- دادههای ورودی که به صورت بلوکهای 64 بیتی هستند، به دو نیمه تقسیم میشوند، نیمه چپ (L) و نیمه راست (R).
2- در هر دور تابع F به نیمه L اعمال میشود و نتیجه با نیمه R، XOR میشود.
سپس L و R جابهجا میشوند. در دور بعدی، عملیات روی R جدید (که L قبلی است) انجام میشود.
a,b,c,d هر کدام از نیمه چپ (L) برداشته میشوند.
از مقادیر بخشهای a,b,c,d به عنوان اندیسها برای دسترسی به جداول S-box استفاده میشود و مقادیر جدول به صورت زیر ترکیب میشوند:
F(L) = ((S1[a] + S2[b] mod 2^32) XOR S3[c]) + S4[d] mod 2^32
این تابع برای محاسبه نتیجهای استفاده میشود که با R ترکیب خواهد شد.
4- پس از 16 دور، L و R نهایی جابهجا میشوند.
دو نیمه با هم ترکیب شده و خروجی نهایی رمزنگاری شده را تشکیل میدهند.
کاربردها:
1- از آن برای رمزگذاری فایلهای فردی یا کل دیسک استفاده میشود.
2- به عنوان یک انتخاب برای ایجاد ارتباطات محافظتشده در نرمافزارهای مختلف.
3- امنسازی تراکنشها در سیستمهای پرداخت الکترونیکی.
به دلیل سادگی و کارایی بالا در دستگاههایی با قدرت پردازشی کمتر، همچنان محبوب است، اما در برخی کاربردهای جدیدتر توسط الگوریتمهایی مانند AES که امنیت بالاتری دارند جایگزین شده است.
@AmirhDeveloper
.
Blowfish:
الگوریتم Blowfish یک الگوریتم رمزنگاری متقارن کلیدی است که توسط بروس اشنایر در سال 1993 طراحی شد. این الگوریتم برای جایگزینی DES و IDEA طراحی شده و معمولاً برای رمزگذاری اطلاعات در محیطهایی که نیاز به رمزنگاری قوی و کارآمد دارند، مورد استفاده قرار میگیرد.
ویژگیهای کلیدی:
طول کلید میتواند بین 32 بیت تا 448 بیت باشد.
از بلوکهای داده 64 بیتی استفاده میکند.
رمزنگاری سریع در پلتفرمهایی با منابع محدود.
مقاومت بالا در برابر حملات رمزنگاری، به جز برخی نقاط ضعف در کلیدهای بسیار طولانی.
فرآیند رمزنگاری:
از یک شبکه فایستل استفاده میکند که شامل 16 دور تکرار میشود. دادهها به دو نیمه تقسیم شده و سپس با استفاده از کلیدهای تولید شده از یک ماتریس S-box و کلید اصلی پردازش میشوند.
1- دادههای ورودی که به صورت بلوکهای 64 بیتی هستند، به دو نیمه تقسیم میشوند، نیمه چپ (L) و نیمه راست (R).
2- در هر دور تابع F به نیمه L اعمال میشود و نتیجه با نیمه R، XOR میشود.
سپس L و R جابهجا میشوند. در دور بعدی، عملیات روی R جدید (که L قبلی است) انجام میشود.
a,b,c,d هر کدام از نیمه چپ (L) برداشته میشوند.
از مقادیر بخشهای a,b,c,d به عنوان اندیسها برای دسترسی به جداول S-box استفاده میشود و مقادیر جدول به صورت زیر ترکیب میشوند:
F(L) = ((S1[a] + S2[b] mod 2^32) XOR S3[c]) + S4[d] mod 2^32
این تابع برای محاسبه نتیجهای استفاده میشود که با R ترکیب خواهد شد.
4- پس از 16 دور، L و R نهایی جابهجا میشوند.
دو نیمه با هم ترکیب شده و خروجی نهایی رمزنگاری شده را تشکیل میدهند.
کاربردها:
1- از آن برای رمزگذاری فایلهای فردی یا کل دیسک استفاده میشود.
2- به عنوان یک انتخاب برای ایجاد ارتباطات محافظتشده در نرمافزارهای مختلف.
3- امنسازی تراکنشها در سیستمهای پرداخت الکترونیکی.
به دلیل سادگی و کارایی بالا در دستگاههایی با قدرت پردازشی کمتر، همچنان محبوب است، اما در برخی کاربردهای جدیدتر توسط الگوریتمهایی مانند AES که امنیت بالاتری دارند جایگزین شده است.
@AmirhDeveloper
.
🔥1
#crypto
Twofish:
Twofish یک الگوریتم رمزنگاری بلوکی است که در سال 1998 توسط بروس شنایر، جان کلسی، داگ وایتینگ، دیوید واگنر، کریس هال، و نیل فرگوسن طراحی شده است. این الگوریتم به عنوان یکی از نامزدهای مرحله نهایی برای AES (Advanced Encryption Standard) بود ولی در نهایت Rijndael برای این نقش انتخاب شد. Twofish یک رمز سمتریک است، یعنی برای رمزنگاری و رمزگشایی از همان کلید استفاده میکند.
ویژگیها:
1- اندازه بلوک 128 بیت
2- طول کلید 128، 192، یا 256 بیت
3- این الگوریتم از 16 چرخه تکراری استفاده میکند.
4- بر اساس شبکه فایستل، که تقسیم دادهها به دو نیمه را و مبادله آنها در هر چرخه دربرمیگیرد.
مکانیزم الگوریتم:
Twofish از ترکیبی از تبدیلهای مختلف برای افزایش امنیت و کارآمدی استفاده میکند.
Twofish از یک مکانیزم پیچیده برای تولید راندکیها (کلیدهایی که در هر چرخه استفاده میشوند) استفاده میکند. این فرآیند شامل تبدیل کلید ورودی به آرایهای از کلیدهای 32 بیتی است که با استفاده از S-boxها و PHT (Pseudo-Hadamard Transform) اصلاح میشوند.
در هر راند، دادهها از یک سری S-box، تبدیلات خطی و نهایتاً یک جمع با کلید راند میگذرند. این فرآیندها به نوبه خود به افزایش امنیت در برابر حملات مختلف کمک میکنند.
Twofish از S-boxهایی استفاده میکند که به صورت پویا بر اساس کلید رمزنگاری ایجاد میشوند. این روش باعث میشود که تجزیه و تحلیل رمز بدون دانستن کلید اصلی دشوارتر باشد.
فرآیند رمزنگاری:
رمزنگاری در Twofish در 16 راند انجام میپذیرد و هر راند شامل چندین مرحله است:
1- دادههای ورودی 128 بیتی به دو بخش 64 بیتی تقسیم میشوند.
2- در هر راند، یکی از نیمهها به عنوان ورودی به تابع F ارسال میشود که شامل استفاده از S-boxها و PHT است.
خروجی تابع F با نیمه دیگر XOR میشود و سپس نیمهها جابجا میشوند.
F(R) = (S0[R0] XOR S1[R1] XOR S2[R2] XOR S3[R3]) XOR K
R0, R1, R2, R3 هرکدام 8 بیت از ورودی R هستند.
S0, S1, S2, S3 همان S-Box هایی هستند که بر اساس کلید رمزنگاری تعریف شدهاند.
K کلید راند که در این تابع به عنوان یک عنصر اضافه کننده به کار میرود.
3- پس از گذراندن تمام راندها، دو نیمه نهایی با یک کلید دیگر XOR میشوند تا خروجی نهایی رمزنگاری شده تولید شود.
کاربردها:
1- به دلیل سرعت بالا و امنیت قوی در مقایسه با سایر الگوریتمها، Twofish در زمینههایی که امنیت دادههای حساس اهمیت دارد مورد استفاده قرار میگیرد.
2- استفاده از Twofish برای محافظت از اطلاعات حساس مربوط به تراکنشهای مالی و بانکی.
3- بسیاری از نرمافزارهای رمزنگاری که نیاز به رمزنگاری فایلها و دادهها دارند، از Twofish به عنوان یک گزینه برای تامین امنیت اطلاعات استفاده میکنند.
Twofish همچنان به عنوان یک گزینه معتبر و قابل اطمینان در میان الگوریتمهای رمزنگاری مدرن باقی مانده است، به ویژه در کاربردهایی که حفظ تعادل بین امنیت و عملکرد اهمیت دارد.
@AmirhDeveloper
.
Twofish:
Twofish یک الگوریتم رمزنگاری بلوکی است که در سال 1998 توسط بروس شنایر، جان کلسی، داگ وایتینگ، دیوید واگنر، کریس هال، و نیل فرگوسن طراحی شده است. این الگوریتم به عنوان یکی از نامزدهای مرحله نهایی برای AES (Advanced Encryption Standard) بود ولی در نهایت Rijndael برای این نقش انتخاب شد. Twofish یک رمز سمتریک است، یعنی برای رمزنگاری و رمزگشایی از همان کلید استفاده میکند.
ویژگیها:
1- اندازه بلوک 128 بیت
2- طول کلید 128، 192، یا 256 بیت
3- این الگوریتم از 16 چرخه تکراری استفاده میکند.
4- بر اساس شبکه فایستل، که تقسیم دادهها به دو نیمه را و مبادله آنها در هر چرخه دربرمیگیرد.
مکانیزم الگوریتم:
Twofish از ترکیبی از تبدیلهای مختلف برای افزایش امنیت و کارآمدی استفاده میکند.
Twofish از یک مکانیزم پیچیده برای تولید راندکیها (کلیدهایی که در هر چرخه استفاده میشوند) استفاده میکند. این فرآیند شامل تبدیل کلید ورودی به آرایهای از کلیدهای 32 بیتی است که با استفاده از S-boxها و PHT (Pseudo-Hadamard Transform) اصلاح میشوند.
در هر راند، دادهها از یک سری S-box، تبدیلات خطی و نهایتاً یک جمع با کلید راند میگذرند. این فرآیندها به نوبه خود به افزایش امنیت در برابر حملات مختلف کمک میکنند.
Twofish از S-boxهایی استفاده میکند که به صورت پویا بر اساس کلید رمزنگاری ایجاد میشوند. این روش باعث میشود که تجزیه و تحلیل رمز بدون دانستن کلید اصلی دشوارتر باشد.
فرآیند رمزنگاری:
رمزنگاری در Twofish در 16 راند انجام میپذیرد و هر راند شامل چندین مرحله است:
1- دادههای ورودی 128 بیتی به دو بخش 64 بیتی تقسیم میشوند.
2- در هر راند، یکی از نیمهها به عنوان ورودی به تابع F ارسال میشود که شامل استفاده از S-boxها و PHT است.
خروجی تابع F با نیمه دیگر XOR میشود و سپس نیمهها جابجا میشوند.
F(R) = (S0[R0] XOR S1[R1] XOR S2[R2] XOR S3[R3]) XOR K
R0, R1, R2, R3 هرکدام 8 بیت از ورودی R هستند.
S0, S1, S2, S3 همان S-Box هایی هستند که بر اساس کلید رمزنگاری تعریف شدهاند.
K کلید راند که در این تابع به عنوان یک عنصر اضافه کننده به کار میرود.
3- پس از گذراندن تمام راندها، دو نیمه نهایی با یک کلید دیگر XOR میشوند تا خروجی نهایی رمزنگاری شده تولید شود.
کاربردها:
1- به دلیل سرعت بالا و امنیت قوی در مقایسه با سایر الگوریتمها، Twofish در زمینههایی که امنیت دادههای حساس اهمیت دارد مورد استفاده قرار میگیرد.
2- استفاده از Twofish برای محافظت از اطلاعات حساس مربوط به تراکنشهای مالی و بانکی.
3- بسیاری از نرمافزارهای رمزنگاری که نیاز به رمزنگاری فایلها و دادهها دارند، از Twofish به عنوان یک گزینه برای تامین امنیت اطلاعات استفاده میکنند.
Twofish همچنان به عنوان یک گزینه معتبر و قابل اطمینان در میان الگوریتمهای رمزنگاری مدرن باقی مانده است، به ویژه در کاربردهایی که حفظ تعادل بین امنیت و عملکرد اهمیت دارد.
@AmirhDeveloper
.
🔥2
#crypto
ECC:
ECC (Elliptic Curve Cryptography) یک روش رمزنگاری عمومی است که برای ایمنسازی اطلاعات استفاده میشود. این روش بر اساس خواص ریاضی انحناهای بیضوی در میدانهای جبری ایجاد شده است و از آن برای ایجاد کلیدهای رمزنگاری، تبادل اطلاعات امن و امضاء دیجیتال استفاده میشود.
الگوریتم ECC:
1- در این مرحله، یک منحنی بیضوی روی یک میدان مشخص انتخاب میشود. این منحنی به صورت رابطههای ریاضیی تعریف میشود که از یک مجموعه از اعداد صحیح و یک عملیات جمع خاص استفاده میکند.
2- یک نقطه ابتدایی (یا نقطه ژنراتور) روی منحنی بیضوی انتخاب میشود. این نقطه معمولاً به صورت دلخواه انتخاب میشود.
3- از نقطه ابتدایی شروع کرده و آن را تکراراً با خودش جمع میکنیم. به این ترتیب، نقاط دیگری را بدست میآوریم که همگی روی منحنی بیضوی قرار دارند.
4- هر نقطه بر منحنی بیضوی میتواند به عنوان یک کلید خصوصی استفاده شود، در حالی که مضرب آن نقطه به عنوان کلید عمومی مورد استفاده قرار میگیرد.
فرآیند:
فرض کنید میخواهید یک پیام را با استفاده از ECC رمزنگاری کنید. ابتدا یک جفت کلید عمومی و خصوصی تولید میکنید. سپس میتوانید پیام خود را با استفاده از کلید عمومی رمزگذاری کنید و فقط کسی که دارای کلید خصوصی متناظر است میتواند آن را باز کند.
1- تولید کلیدها:
ابتدا یک منحنی بیضوی مناسب انتخاب میشود. این منحنی بیضوی بر روی یک میدان اعداد مختصاتی (مثلاً میدان اعداد حقیقی یا یک میدان مخصوص مودولاری) تعریف میشود.
یک نقطه اولیه (معمولاً G نامیده میشود) بر روی منحنی بیضوی انتخاب میشود.
شخص اول یک عدد تصادفی به عنوان کلید خصوصی خود انتخاب میکند. این عدد معمولاً با نام d نشان داده میشود.
کلید عمومی متناظر با کلید خصوصی توسط شخص اول محاسبه میشود.
برای محاسبهٔ کلید عمومی، شخص اول از کلید خصوصی خود و نقطه اولیه بر روی منحنی استفاده میکند.
این عملیات به صورت ضربی نقطهای انجام میشود: G * d = A
نتیجهٔ این ضرب، یک نقطه جدید بر روی منحنی بیضوی است که به عنوان کلید عمومی نشان داده میشود.
2- رمزنگاری پیام:
شخص اول متنی را میخواهد برای شخص دوم ارسال کند.
هر کاراکتر متن را به یک نقطه بر روی منحنی بیضوی نگاشت میکنیم. این عملیات به عنوان "تبدیل پیام به نقاط بر روی منحنی بیضوی" شناخته میشود.
با استفاده از کلید عمومی، شخص اول محاسبه میکند که هر نقطه بر روی منحنی بیضوی را چه مقداری به دیگر نقاط میرساند. این عملیات به عنوان "ضرب نقطه در کلید عمومی" شناخته میشود.
در نتیجه، متن مبدل به یک سری نقاط دیگر بر روی منحنی بیضوی میشود، که از دیدگاه ریاضی به شکل G * k = R تولید میشود، که R نقطه رمزنگاری شده، G نقطه اصلی (نقطه اولیه) بر روی منحنی بیضوی و k عدد تصادفی است که از کلید عمومی مشتق شده است.
3- رمزگشایی:
شخص دوم پیام رمزنگاری شده را از شخص اول دریافت میکند، که شامل نقاطی بر روی منحنی بیضوی است.
شخص دوم از کلید خصوصی خود (که به عنوان d نشان داده میشود) استفاده میکند تا هر نقطه رمزنگاری شده را به دیگر نقاط منحنی بیضوی منتقل کند. این عملیات به عنوان "ضرب نقطه در کلید خصوصی" شناخته میشود.
به عبارت ریاضی، برای هر نقطه رمزنگاری شده R، شخص دوم R را با کلید خصوصی d ضرب میکند، که به صورت R * d= M تعریف میشود. در اینجا M نقطه اصلی منحنی بیضوی است که متن رمزنگاری شده به آن تبدیل شده است.
نقاط بدست آمده M به ترتیب تبدیل به کاراکترهای متنی میشوند. این عملیات به عنوان "تبدیل نقاط بر روی منحنی بیضوی به متن" شناخته میشود.
در نهایت، شخص دوم متن اصلی را بازیابی میکند که توسط شخص اول رمزنگاری شده بود.
کاربردها:
به عنوان یک روش رمزنگاری برای ارتباطات امن در اینترنت، تلفنهای همراه، و دیگر سیستمهای ارتباطی استفاده میشود.
برای ایجاد امضاءهای دیجیتال برای تأیید هویت در امضاءهای دیجیتال و احراز هویت استفاده میشود.
به عنوان یکی از روشهای رمزنگاری اصلی برای امنیت تراکنشهای پرداخت الکترونیکی مورد استفاده قرار میگیرد.
@AmirhDeveloper
.
ECC:
ECC (Elliptic Curve Cryptography) یک روش رمزنگاری عمومی است که برای ایمنسازی اطلاعات استفاده میشود. این روش بر اساس خواص ریاضی انحناهای بیضوی در میدانهای جبری ایجاد شده است و از آن برای ایجاد کلیدهای رمزنگاری، تبادل اطلاعات امن و امضاء دیجیتال استفاده میشود.
الگوریتم ECC:
1- در این مرحله، یک منحنی بیضوی روی یک میدان مشخص انتخاب میشود. این منحنی به صورت رابطههای ریاضیی تعریف میشود که از یک مجموعه از اعداد صحیح و یک عملیات جمع خاص استفاده میکند.
2- یک نقطه ابتدایی (یا نقطه ژنراتور) روی منحنی بیضوی انتخاب میشود. این نقطه معمولاً به صورت دلخواه انتخاب میشود.
3- از نقطه ابتدایی شروع کرده و آن را تکراراً با خودش جمع میکنیم. به این ترتیب، نقاط دیگری را بدست میآوریم که همگی روی منحنی بیضوی قرار دارند.
4- هر نقطه بر منحنی بیضوی میتواند به عنوان یک کلید خصوصی استفاده شود، در حالی که مضرب آن نقطه به عنوان کلید عمومی مورد استفاده قرار میگیرد.
فرآیند:
فرض کنید میخواهید یک پیام را با استفاده از ECC رمزنگاری کنید. ابتدا یک جفت کلید عمومی و خصوصی تولید میکنید. سپس میتوانید پیام خود را با استفاده از کلید عمومی رمزگذاری کنید و فقط کسی که دارای کلید خصوصی متناظر است میتواند آن را باز کند.
1- تولید کلیدها:
ابتدا یک منحنی بیضوی مناسب انتخاب میشود. این منحنی بیضوی بر روی یک میدان اعداد مختصاتی (مثلاً میدان اعداد حقیقی یا یک میدان مخصوص مودولاری) تعریف میشود.
یک نقطه اولیه (معمولاً G نامیده میشود) بر روی منحنی بیضوی انتخاب میشود.
شخص اول یک عدد تصادفی به عنوان کلید خصوصی خود انتخاب میکند. این عدد معمولاً با نام d نشان داده میشود.
کلید عمومی متناظر با کلید خصوصی توسط شخص اول محاسبه میشود.
برای محاسبهٔ کلید عمومی، شخص اول از کلید خصوصی خود و نقطه اولیه بر روی منحنی استفاده میکند.
این عملیات به صورت ضربی نقطهای انجام میشود: G * d = A
نتیجهٔ این ضرب، یک نقطه جدید بر روی منحنی بیضوی است که به عنوان کلید عمومی نشان داده میشود.
2- رمزنگاری پیام:
شخص اول متنی را میخواهد برای شخص دوم ارسال کند.
هر کاراکتر متن را به یک نقطه بر روی منحنی بیضوی نگاشت میکنیم. این عملیات به عنوان "تبدیل پیام به نقاط بر روی منحنی بیضوی" شناخته میشود.
با استفاده از کلید عمومی، شخص اول محاسبه میکند که هر نقطه بر روی منحنی بیضوی را چه مقداری به دیگر نقاط میرساند. این عملیات به عنوان "ضرب نقطه در کلید عمومی" شناخته میشود.
در نتیجه، متن مبدل به یک سری نقاط دیگر بر روی منحنی بیضوی میشود، که از دیدگاه ریاضی به شکل G * k = R تولید میشود، که R نقطه رمزنگاری شده، G نقطه اصلی (نقطه اولیه) بر روی منحنی بیضوی و k عدد تصادفی است که از کلید عمومی مشتق شده است.
3- رمزگشایی:
شخص دوم پیام رمزنگاری شده را از شخص اول دریافت میکند، که شامل نقاطی بر روی منحنی بیضوی است.
شخص دوم از کلید خصوصی خود (که به عنوان d نشان داده میشود) استفاده میکند تا هر نقطه رمزنگاری شده را به دیگر نقاط منحنی بیضوی منتقل کند. این عملیات به عنوان "ضرب نقطه در کلید خصوصی" شناخته میشود.
به عبارت ریاضی، برای هر نقطه رمزنگاری شده R، شخص دوم R را با کلید خصوصی d ضرب میکند، که به صورت R * d= M تعریف میشود. در اینجا M نقطه اصلی منحنی بیضوی است که متن رمزنگاری شده به آن تبدیل شده است.
نقاط بدست آمده M به ترتیب تبدیل به کاراکترهای متنی میشوند. این عملیات به عنوان "تبدیل نقاط بر روی منحنی بیضوی به متن" شناخته میشود.
در نهایت، شخص دوم متن اصلی را بازیابی میکند که توسط شخص اول رمزنگاری شده بود.
کاربردها:
به عنوان یک روش رمزنگاری برای ارتباطات امن در اینترنت، تلفنهای همراه، و دیگر سیستمهای ارتباطی استفاده میشود.
برای ایجاد امضاءهای دیجیتال برای تأیید هویت در امضاءهای دیجیتال و احراز هویت استفاده میشود.
به عنوان یکی از روشهای رمزنگاری اصلی برای امنیت تراکنشهای پرداخت الکترونیکی مورد استفاده قرار میگیرد.
@AmirhDeveloper
.
🔥2
#crypto
PGP، مخفف "Pretty Good Privacy"، یک برنامه نرمافزاری است که برای رمزنگاری و دیجیتالی سازی ارتباطات و دادهها به منظور حفظ حریم خصوصی و امنیت آنها استفاده میشود. این برنامه توسط فیل زیمرمن در سال 1991 توسعه یافت و به سرعت به یکی از رایجترین روشها برای امن سازی ارتباطات الکترونیکی تبدیل شد. در ادامه به جزئیات بیشتری در مورد PGP میپردازیم:
PGP از ترکیبی از رمزنگاری متقارن و نامتقارن استفاده میکند. در ابتدا، دادهها با استفاده از یک کلید متقارن رمزگذاری میشوند که به سرعت عملیات رمزنگاری را افزایش میدهد. سپس، کلید متقارن با استفاده از کلید عمومی گیرنده رمزگذاری میشود. فقط گیرندهای که دارای کلید خصوصی متناظر است میتواند کلید متقارن را رمزگشایی کند و به دادههای اصلی دسترسی پیدا کند.
PGP همچنین امکان امضای دیجیتالی پیامها را فراهم میآورد. این فرآیند با استفاده از کلید خصوصی فرستنده برای امضا کردن پیام انجام میشود. گیرنده میتواند با استفاده از کلید عمومی فرستنده، امضا را تأیید کند. این امر به تأیید هویت فرستنده و تضمین تمامیت دادهها کمک میکند.
یکی از چالشهای اصلی در استفاده از PGP، مدیریت کلیدها است. کاربران باید کلیدهای عمومی دیگران را به دست آورند و اطمینان حاصل کنند که این کلیدها معتبر هستند. PGP از یک سیستم اعتماد مبتنی بر "حلقه اعتماد" استفاده میکند، جایی که کاربران میتوانند کلیدهای یکدیگر را تأیید و امضا کنند تا به سایر کاربران در شناسایی و اعتماد به کلیدهای عمومی کمک کنند.
PGP اصلی منبع باز است، اما نسخههای تجاری و استانداردهای مبتنی بر PGP نیز وجود دارند. OpenPGP یک استاندارد آزاد است که توسط IETF نگهداری میشود و توسط بسیاری از برنامههای نرمافزاری پیادهسازی شده است. GnuPG یکی از مشهورترین پیادهسازیهای رایگان و باز این استاندارد است.
استفاده از PGP میتواند نیازمند دانش فنی نسبتاً بالایی باشد و مدیریت کلید میتواند پیچیده باشد. همچنین، در برخی از کشورها ممکن است استفاده از رمزنگاری با قوانین محلی در تضاد باشد. این فناوری باید با درک کامل از ملاحظات قانونی و فنی به کار گرفته شود.
PGP ابزار قدرتمندی برای حفظ امنیت و حریم خصوصی در ارتباطات دیجیتالی است، اما استفاده از آن نیازمند دقت و آگاهی از چگونگی کار با کلیدهای رمزنگاری و اصول امنیتی است.
استفادههای PGP شامل ارسال ایمیلهای رمزنگاری شده، امضای دیجیتال، و حفاظت از فایلها و اطلاعات حساس است. این ابزار معمولاً توسط افراد و سازمانهایی که به حفظ حریم خصوصی و امنیت اطلاعات خود علاقه دارند، استفاده میشود.
@AmirhDeveloper
.
PGP، مخفف "Pretty Good Privacy"، یک برنامه نرمافزاری است که برای رمزنگاری و دیجیتالی سازی ارتباطات و دادهها به منظور حفظ حریم خصوصی و امنیت آنها استفاده میشود. این برنامه توسط فیل زیمرمن در سال 1991 توسعه یافت و به سرعت به یکی از رایجترین روشها برای امن سازی ارتباطات الکترونیکی تبدیل شد. در ادامه به جزئیات بیشتری در مورد PGP میپردازیم:
PGP از ترکیبی از رمزنگاری متقارن و نامتقارن استفاده میکند. در ابتدا، دادهها با استفاده از یک کلید متقارن رمزگذاری میشوند که به سرعت عملیات رمزنگاری را افزایش میدهد. سپس، کلید متقارن با استفاده از کلید عمومی گیرنده رمزگذاری میشود. فقط گیرندهای که دارای کلید خصوصی متناظر است میتواند کلید متقارن را رمزگشایی کند و به دادههای اصلی دسترسی پیدا کند.
PGP همچنین امکان امضای دیجیتالی پیامها را فراهم میآورد. این فرآیند با استفاده از کلید خصوصی فرستنده برای امضا کردن پیام انجام میشود. گیرنده میتواند با استفاده از کلید عمومی فرستنده، امضا را تأیید کند. این امر به تأیید هویت فرستنده و تضمین تمامیت دادهها کمک میکند.
یکی از چالشهای اصلی در استفاده از PGP، مدیریت کلیدها است. کاربران باید کلیدهای عمومی دیگران را به دست آورند و اطمینان حاصل کنند که این کلیدها معتبر هستند. PGP از یک سیستم اعتماد مبتنی بر "حلقه اعتماد" استفاده میکند، جایی که کاربران میتوانند کلیدهای یکدیگر را تأیید و امضا کنند تا به سایر کاربران در شناسایی و اعتماد به کلیدهای عمومی کمک کنند.
PGP اصلی منبع باز است، اما نسخههای تجاری و استانداردهای مبتنی بر PGP نیز وجود دارند. OpenPGP یک استاندارد آزاد است که توسط IETF نگهداری میشود و توسط بسیاری از برنامههای نرمافزاری پیادهسازی شده است. GnuPG یکی از مشهورترین پیادهسازیهای رایگان و باز این استاندارد است.
استفاده از PGP میتواند نیازمند دانش فنی نسبتاً بالایی باشد و مدیریت کلید میتواند پیچیده باشد. همچنین، در برخی از کشورها ممکن است استفاده از رمزنگاری با قوانین محلی در تضاد باشد. این فناوری باید با درک کامل از ملاحظات قانونی و فنی به کار گرفته شود.
PGP ابزار قدرتمندی برای حفظ امنیت و حریم خصوصی در ارتباطات دیجیتالی است، اما استفاده از آن نیازمند دقت و آگاهی از چگونگی کار با کلیدهای رمزنگاری و اصول امنیتی است.
استفادههای PGP شامل ارسال ایمیلهای رمزنگاری شده، امضای دیجیتال، و حفاظت از فایلها و اطلاعات حساس است. این ابزار معمولاً توسط افراد و سازمانهایی که به حفظ حریم خصوصی و امنیت اطلاعات خود علاقه دارند، استفاده میشود.
@AmirhDeveloper
.
🔥1
#crypto
RC Algorithms مخفف Rivest Cipher Algorithms است که یک سری الگوریتمهای رمزنگاری ساخته شده توسط رون ریوست (Ron Rivest) میباشند. این الگوریتمها معمولاً برای ایجاد امنیت در ارتباطات دیجیتال و ذخیره دادهها استفاده میشوند. برخی از معروفترین الگوریتمهای این مجموعه عبارتند از RC4، RC5 و RC6.
RC1:
RC1 اولین تلاش رون ریوست برای ایجاد یک الگوریتم رمزنگاری بود، اما جزئیات آن هرگز به طور عمومی منتشر نشد.
RC2:
RC2 یک الگوریتم رمزنگاری بلوکی با طول بلوک 64 بیت است که در سال 1987 طراحی شد. این الگوریتم از کلیدهای متغیری استفاده میکند که میتواند از 40 بیت تا 128 بیت باشند. RC2 برای جایگزینی DES طراحی شد و در مواردی که طول کلید محدودیت دارد مورد استفاده قرار میگیرد.
RC3:
RC3 در یک مسابقه رمزنگاری شرکت داده شد اما شکست خورد و به سرعت توسط RC5 جایگزین شد.
RC4:
RC4، که در سال 1987 توسعه یافت، یک الگوریتم رمزنگاری استریم است و به خاطر سادگی و سرعت بالای آن در اجرا مشهور است. این الگوریتم توسط یک آرایه موقت S استفاده میکند و یک جریان رمزی تولید میکند که به صورت بایت به بایت با دادههای ورودی XOR میشود.
RC5:
RC5 یک الگوریتم رمزنگاری بلوکی با طول بلوک، طول کلید و تعداد دورهای قابل تنظیم است. این الگوریتم از جمع مدولار، XOR و بیتشیفتهای متغیر استفاده میکند.
RC6:
RC6، که یک تکامل از RC5 است، در مسابقه AES شرکت کرد. این الگوریتم از چهار واحد داده در یک بلوک استفاده میکند و عملیات پیچیدهتری مانند جمع مدولار و بیتشیفتها را انجام میدهد.
الگوریتمهای RC به دلیل سادگی و انعطافپذیری در طراحی و پیادهسازی، در طیف وسیعی از برنامههای کاربردی مورد استفاده قرار گرفتند. با این حال، با پیشرفت در حوزه تحلیل رمزنگاری، برخی از الگوریتمهای قدیمیتر مانند RC4 به دلیل نقاط ضعف امنیتی کمتر استفاده میشوند.
توضیح فرآیند (بر پایه RC4):
RC4 با یک کلید مخفی شروع میشود و یک آرایه از بایتها (معمولاً 256 بایت) را برای تولید جریان رمز استفاده میکند. در اینجا چگونگی کارکرد آن با یک مثال ساده توضیح داده شده است:
1- ابتدا یک آرایه S از اعداد 0 تا 255 ایجاد میشود.
2- آرایه S با استفاده از کلید رمزنگاری شده پراکنده میشود. این به اطمینان از اینکه جریان خروجی نامشخص باقی بماند، کمک میکند.
3- با ترکیب اعداد در آرایه S، یک جریان رمز تولید میشود که برای رمزگذاری دادهها استفاده میشود.
در این فرآیند، ما با ایجاد یک آرایه S که حاوی تمام اعداد از 0 تا 255 است شروع میکنیم. سپس، این آرایه را با استفاده از یک کلید مخفی به صورت پیچیدهای مخلوط میکنیم تا اطمینان حاصل شود که الگوی تولید شده ناشناخته و تصادفی است. در نهایت، با استفاده از این آرایه برای تولید جریانی از اعداد که به طور XOR با متن ساده اعمال میشود، رمزنگاری را انجام میدهیم. این روش باعث میشود که دادههای رمزنگاری شده بدون دانستن کلید قابل خواندن نباشند.
کاربردها:
1- استفاده در پروتکلهایی مانند SSL و TLS برای ایجاد ارتباطات امن در اینترنت.
2- محافظت از دادههای حساس در برابر دسترسیهای نامجاز.
3- به دلیل سادگی و کارایی بالا، در دستگاههایی با منابع محدود مفید است.
الگوریتمهای RC به دلیل سادگی و سرعت بالا در اجرا، همچنان در بسیاری از زمینهها مورد استفاده قرار میگیرند، اگرچه برخی نقاط ضعف امنیتی در آنها شناسایی شده و برخی از استفادههای آنها در محیطهای خاص توصیه نمیشود.
@AmirhDevelpoer
.
RC Algorithms مخفف Rivest Cipher Algorithms است که یک سری الگوریتمهای رمزنگاری ساخته شده توسط رون ریوست (Ron Rivest) میباشند. این الگوریتمها معمولاً برای ایجاد امنیت در ارتباطات دیجیتال و ذخیره دادهها استفاده میشوند. برخی از معروفترین الگوریتمهای این مجموعه عبارتند از RC4، RC5 و RC6.
RC1:
RC1 اولین تلاش رون ریوست برای ایجاد یک الگوریتم رمزنگاری بود، اما جزئیات آن هرگز به طور عمومی منتشر نشد.
RC2:
RC2 یک الگوریتم رمزنگاری بلوکی با طول بلوک 64 بیت است که در سال 1987 طراحی شد. این الگوریتم از کلیدهای متغیری استفاده میکند که میتواند از 40 بیت تا 128 بیت باشند. RC2 برای جایگزینی DES طراحی شد و در مواردی که طول کلید محدودیت دارد مورد استفاده قرار میگیرد.
RC3:
RC3 در یک مسابقه رمزنگاری شرکت داده شد اما شکست خورد و به سرعت توسط RC5 جایگزین شد.
RC4:
RC4، که در سال 1987 توسعه یافت، یک الگوریتم رمزنگاری استریم است و به خاطر سادگی و سرعت بالای آن در اجرا مشهور است. این الگوریتم توسط یک آرایه موقت S استفاده میکند و یک جریان رمزی تولید میکند که به صورت بایت به بایت با دادههای ورودی XOR میشود.
RC5:
RC5 یک الگوریتم رمزنگاری بلوکی با طول بلوک، طول کلید و تعداد دورهای قابل تنظیم است. این الگوریتم از جمع مدولار، XOR و بیتشیفتهای متغیر استفاده میکند.
RC6:
RC6، که یک تکامل از RC5 است، در مسابقه AES شرکت کرد. این الگوریتم از چهار واحد داده در یک بلوک استفاده میکند و عملیات پیچیدهتری مانند جمع مدولار و بیتشیفتها را انجام میدهد.
الگوریتمهای RC به دلیل سادگی و انعطافپذیری در طراحی و پیادهسازی، در طیف وسیعی از برنامههای کاربردی مورد استفاده قرار گرفتند. با این حال، با پیشرفت در حوزه تحلیل رمزنگاری، برخی از الگوریتمهای قدیمیتر مانند RC4 به دلیل نقاط ضعف امنیتی کمتر استفاده میشوند.
توضیح فرآیند (بر پایه RC4):
RC4 با یک کلید مخفی شروع میشود و یک آرایه از بایتها (معمولاً 256 بایت) را برای تولید جریان رمز استفاده میکند. در اینجا چگونگی کارکرد آن با یک مثال ساده توضیح داده شده است:
1- ابتدا یک آرایه S از اعداد 0 تا 255 ایجاد میشود.
For i from 0 to 255:
S[i] = i
2- آرایه S با استفاده از کلید رمزنگاری شده پراکنده میشود. این به اطمینان از اینکه جریان خروجی نامشخص باقی بماند، کمک میکند.
j = 0
For i from 0 to 255:
j = (j + S[i] + Key[i % KeyLength]) % 256
Swap S[i] and S[j]
3- با ترکیب اعداد در آرایه S، یک جریان رمز تولید میشود که برای رمزگذاری دادهها استفاده میشود.
i = j = 0
For each byte k of plaintext:
i = (i + 1) % 256
j = (j + S[i]) % 256
Swap S[i] and S[j]
t = (S[i] + S[j]) % 256
Ciphertext byte = k XOR S[t]
در این فرآیند، ما با ایجاد یک آرایه S که حاوی تمام اعداد از 0 تا 255 است شروع میکنیم. سپس، این آرایه را با استفاده از یک کلید مخفی به صورت پیچیدهای مخلوط میکنیم تا اطمینان حاصل شود که الگوی تولید شده ناشناخته و تصادفی است. در نهایت، با استفاده از این آرایه برای تولید جریانی از اعداد که به طور XOR با متن ساده اعمال میشود، رمزنگاری را انجام میدهیم. این روش باعث میشود که دادههای رمزنگاری شده بدون دانستن کلید قابل خواندن نباشند.
کاربردها:
1- استفاده در پروتکلهایی مانند SSL و TLS برای ایجاد ارتباطات امن در اینترنت.
2- محافظت از دادههای حساس در برابر دسترسیهای نامجاز.
3- به دلیل سادگی و کارایی بالا، در دستگاههایی با منابع محدود مفید است.
الگوریتمهای RC به دلیل سادگی و سرعت بالا در اجرا، همچنان در بسیاری از زمینهها مورد استفاده قرار میگیرند، اگرچه برخی نقاط ضعف امنیتی در آنها شناسایی شده و برخی از استفادههای آنها در محیطهای خاص توصیه نمیشود.
@AmirhDevelpoer
.
🔥1
درود
متسافانه قرار بر این شد که دیگه اینجا فعالیتی نداشته باشم
در آینده اگر خواستم پستی بنویسم روی لینکدین قرار میدم
این بحث هم نصف میمونه و اگر قرار شد ادامه ش بدم روی همون لینکدین پست میکنم
کانال هم همینطوری میمونه تا اگر کسی نیاز داشت مطالب قدیمیش رو بخونه
درنهایت مرسی از کسایی که تو این مدت کنارم بودن و حمایت کردن🤗
.
متسافانه قرار بر این شد که دیگه اینجا فعالیتی نداشته باشم
در آینده اگر خواستم پستی بنویسم روی لینکدین قرار میدم
این بحث هم نصف میمونه و اگر قرار شد ادامه ش بدم روی همون لینکدین پست میکنم
کانال هم همینطوری میمونه تا اگر کسی نیاز داشت مطالب قدیمیش رو بخونه
درنهایت مرسی از کسایی که تو این مدت کنارم بودن و حمایت کردن
.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13💔5🗿2👍1
Are available in the fragment.com
🌀 @CSharpGap 20 📱
🌀 @JavaScriptGap 20 📱
🌀 @MachineLearningGap 20 📱
🌀 @WordpressGap 20 📱
Please open Telegram to view this post
VIEW IN TELEGRAM
حدود یک سال از شروع توسعه LaraGram میگذره و امروز ورژن 2 اون منتشر شد.
توی این ورژن LaraGram کاملا از نو بازسازی شده با الهام گیری از فریمورک Laravel
در ابتدا Container اضافه شده که مسئول مدیریت تمام وابستگی های پروژه هست.
از طرفی ServiceProvider ها رابط بین ما و کانتینر هستن برای فراهم کردن وابستگی جدید.
در کنارش Facade های لاراول اضافه شده که متد هارو به سادگی در دسترس قرار میده.
برای ارسال درخواست و دریافت آپدیت از پکیج Laraquest استفاده شده که قابلیت سینتکس هایلایتینگ خیلی حرفه ای داره تا استفاده رو ساده کنه و از طرفی بسیار بهینه و سبک هست.
چند لیسنر جدید اضافه شده مثل onReferral
سیستم کیبورد بیلدر بازسازی شده و بسیار انعطاف پذیر تر از قبل.
در کنار مدل ها و مایگریشن ها سیدر و فکتوری هم اضافه شده.
کامند های کنسول انعطاف پذیر تر شدند، طوری که شما هم میتونید با زدن یک کامند، کامند های جدید بسازید.
فایل .env حذف شده و کانفیگ ها داخل آرایه ها گرفته میشن تا سرعت بالاتری رو داشته باشیم.
پوشه بزرگ Core از فولدر root حذف شده و به یک پکیج جداگانه انتقال داده شده.
دیتابیس جیسونی موقتا حذف شده تا پس از بازنویسی اضافه بشه.
همه تغییرات این ها نیستن و خیلی از قابلیت ها مونده که طی آپدیت ها اضافه میشن مثل کانورسیشن ها.
در نهایت اگر مایل بودید به پروژه استار بدید🤗
LaraGram - Laraquest - Core
Channel
@AmirhDeveloper
.
توی این ورژن LaraGram کاملا از نو بازسازی شده با الهام گیری از فریمورک Laravel
در ابتدا Container اضافه شده که مسئول مدیریت تمام وابستگی های پروژه هست.
از طرفی ServiceProvider ها رابط بین ما و کانتینر هستن برای فراهم کردن وابستگی جدید.
در کنارش Facade های لاراول اضافه شده که متد هارو به سادگی در دسترس قرار میده.
برای ارسال درخواست و دریافت آپدیت از پکیج Laraquest استفاده شده که قابلیت سینتکس هایلایتینگ خیلی حرفه ای داره تا استفاده رو ساده کنه و از طرفی بسیار بهینه و سبک هست.
چند لیسنر جدید اضافه شده مثل onReferral
سیستم کیبورد بیلدر بازسازی شده و بسیار انعطاف پذیر تر از قبل.
در کنار مدل ها و مایگریشن ها سیدر و فکتوری هم اضافه شده.
کامند های کنسول انعطاف پذیر تر شدند، طوری که شما هم میتونید با زدن یک کامند، کامند های جدید بسازید.
فایل .env حذف شده و کانفیگ ها داخل آرایه ها گرفته میشن تا سرعت بالاتری رو داشته باشیم.
پوشه بزرگ Core از فولدر root حذف شده و به یک پکیج جداگانه انتقال داده شده.
دیتابیس جیسونی موقتا حذف شده تا پس از بازنویسی اضافه بشه.
همه تغییرات این ها نیستن و خیلی از قابلیت ها مونده که طی آپدیت ها اضافه میشن مثل کانورسیشن ها.
در نهایت اگر مایل بودید به پروژه استار بدید
LaraGram - Laraquest - Core
Channel
@AmirhDeveloper
.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥3👍2
Forwarded from Start Unity (ali reza)
دوستان عزیز 🌟
من مدت زیادی هست که با عشق و علاقه در کانال Start Unity فعالیت میکنم و آموزشهای متنی و کدهای یونیتی رو با شما به اشتراک میگذارم. از حمایتهای شما بسیار ممنونم.
اما برای اینکه کانال بتونه رشد بیشتری داشته باشه و بتونم مطالب بیشتری براتون آماده کنم، به حمایتهای شما نیاز دارم. خواهشمندم که پستهای کانال رو با دوستان و همکارانتون به اشتراک بذارید تا اعضای کانال افزایش پیدا کنه.
همچنین میخواهم از دوست عزیزم که کانال رو بوست کرد، تشکر ویژه کنم. حمایت تو برای من بسیار ارزشمنده ❤️
به عنوان تشکر از حمایتهای شما، در آینده قصد دارم آموزشهای ویدیویی یونیتی هم بسازم و در کانال قرار بدم.
از همراهی و حمایتهای شما بسیار سپاسگزارم. با هم میتونیم این کانال رو به یکی از بهترین منابع آموزشی یونیتی تبدیل کنیم 🚀
من مدت زیادی هست که با عشق و علاقه در کانال Start Unity فعالیت میکنم و آموزشهای متنی و کدهای یونیتی رو با شما به اشتراک میگذارم. از حمایتهای شما بسیار ممنونم.
اما برای اینکه کانال بتونه رشد بیشتری داشته باشه و بتونم مطالب بیشتری براتون آماده کنم، به حمایتهای شما نیاز دارم. خواهشمندم که پستهای کانال رو با دوستان و همکارانتون به اشتراک بذارید تا اعضای کانال افزایش پیدا کنه.
همچنین میخواهم از دوست عزیزم که کانال رو بوست کرد، تشکر ویژه کنم. حمایت تو برای من بسیار ارزشمنده ❤️
به عنوان تشکر از حمایتهای شما، در آینده قصد دارم آموزشهای ویدیویی یونیتی هم بسازم و در کانال قرار بدم.
از همراهی و حمایتهای شما بسیار سپاسگزارم. با هم میتونیم این کانال رو به یکی از بهترین منابع آموزشی یونیتی تبدیل کنیم 🚀
❤10
درود به همه
قصد نوشتن یک دوره آموزشی جامع و کامل برای فریمورک قدرتمند لاراول رو دارم. این دوره به صورت گام به گام و از مباحث پایه شروع شده و به تدریج به مباحث پیشرفتهتر میپردازه، و هر چیزی از لاراول رو قراره پوشش بده.
مناسب برای همه، حتی کسانی که هیچ آشنایی قبلی با لاراول ندارند. تنها پیشنیاز این دوره، آشنایی با زبان PHP و معماری MVC است.
سرفصلهای این دوره:
فصل 0: مقدمات
1- معرفی لاراول
2- نصب و راهاندازی لاراول
3- ساختار پوشهها و فایلها در لاراول
4- تنظیمات اولیه و محیطهای کاری
فصل 1: Routing
1- معرفی متد های روتینگ
2- میدلورها
فصل 2: Controllers
1- ایجاد و استفاده از کنترلرها
2- متدهای کنترلر
3- کنترلرهای Resource
4- کنترلرهای API
5- Dependency Injection در کنترلرها
فصل 3: Views
1- موتور قالبسازی Blade
2- ساختار و سینتکس Blade
3- شامل کردن ویوها و کامپوننتها
4- مدیریت دادهها در ویوها
فصل 4: مدلها و Eloquent ORM
1- معرفی Eloquent
2- تعریف مدلها
3- ارتباطات بین مدلها (Relations)
4- کوئری بیلدر (Query Builder)
5- Accessors و Mutators
6- Scopes
فصل 5: Migrations and Database
1- تعریف و اجرای Migrationها
2- Seeders و Factories
3- کار با دیتابیسها و ارتباطات
فصل 6: فرمها و اعتبارسنجی
1- ساخت و پردازش فرمها
2- اعتبارسنجی درخواستها
3- پیامهای خطا و مدیریت آنها
فصل 7: Services و Dependency Injection
1- Service Container
2- سرویسها و Providers
3- Facades
فصل 8: امنیت (Security)
1- احراز هویت (Authentication)
2- مجوزها (Authorization)
3- رمزنگاری (Encryption)
4- جلوگیری از CSRF و XSS
فصل 9: تست و Debugging
1- معرفی ابزارهای تست لاراول
2- Unit Testing
3- Integration Testing
4- Debugging و خطایابی
فصل 10: Optimization and Performance
1- کشینگ (Caching)
2- Queues و Background Jobs
3- بهینهسازی کوئریها
4- استفاده از Octane
فصل 11: توسعه پیشرفته
1- Package Development
2- توسعه RESTful API
3- استفاده از رویدادها (Events) و Listenerها
4- مدیریت فایلها و Storage
فصل 12: بررسی هسته لاراول
1- ساختار هسته لاراول
2- بررسی و توضیح کلاسهای کلیدی
3- بررسی چرخه درخواست (Request Lifecycle)
لطفا هرگونه کمبود یا ایراد در سرفصل هارو اعلام کنید تا شروع کنیم.
#laravel
@AmirhDeveloper
.
قصد نوشتن یک دوره آموزشی جامع و کامل برای فریمورک قدرتمند لاراول رو دارم. این دوره به صورت گام به گام و از مباحث پایه شروع شده و به تدریج به مباحث پیشرفتهتر میپردازه، و هر چیزی از لاراول رو قراره پوشش بده.
مناسب برای همه، حتی کسانی که هیچ آشنایی قبلی با لاراول ندارند. تنها پیشنیاز این دوره، آشنایی با زبان PHP و معماری MVC است.
سرفصلهای این دوره:
فصل 0: مقدمات
1- معرفی لاراول
2- نصب و راهاندازی لاراول
3- ساختار پوشهها و فایلها در لاراول
4- تنظیمات اولیه و محیطهای کاری
فصل 1: Routing
1- معرفی متد های روتینگ
2- میدلورها
فصل 2: Controllers
1- ایجاد و استفاده از کنترلرها
2- متدهای کنترلر
3- کنترلرهای Resource
4- کنترلرهای API
5- Dependency Injection در کنترلرها
فصل 3: Views
1- موتور قالبسازی Blade
2- ساختار و سینتکس Blade
3- شامل کردن ویوها و کامپوننتها
4- مدیریت دادهها در ویوها
فصل 4: مدلها و Eloquent ORM
1- معرفی Eloquent
2- تعریف مدلها
3- ارتباطات بین مدلها (Relations)
4- کوئری بیلدر (Query Builder)
5- Accessors و Mutators
6- Scopes
فصل 5: Migrations and Database
1- تعریف و اجرای Migrationها
2- Seeders و Factories
3- کار با دیتابیسها و ارتباطات
فصل 6: فرمها و اعتبارسنجی
1- ساخت و پردازش فرمها
2- اعتبارسنجی درخواستها
3- پیامهای خطا و مدیریت آنها
فصل 7: Services و Dependency Injection
1- Service Container
2- سرویسها و Providers
3- Facades
فصل 8: امنیت (Security)
1- احراز هویت (Authentication)
2- مجوزها (Authorization)
3- رمزنگاری (Encryption)
4- جلوگیری از CSRF و XSS
فصل 9: تست و Debugging
1- معرفی ابزارهای تست لاراول
2- Unit Testing
3- Integration Testing
4- Debugging و خطایابی
فصل 10: Optimization and Performance
1- کشینگ (Caching)
2- Queues و Background Jobs
3- بهینهسازی کوئریها
4- استفاده از Octane
فصل 11: توسعه پیشرفته
1- Package Development
2- توسعه RESTful API
3- استفاده از رویدادها (Events) و Listenerها
4- مدیریت فایلها و Storage
فصل 12: بررسی هسته لاراول
1- ساختار هسته لاراول
2- بررسی و توضیح کلاسهای کلیدی
3- بررسی چرخه درخواست (Request Lifecycle)
لطفا هرگونه کمبود یا ایراد در سرفصل هارو اعلام کنید تا شروع کنیم.
#laravel
@AmirhDeveloper
.
🔥17 4👍1
لاراول یک فریمورک PHP متنباز و قدرتمند است که برای توسعه برنامههای وب طراحی شده است.
لاراول از ساختار MVC پیروی میکند که به توسعهدهندگان امکان میدهد کدهای خود را به صورت منظم و خوانا سازماندهی کنند.
این فریمورک همچنین با اصول SOLID و برنامهنویسی شیگرا (OOP) هماهنگ است، که به افزایش قابلیت نگهداری و توسعهپذیری کد کمک میکند.
این فریمورک ابزارها و قابلیتهای بسیاری را برای تسهیل فرآیند توسعه ارائه میدهد، از جمله:
Routing : سیستم مسیریابی قدرتمند برای مدیریت درخواستهای وب.
Eloquent ORM : سیستم ORM پیشرفته برای تعامل با پایگاه داده به صورت شیءگرا.
Artisan Console : رابط خط فرمان برای اجرای دستورات و وظایف مختلف.
Middleware : مکانیزمی برای فیلتر کردن درخواستها و پاسخها.
Queues : پشتیبانی از صفها برای مدیریت کارهای پسزمینه.
لاراول به دلیل سهولت استفاده، مستندات جامع، و جامعه کاربری بزرگ، به یکی از محبوبترین فریمورکهای PHP تبدیل شده است.
برای نصب و راهاندازی لاراول، ابتدا باید اطمینان حاصل کنید که سرور شما از نیازمندیهای لاراول پشتیبانی میکند. نیازمندیهای اصلی لاراول عبارتند از:
- PHP >= 8.2
-
BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML PHP Extensionsبرای نصب لاراول، میتوانید از Composer استفاده کنید. Composer یک ابزار مدیریت وابستگیها در PHP است. برای نصب Composer به سایت getcomposer.org مراجعه کرده و دستورالعملهای نصب را دنبال کنید.
پس از نصب Composer، میتوانید لاراول را با استفاده از دو روش زیر نصب کنید:
composer create-project laravel/laravel myproject
یا
composer global require laravel/installer
laravel new myproject
با اجرای این دستور، یک پروژه جدید لاراول در پوشهای به نام
myproject ایجاد میشود.پس از اتمام نصب، میتوانید وارد پوشه پروژه شده و سرور توسعه لاراول را با دستور زیر اجرا کنید:
cd myproject
php artisan serve
سرور توسعه لاراول به صورت پیشفرض روی پورت 8000 اجرا میشود و میتوانید با مراجعه به آدرس
http://localhost:8000 برنامه خود را مشاهده کنید.#laravel
@AmirhDeveloper
.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7 5👍4
پروژه لاراول دارای ساختار پوشهای منظم و مشخصی است. در ادامه، به توضیح مختصر هر یک از پوشهها و فایلهای مهم میپردازیم:
شامل کدهای اصلی برنامه است. این پوشه شامل زیرپوشههای مدلها (Models)، کنترلرها (Controllers)، میانافزارها (Middleware) و غیره میباشد.
شامل فایلهای بوتاسترپینگ برنامه (مانند بوت کردن ServiceProviderها و MiddleWareها) و تنظیمات اولیه است.
شامل فایلهای تنظیمات برنامه است.
شامل فایلهای مرتبط با پایگاه داده مانند مایگریشن ها (Migrations)، Factory ها و Seeder ها می باشد.
شامل فایلهای عمومی قابل دسترسی از طریق وب است. فایلهای CSS، JavaScript، تصاویر و فایل اصلی index.php در این پوشه قرار دارند.
شامل منابع برنامه مانند ویوها (views)، فایلهای زبان و فایلهای استاتیک است.
شامل فایلهای مربوط به مسیریابی برنامه است.
شامل فایلهای ذخیرهسازی مانند لاگها، کشها و فایلهای آپلود شده است.
شامل تستهای واحد و یکپارچهسازی برنامه است.
شامل کتابخانهها و پکیجهای نصب شده توسط Composer است.
لاراول امکان تنظیمات مختلف برای محیطهای کاری مختلف (مثل توسعه، تست، و تولید) را فراهم میکند. فایل تنظیمات اصلی .env نام دارد و در ریشه پروژه قرار دارد.
در این فایل، میتوانید تنظیمات مربوط به پایگاه داده، سرور ایمیل، کش و سایر تنظیمات محیطی را تعیین کنید.
با تغییر مقدار APP_ENV میتوانید محیط کاری را تغییر دهید. مقادیر معمول برای این متغیر عبارتند از:
local (توسعه)،
production (تولید)،
staging (آزمایش)،
همچنین، میتوانید تنظیمات خاصی را برای هر محیط در فایلهای تنظیمات موجود در پوشه config/ مشخص کنید.
با استفاده از فایلهای تنظیمات و ساختار پوشهای منظم، لاراول به توسعهدهندگان امکان میدهد برنامههای وب پیچیده و قدرتمندی را به سرعت و با کیفیت بالا توسعه دهند.
#laravel
@AmirhDeveloper
.
Please open Telegram to view this post
VIEW IN TELEGRAM
فصل یک - Routing
بخش اول - روتینگ چیست؟
مسیریابی (Routing) یکی از مهمترین و پایهایترین قابلیتها به شمار میآید که امکان مدیریت درخواستهای ورودی به برنامه را فراهم میکند. مسیریابی در واقع تعیین میکند که درخواستهای کاربران به کدام قسمت از برنامه ارسال شوند و چه عملیاتی روی آنها انجام شود. به عبارت دیگر، مسیریابی مسئولیت اتصال URLهای مختلف به کنترلرها و اکشنهای مشخصی را بر عهده دارد.
هر مسیر میتواند به یک کنترلر یا یک کلوژر اشاره کند. همچنین، امکان تعریف مسیرهای پویا با استفاده از پارامترهای مسیریابی نیز وجود دارد که این قابلیت، انعطافپذیری بیشتری به برنامه میبخشد.
چندین فایل اصلی برای مدیریت مسیرها وجود دارد که هر کدام کاربرد خاص خود را دارند. این فایلها در دایرکتوری routes قرار دارند و به شما این امکان را میدهند که مسیرهای مختلف برنامه خود را سازماندهی و مدیریت کنید. در ادامه توضیح مختصری از هر فایل ارائه میشود:
1- web.php
این فایل برای تعریف مسیرهای وب استفاده میشود. مسیرهای تعریف شده در این فایل معمولاً به کنترلرهایی متصل میشوند که صفحات وب را رندر میکنند.
2- api.php
این فایل برای تعریف مسیرهای API استفاده میشود. این مسیرها معمولاً برای ارائه داده به برنامههای فرانتاند یا سایر سرویسها استفاده میشوند.
3- console.php
این فایل برای تعریف فرمانهای کنسول (artisan commands) استفاده میشود. شما میتوانید فرمانهای کنسول خود را در این فایل تعریف کنید که از طریق خط فرمان قابل اجرا هستند. این فرمانها به شما اجازه میدهند تا کارهای مختلفی مانند پاکسازی دیتابیس یا ایجاد کاربران نمونه را انجام دهید.
4- channels.php
این فایل برای تعریف کانالهای بروزرسانی لحظهای (broadcasting channels) استفاده میشود. این کانالها برای ارسال پیامها و دادهها به صورت لحظهای به مرورگرهای وب یا سایر سرویسها استفاده میشوند. شما میتوانید دسترسی به کانالها را در این فایل کنترل کنید.
در این فصل تنها با route های web و api آشنا می شویم.
متد های Route از کلاس خاصی(Facade-فَساد) با نام Route در دسترس هستند.
در فساد Route متد های متعددی وجود دارد که به تمامی آنها خواهیم پرداخت. اما برخی در این فصل توضیح داده می شود و برخی دیگر در فصل های آینده.
#laravel #فصل_1
@AmirhDeveloper
.
بخش اول - روتینگ چیست؟
مسیریابی (Routing) یکی از مهمترین و پایهایترین قابلیتها به شمار میآید که امکان مدیریت درخواستهای ورودی به برنامه را فراهم میکند. مسیریابی در واقع تعیین میکند که درخواستهای کاربران به کدام قسمت از برنامه ارسال شوند و چه عملیاتی روی آنها انجام شود. به عبارت دیگر، مسیریابی مسئولیت اتصال URLهای مختلف به کنترلرها و اکشنهای مشخصی را بر عهده دارد.
هر مسیر میتواند به یک کنترلر یا یک کلوژر اشاره کند. همچنین، امکان تعریف مسیرهای پویا با استفاده از پارامترهای مسیریابی نیز وجود دارد که این قابلیت، انعطافپذیری بیشتری به برنامه میبخشد.
چندین فایل اصلی برای مدیریت مسیرها وجود دارد که هر کدام کاربرد خاص خود را دارند. این فایلها در دایرکتوری routes قرار دارند و به شما این امکان را میدهند که مسیرهای مختلف برنامه خود را سازماندهی و مدیریت کنید. در ادامه توضیح مختصری از هر فایل ارائه میشود:
1- web.php
این فایل برای تعریف مسیرهای وب استفاده میشود. مسیرهای تعریف شده در این فایل معمولاً به کنترلرهایی متصل میشوند که صفحات وب را رندر میکنند.
Route::get('/', function () {
return view('welcome');
});2- api.php
این فایل برای تعریف مسیرهای API استفاده میشود. این مسیرها معمولاً برای ارائه داده به برنامههای فرانتاند یا سایر سرویسها استفاده میشوند.
Route::get('/', function () {
return response()->json(["hello"]);
});3- console.php
این فایل برای تعریف فرمانهای کنسول (artisan commands) استفاده میشود. شما میتوانید فرمانهای کنسول خود را در این فایل تعریف کنید که از طریق خط فرمان قابل اجرا هستند. این فرمانها به شما اجازه میدهند تا کارهای مختلفی مانند پاکسازی دیتابیس یا ایجاد کاربران نمونه را انجام دهید.
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->describe('Display an inspiring quote');4- channels.php
این فایل برای تعریف کانالهای بروزرسانی لحظهای (broadcasting channels) استفاده میشود. این کانالها برای ارسال پیامها و دادهها به صورت لحظهای به مرورگرهای وب یا سایر سرویسها استفاده میشوند. شما میتوانید دسترسی به کانالها را در این فایل کنترل کنید.
Broadcast::channel('order.{orderId}', function ($user, $orderId) {
return $user->id === Order::find($orderId)->user_id;
});در این فصل تنها با route های web و api آشنا می شویم.
متد های Route از کلاس خاصی(Facade-فَساد) با نام Route در دسترس هستند.
use Illuminate\Support\Facades\Route;
در فساد Route متد های متعددی وجود دارد که به تمامی آنها خواهیم پرداخت. اما برخی در این فصل توضیح داده می شود و برخی دیگر در فصل های آینده.
#laravel #فصل_1
@AmirhDeveloper
.
فصل یک - Routing
بخش دوم - معرفی متد های روتینگ - قسمت اول
در این قسمت به 8 تا از پر کاربرد ترین و اصلی ترین متد های موجود در فساد Route می پردازیم:
1- متد get برای تعریف مسیری استفاده میشود که به درخواستهای HTTP GET پاسخ میدهد. این نوع درخواست معمولاً برای دریافت اطلاعات استفاده میشود.
کد بالا به معنی این است که اگر درخواستی را با متد GET به آدرس domain.example/users بدهیم، تابع ناشناس داده شده به متد(اکشن) اجرا خواهد شد.
حال فرض کنید میخواهیم مسیری ایجاد کنیم که اطلاعات یک کاربر خاص را بر اساس شناسه (ID) او نمایش دهد. در این صورت، میتوانیم از پارامترهای داینامیک استفاده کنیم:
در اینجا، {id} یک پارامتر داینامیک است که میتواند هر مقداری باشد. این مقدار از URL استخراج شده و به تابع بسته میشود.
توجه داشته باشید که پارامتر id یک پارامتر اجباری است و درصورتی که در url وارد نشود route ما اجرا نخواهد شد.
برای پارامتر های اختیاری می توان به صورت زیر عمل کرد:
پارامتر {id?} یک پارامتر اختیاری است و حتی اگر آن را وارد نکنیم route ما اجرا خواهد شد، اما توجه داشته باشید که مقدار پیشفرض آن را در اکشن تعریف نمایید.
پارامتر های داینامیک برای تمامی متد ها در دسترس هستند.
2- متد post برای تعریف مسیری استفاده میشود که به درخواستهای HTTP POST پاسخ میدهد. این نوع درخواست معمولاً برای ارسال داده به سرور و ایجاد منابع جدید استفاده میشود.
3- متد put برای تعریف مسیری استفاده میشود که به درخواستهای HTTP PUT پاسخ میدهد. این نوع درخواست معمولاً برای بهروزرسانی کامل یک منبع موجود استفاده میشود.
4- متد patch برای تعریف مسیری استفاده میشود که به درخواستهای HTTP PATCH پاسخ میدهد. این نوع درخواست معمولاً برای بهروزرسانی جزئی یک منبع موجود استفاده میشود.
5- متد delete برای تعریف مسیری استفاده میشود که به درخواستهای HTTP DELETE پاسخ میدهد. این نوع درخواست معمولاً برای حذف یک منبع موجود استفاده میشود.
6- متد options برای تعریف مسیری استفاده میشود که به درخواستهای HTTP OPTIONS پاسخ میدهد. این نوع درخواست برای بازگشت اطلاعاتی در مورد ارتباطات مجاز برای یک منبع خاص استفاده میشود.
7- متد any برای تعریف مسیری استفاده میشود که به تمامی انواع درخواستهای HTTP پاسخ میدهد. این نوع مسیر معمولاً برای مسیرهایی استفاده میشود که باید به تمامی درخواستها پاسخ دهند.
8- متد match به شما اجازه میدهد تا یک مسیر را برای چندین نوع درخواست HTTP تعریف کنید. این متد زمانی مفید است که میخواهید یک مسیر خاص به چندین متد HTTP مانند GET و POST پاسخ دهد.
این متد برخلاف سایر متد های توضیح داده شده یک پارامتر اضافه تر حاوی آرایه ای از متدهای مجاز را در ابتدا دریافت می کند و پس از آن مانند سایر متد ها عمل میکند.
متد های بالا در فایل های web.php و api.php قابل استفاده هستند.
#laravel #فصل_۱
@AmirhDeveloper
.
بخش دوم - معرفی متد های روتینگ - قسمت اول
در این قسمت به 8 تا از پر کاربرد ترین و اصلی ترین متد های موجود در فساد Route می پردازیم:
1- متد get برای تعریف مسیری استفاده میشود که به درخواستهای HTTP GET پاسخ میدهد. این نوع درخواست معمولاً برای دریافت اطلاعات استفاده میشود.
Route::get('/users', function () {
return 'List of users';
});کد بالا به معنی این است که اگر درخواستی را با متد GET به آدرس domain.example/users بدهیم، تابع ناشناس داده شده به متد(اکشن) اجرا خواهد شد.
حال فرض کنید میخواهیم مسیری ایجاد کنیم که اطلاعات یک کاربر خاص را بر اساس شناسه (ID) او نمایش دهد. در این صورت، میتوانیم از پارامترهای داینامیک استفاده کنیم:
Route::get('/user/{id}', function ($id) {
return "User ID is $id";
});در اینجا، {id} یک پارامتر داینامیک است که میتواند هر مقداری باشد. این مقدار از URL استخراج شده و به تابع بسته میشود.
توجه داشته باشید که پارامتر id یک پارامتر اجباری است و درصورتی که در url وارد نشود route ما اجرا نخواهد شد.
برای پارامتر های اختیاری می توان به صورت زیر عمل کرد:
Route::get('/user/{id?}', function ($id = 0) {
if ($id == 0){
return "Hello!";
}
return "User ID is $id";
});پارامتر {id?} یک پارامتر اختیاری است و حتی اگر آن را وارد نکنیم route ما اجرا خواهد شد، اما توجه داشته باشید که مقدار پیشفرض آن را در اکشن تعریف نمایید.
پارامتر های داینامیک برای تمامی متد ها در دسترس هستند.
2- متد post برای تعریف مسیری استفاده میشود که به درخواستهای HTTP POST پاسخ میدهد. این نوع درخواست معمولاً برای ارسال داده به سرور و ایجاد منابع جدید استفاده میشود.
Route::post('/users', function () {
return 'User created';
});3- متد put برای تعریف مسیری استفاده میشود که به درخواستهای HTTP PUT پاسخ میدهد. این نوع درخواست معمولاً برای بهروزرسانی کامل یک منبع موجود استفاده میشود.
Route::put('/users/{id}', function ($id) {
return 'User ' . $id . ' updated';
});4- متد patch برای تعریف مسیری استفاده میشود که به درخواستهای HTTP PATCH پاسخ میدهد. این نوع درخواست معمولاً برای بهروزرسانی جزئی یک منبع موجود استفاده میشود.
Route::patch('/users/{id}', function ($id) {
return 'User ' . $id . ' partially updated';
});5- متد delete برای تعریف مسیری استفاده میشود که به درخواستهای HTTP DELETE پاسخ میدهد. این نوع درخواست معمولاً برای حذف یک منبع موجود استفاده میشود.
Route::delete('/users/{id}', function ($id) {
return 'User ' . $id . ' deleted';
});6- متد options برای تعریف مسیری استفاده میشود که به درخواستهای HTTP OPTIONS پاسخ میدهد. این نوع درخواست برای بازگشت اطلاعاتی در مورد ارتباطات مجاز برای یک منبع خاص استفاده میشود.
Route::options('/users', function () {
return ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];
});7- متد any برای تعریف مسیری استفاده میشود که به تمامی انواع درخواستهای HTTP پاسخ میدهد. این نوع مسیر معمولاً برای مسیرهایی استفاده میشود که باید به تمامی درخواستها پاسخ دهند.
Route::any('/contact', function () {
return 'Contact form';
});8- متد match به شما اجازه میدهد تا یک مسیر را برای چندین نوع درخواست HTTP تعریف کنید. این متد زمانی مفید است که میخواهید یک مسیر خاص به چندین متد HTTP مانند GET و POST پاسخ دهد.
Route::match(['get', 'post'], '/contact', function () {
//
});این متد برخلاف سایر متد های توضیح داده شده یک پارامتر اضافه تر حاوی آرایه ای از متدهای مجاز را در ابتدا دریافت می کند و پس از آن مانند سایر متد ها عمل میکند.
متد های بالا در فایل های web.php و api.php قابل استفاده هستند.
#laravel #فصل_۱
@AmirhDeveloper
.
فصل یک - Routing
بخش دوم - معرفی متد های روتینگ - قسمت دوم
در ادامه معرفی متد های Routing به 9 متد دیگر از فساد Route می پردازیم. این متد ها برای اعتبارسنجی پارامتر های داینامیک دریافتی از URL، کاربرد دارند.
در ادامه هر یک از این متد ها را با مثال معرفی میکنیم:
1- متد where به شما امکان میدهد تا یک محدودیت سفارشی برای پارامترهای مسیر تعیین کنید. این محدودیتها بر اساس یک الگوی منظم (regex) تعریف میشوند. به عنوان مثال، میتوانید تعیین کنید که پارامتر id باید عددی باشد.
در این مثال، پارامتر id باید فقط شامل اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
2- متد whereAlpha تضمین میکند که پارامترهای مشخص شده فقط حروف الفبایی باشند. یعنی پارامتر مورد نظر باید فقط شامل حروف باشد و هیچ عدد یا کاراکتر دیگری نباید در آن باشد.
در این مثال، پارامتر name باید فقط شامل حروف باشد، در غیر این صورت مسیر مطابقت نمیکند.
3- متد whereAlphaNumeric پارامترها را محدود به حروف و اعداد میکند. یعنی پارامتر مورد نظر میتواند شامل حروف و اعداد باشد ولی هیچ کاراکتر خاصی نباید در آن باشد.
در این مثال، پارامتر code باید فقط شامل حروف و اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
4- متد whereNumber پارامترها را فقط به اعداد محدود میکند. یعنی پارامتر مورد نظر باید فقط شامل اعداد باشد و هیچ حرف یا کاراکتر دیگری نباید در آن باشد.
در این مثال، پارامتر id باید فقط شامل اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
5- متد whereUlid پارامترها را محدود به ULID (Unique Lexicographically Sortable Identifier) میکند که یک نوع شناسه منحصر به فرد و مرتب شونده است.
در این مثال، پارامتر ulid باید یک ULID معتبر باشد، در غیر این صورت مسیر مطابقت نمیکند.
6- متد whereUuid پارامترها را محدود به UUID (Universally Unique Identifier) میکند.
در این مثال، پارامتر uuid باید یک UUID معتبر باشد، در غیر این صورت مسیر مطابقت نمیکند.
7- متد whereIn تضمین میکند که پارامترها یکی از مقادیر تعیین شده باشند. یعنی پارامتر مورد نظر باید یکی از مقادیر مشخص شده در آرایه باشد.
در این مثال، پارامتر state باید یکی از مقادیر active، inactive یا pending باشد، در غیر این صورت مسیر مطابقت نمیکند.
8- متد pattern برای تعیین یک الگوی پیشفرض برای پارامترهای مسیر بکار می رود. این متد برای تنظیم الگوها به طور کلی برای تمام مسیرها در برنامه استفاده میشود.
این متد یک regex را به طور کلی برای تمامی پارامتر ها با نام slug تعیین میکند. به عبارتی در تمام مسیر ها اعمال می شود و محدود به یک مسیر نیست.
9- متد patterns مشابه متد pattern است با این تفاوت که می توانید چندین الگوی سفارشی برای چندین پارامتر به طور همزمان تعیین کنید.
در مثال بالا یک regex برای پارامتر های id و slug تعریف شده که در تمام مسیر ها اعمال می شود و محدود به یک مسیر نیست.
این روشها به شما امکان میدهند تا الگوهای پیشفرض برای پارامترهای مسیرها را تعیین کنید تا اطمینان حاصل شود که درخواستها به درستی پردازش میشوند و از دادههای نامعتبر جلوگیری شود.
#laravel #فصل_۱
@AmirhDeveloper
.
بخش دوم - معرفی متد های روتینگ - قسمت دوم
در ادامه معرفی متد های Routing به 9 متد دیگر از فساد Route می پردازیم. این متد ها برای اعتبارسنجی پارامتر های داینامیک دریافتی از URL، کاربرد دارند.
در ادامه هر یک از این متد ها را با مثال معرفی میکنیم:
1- متد where به شما امکان میدهد تا یک محدودیت سفارشی برای پارامترهای مسیر تعیین کنید. این محدودیتها بر اساس یک الگوی منظم (regex) تعریف میشوند. به عنوان مثال، میتوانید تعیین کنید که پارامتر id باید عددی باشد.
Route::get('user/{id}', function ($id) {
return "User ID: $id";
})->where('id', '[0-9]+');در این مثال، پارامتر id باید فقط شامل اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
2- متد whereAlpha تضمین میکند که پارامترهای مشخص شده فقط حروف الفبایی باشند. یعنی پارامتر مورد نظر باید فقط شامل حروف باشد و هیچ عدد یا کاراکتر دیگری نباید در آن باشد.
Route::get('user/{name}', function ($name) {
return "User Name: $name";
})->whereAlpha('name');در این مثال، پارامتر name باید فقط شامل حروف باشد، در غیر این صورت مسیر مطابقت نمیکند.
3- متد whereAlphaNumeric پارامترها را محدود به حروف و اعداد میکند. یعنی پارامتر مورد نظر میتواند شامل حروف و اعداد باشد ولی هیچ کاراکتر خاصی نباید در آن باشد.
Route::get('product/{code}', function ($code) {
return "Product Code: $code";
})->whereAlphaNumeric('code');در این مثال، پارامتر code باید فقط شامل حروف و اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
4- متد whereNumber پارامترها را فقط به اعداد محدود میکند. یعنی پارامتر مورد نظر باید فقط شامل اعداد باشد و هیچ حرف یا کاراکتر دیگری نباید در آن باشد.
Route::get('order/{id}', function ($id) {
return "Order ID: $id";
})->whereNumber('id');در این مثال، پارامتر id باید فقط شامل اعداد باشد، در غیر این صورت مسیر مطابقت نمیکند.
5- متد whereUlid پارامترها را محدود به ULID (Unique Lexicographically Sortable Identifier) میکند که یک نوع شناسه منحصر به فرد و مرتب شونده است.
Route::get('item/{ulid}', function ($ulid) {
return "Item ULID: $ulid";
})->whereUlid('ulid');در این مثال، پارامتر ulid باید یک ULID معتبر باشد، در غیر این صورت مسیر مطابقت نمیکند.
6- متد whereUuid پارامترها را محدود به UUID (Universally Unique Identifier) میکند.
Route::get('user/{uuid}', function ($uuid) {
return "User UUID: $uuid";
})->whereUuid('uuid');در این مثال، پارامتر uuid باید یک UUID معتبر باشد، در غیر این صورت مسیر مطابقت نمیکند.
7- متد whereIn تضمین میکند که پارامترها یکی از مقادیر تعیین شده باشند. یعنی پارامتر مورد نظر باید یکی از مقادیر مشخص شده در آرایه باشد.
Route::get('status/{state}', function ($state) {
return "Status: $state";
})->whereIn('state', ['active', 'inactive', 'pending']);در این مثال، پارامتر state باید یکی از مقادیر active، inactive یا pending باشد، در غیر این صورت مسیر مطابقت نمیکند.
8- متد pattern برای تعیین یک الگوی پیشفرض برای پارامترهای مسیر بکار می رود. این متد برای تنظیم الگوها به طور کلی برای تمام مسیرها در برنامه استفاده میشود.
Route::pattern('slug', '[A-Za-z0-9-]+');
Route::get('post/{slug}', function ($slug) {
return "Post Slug: $slug";
});این متد یک regex را به طور کلی برای تمامی پارامتر ها با نام slug تعیین میکند. به عبارتی در تمام مسیر ها اعمال می شود و محدود به یک مسیر نیست.
9- متد patterns مشابه متد pattern است با این تفاوت که می توانید چندین الگوی سفارشی برای چندین پارامتر به طور همزمان تعیین کنید.
Route::patterns([
'id' => '[0-9]+',
'slug' => '[A-Za-z0-9-]+',
]);
Route::get('article/{id}/{slug}', function ($id, $slug) {
return "Article ID: $id, Slug: $slug";
});
در مثال بالا یک regex برای پارامتر های id و slug تعریف شده که در تمام مسیر ها اعمال می شود و محدود به یک مسیر نیست.
این روشها به شما امکان میدهند تا الگوهای پیشفرض برای پارامترهای مسیرها را تعیین کنید تا اطمینان حاصل شود که درخواستها به درستی پردازش میشوند و از دادههای نامعتبر جلوگیری شود.
#laravel #فصل_۱
@AmirhDeveloper
.
فصل یک - Routing
بخش دوم - معرفی متد های روتینگ - قسمت سوم
در این قسمت به سایر متد های روتینگ می پردازیم:
1- متد redirect برای ریدایرکت کردن یک URL به URL دیگر استفاده میشود.
2- متد permanentRedirect برای ریدایرکت دائمی (کد وضعیت HTTP 301) به کار میرود.
3- متد view برای بازگرداندن یک ویو به کار میرود و یک صفحه HTML را رندر می کند.
نام فایل view بدون پسوند داده می شود.
همچنین می توانید پارامتر هایی را همراه آن ارسال کنید:
در فصل های بعدی به طور مفصل درمورد view ها توضیح داده می شود.
4- متد name برای نامگذاری یک مسیر استفاده میشود که به شما امکان میدهد تا به سادگی به آن مسیر ارجاع دهید.
5- متد group برای گروهبندی روتها و استفاده از تنظیمات مشترک بین آنها به کار میرود.
6- متد domain برای تعریف روتهای وابسته به یک دامنه خاص استفاده میشود.
7- متد prefix برای اضافه کردن پیشوند به یک گروه از روتها به کار میرود.
8- متد fallback برای تعریف مسیری استفاده میشود که در صورتی که هیچ یک از روتها مطابقت نداشته باشند، فراخوانی میشود.
9- متد current برای بازگرداندن اطلاعات مربوط به مسیر فعلی به کار میرود.
10- متد currentRouteName برای بازگرداندن نام مسیر فعلی به کار میرود.
11- متد currentRouteAction برای بازگرداندن اکشن کنترلر مربوط به مسیر فعلی به کار میرود.
بقیه متد های روتینگ در فصل های آینده پس از آموزش پیش نیاز ها توضیح داده می شود.
#laravel #فصل_۱
@AmirhDeveloper
.
بخش دوم - معرفی متد های روتینگ - قسمت سوم
در این قسمت به سایر متد های روتینگ می پردازیم:
1- متد redirect برای ریدایرکت کردن یک URL به URL دیگر استفاده میشود.
Route::redirect('/from-url', '/to-url');
// OR
Route::redirect('/from-home', '/to', 301);2- متد permanentRedirect برای ریدایرکت دائمی (کد وضعیت HTTP 301) به کار میرود.
Route::permanentRedirect('/from-url', '/to-url');3- متد view برای بازگرداندن یک ویو به کار میرود و یک صفحه HTML را رندر می کند.
نام فایل view بدون پسوند داده می شود.
Route::view('/welcome', 'welcome');
// welcome -> resources/views/welcome.blade.phpهمچنین می توانید پارامتر هایی را همراه آن ارسال کنید:
Route::view('/about', 'about', ['key' => 'value']);در فصل های بعدی به طور مفصل درمورد view ها توضیح داده می شود.
4- متد name برای نامگذاری یک مسیر استفاده میشود که به شما امکان میدهد تا به سادگی به آن مسیر ارجاع دهید.
Route::get('/user/profile', $action)->name('profile');
route('profile'); // domain.example/user/profile5- متد group برای گروهبندی روتها و استفاده از تنظیمات مشترک بین آنها به کار میرود.
Route::group(['prefix' => 'admin'], function () {
Route::get('/dashboard', $action);
});6- متد domain برای تعریف روتهای وابسته به یک دامنه خاص استفاده میشود.
Route::domain('api.example.com')->group(function () {
Route::get('/users', function () {
// api.example.com/users
});
// ...
});7- متد prefix برای اضافه کردن پیشوند به یک گروه از روتها به کار میرود.
Route::prefix('admin')->group(function () {
Route::get('/users', function () {
// domain.example/admin/users
});
// ...
});8- متد fallback برای تعریف مسیری استفاده میشود که در صورتی که هیچ یک از روتها مطابقت نداشته باشند، فراخوانی میشود.
Route::fallback(function () {
return 404;
});9- متد current برای بازگرداندن اطلاعات مربوط به مسیر فعلی به کار میرود.
$currentRoute = Route::current();
10- متد currentRouteName برای بازگرداندن نام مسیر فعلی به کار میرود.
$currentRouteName = Route::currentRouteName();
11- متد currentRouteAction برای بازگرداندن اکشن کنترلر مربوط به مسیر فعلی به کار میرود.
$currentRouteAction = Route::currentRouteAction();
بقیه متد های روتینگ در فصل های آینده پس از آموزش پیش نیاز ها توضیح داده می شود.
#laravel #فصل_۱
@AmirhDeveloper
.
فصل یک - Routing
بخش سوم - میدلورها
میدلورها در لاراول مکانیزمی مناسب برای بررسی و فیلتر کردن درخواستهای HTTP ورودی به برنامه شما فراهم میکنند.
به عنوان مثال، لاراول یک میدلور دارد که بررسی میکند آیا کاربر وارد سیستم شده است یا خیر. اگر کاربر وارد نشده باشد، او را به صفحه ورود هدایت میکند. اما اگر وارد شده باشد، درخواست را به مسیر بعدی هدایت میکند.
لاراول شامل میدلورهای متنوعی از جمله تأیید هویت و حفاظت CSRF است.
همچنین کاربر می تواند میدلور های خود را بنویسد، تمامی میدلورهای تعریف شده توسط کاربر معمولاً در مسیر app/Http/Middleware قرار میگیرند.
ساخت میدلور اختصاصی:
برای ساخت میدلور اختصاصی، از دستور زیر در ترمینال استفاده کنید:
این دستور یک میدلور با نام داده شده در مسیر app/Http/Middleware ایجاد میکند.
تمامی عملیات بررسی در متد handle انجام میشود. میتوانید شروطی را بر روی درخواستها اعمال کنید. در صورتی که شروط برقرار باشند، متد handle میدلور بعدی را فراخوانی میکند و درخواست را ادامه میدهد. در غیر این صورت، درخواست متوقف و نتیجه تغییر خواهد کرد. مثال:
اگر سن کاربر کمتر یا مساوی ۱۸ باشد، به صفحه خانه هدایت میشود. در غیر این صورت، درخواست ادامه پیدا میکند.
ثبت میدلور:
برای استفاده از یک میدلور اختصاصی، ابتدا باید آن را در برنامه خود ثبت کنید. برای این کار وارد فایل bootstrap/app.php شوید و دنبال بخش زیر بگردید:
برای ثبت میدلور جدید، میتوانید متد append را از $middleware صدا بزنید و نام میدلور را به صورت کامل به آن پاس بدهید:
همچنین میتوانید یک نام مستعار برای میدلور خود ثبت کنید تا سادهتر به آن دسترسی داشته باشید:
با سایر متد قابل دسترس از $middleware در قسمت بعدی آشنا می شویم.
استفاده از میدلور در مسیرها:
برای اعمال یک میدلور بر روی route ها با متد جدیدی از فساد Route آشنا می شویم:
متد middleware یک یا چند میدلور را بر روی یک مسیر اعمال میکند و در صورتی که شروط میدلور برقرار باشد، مسیر اجرا خواهد شد. در مثال ما، تنها در صورتی که سن بیشتر از ۱۸ باشد، مسیر اجرا خواهد شد.
غیرفعال کردن میدلور برای مسیرها:
متد دیگری از فساد Route با نام withoutMiddleware نیز در دسترس است که میدلور های داده شده را بر روی مسیر مورد نظر اجرا نخواهد کرد:
ارسال پارامتر به میدلور:
میتوانید پارامترهایی را به میدلور خود اختصاص دهید:
پارامترهای ورودی را میتوانید در متد handle دریافت کنید:
در مثال بالا، یک میدلور داینامیک ایجاد کردهایم که میتوانیم هر سنی را به واسطه آن بررسی کنیم.
همچنین می توانید پارامتر های بیشتری را ارسال و دریافت کنید:
و همینطور در متد handle:
#laravel #فصل_۱
@AmirhDeveloper
.
بخش سوم - میدلورها
میدلورها در لاراول مکانیزمی مناسب برای بررسی و فیلتر کردن درخواستهای HTTP ورودی به برنامه شما فراهم میکنند.
به عنوان مثال، لاراول یک میدلور دارد که بررسی میکند آیا کاربر وارد سیستم شده است یا خیر. اگر کاربر وارد نشده باشد، او را به صفحه ورود هدایت میکند. اما اگر وارد شده باشد، درخواست را به مسیر بعدی هدایت میکند.
لاراول شامل میدلورهای متنوعی از جمله تأیید هویت و حفاظت CSRF است.
همچنین کاربر می تواند میدلور های خود را بنویسد، تمامی میدلورهای تعریف شده توسط کاربر معمولاً در مسیر app/Http/Middleware قرار میگیرند.
ساخت میدلور اختصاصی:
برای ساخت میدلور اختصاصی، از دستور زیر در ترمینال استفاده کنید:
php artisan make:middleware {MiddlewareName}این دستور یک میدلور با نام داده شده در مسیر app/Http/Middleware ایجاد میکند.
تمامی عملیات بررسی در متد handle انجام میشود. میتوانید شروطی را بر روی درخواستها اعمال کنید. در صورتی که شروط برقرار باشند، متد handle میدلور بعدی را فراخوانی میکند و درخواست را ادامه میدهد. در غیر این صورت، درخواست متوقف و نتیجه تغییر خواهد کرد. مثال:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CheckAge
{
public function handle(Request $request, Closure $next)
{
if ($request->age <= 18) {
return redirect('home');
}
return $next($request);
}
}
اگر سن کاربر کمتر یا مساوی ۱۸ باشد، به صفحه خانه هدایت میشود. در غیر این صورت، درخواست ادامه پیدا میکند.
ثبت میدلور:
برای استفاده از یک میدلور اختصاصی، ابتدا باید آن را در برنامه خود ثبت کنید. برای این کار وارد فایل bootstrap/app.php شوید و دنبال بخش زیر بگردید:
->withMiddleware(function (Middleware $middleware) {
//
})برای ثبت میدلور جدید، میتوانید متد append را از $middleware صدا بزنید و نام میدلور را به صورت کامل به آن پاس بدهید:
->withMiddleware(function (Middleware $middleware) {
$middleware->append(CheckAge::class);
})همچنین میتوانید یک نام مستعار برای میدلور خود ثبت کنید تا سادهتر به آن دسترسی داشته باشید:
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'age' => CheckAge::class
]);
})با سایر متد قابل دسترس از $middleware در قسمت بعدی آشنا می شویم.
استفاده از میدلور در مسیرها:
برای اعمال یک میدلور بر روی route ها با متد جدیدی از فساد Route آشنا می شویم:
Route::get('profile', function () {
// Only executed if age > 18
})->middleware(CheckAge::class);
// Or use alias:
Route::get('profile', function () {
// Only executed if age > 18
})->middleware('age');متد middleware یک یا چند میدلور را بر روی یک مسیر اعمال میکند و در صورتی که شروط میدلور برقرار باشد، مسیر اجرا خواهد شد. در مثال ما، تنها در صورتی که سن بیشتر از ۱۸ باشد، مسیر اجرا خواهد شد.
غیرفعال کردن میدلور برای مسیرها:
متد دیگری از فساد Route با نام withoutMiddleware نیز در دسترس است که میدلور های داده شده را بر روی مسیر مورد نظر اجرا نخواهد کرد:
Route::withoutMiddleware([CheckAge::class])->group(function () {
Route::get('/profile', function () {
// ...
});
});ارسال پارامتر به میدلور:
میتوانید پارامترهایی را به میدلور خود اختصاص دهید:
Route::get('profile', function () {
// Only executed if age > 20
})->middleware('age:20');پارامترهای ورودی را میتوانید در متد handle دریافت کنید:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CheckAge
{
public function handle(Request $request, Closure $next, $minAge)
{
if ($request->age <= $minAge) {
return redirect('home');
}
return $next($request);
}
}
در مثال بالا، یک میدلور داینامیک ایجاد کردهایم که میتوانیم هر سنی را به واسطه آن بررسی کنیم.
همچنین می توانید پارامتر های بیشتری را ارسال و دریافت کنید:
Route::get('profile', function () {
})->middleware('age:20,gt');و همینطور در متد handle:
class CheckAge
{
public function handle(Request $request, Closure $next, $minAge, $type)
{
//
}
}
#laravel #فصل_۱
@AmirhDeveloper
.
فصل یک - Routing
بخش سوم - میدلورها - قسمت دوم
در قسمت قبل آموختیم پس از ساخت یک میدلور، باید آن را در برنامه ثبت کنیم.
برای این کار میدلور ها را در متد withMiddleware در فایل bootstrap/app.php ثبت می کردیم:
متد های مختلفی از متغیر $middleware برای ثبت میدلور ها در دسترس است که به بررسی آنها خواهیم پرداخت:
1- متد use
این متد استک سراسری میدلور ها را به صورت دستی تنظیم میکند.
2- متد append
این متد یک میدلور را به آخر لیست میدلور ها اضافه میکند.
3- متد prepend
این متد یک میدلور را به اول لیست میدلور ها اضافه میکند.
4- متد remove
این متد یک میدلور را از لیست میدلور ها حذف میکند.
5- متد replace
این متد یک میدلور را جایگزین میدلور موجود در استک میدلور ها می کند.
6- متد group
این متد یک گروه از چندین میدلور را ایجاد میکند.
7- متد alias
این متد یک میدلور را با نام مستعار ثبت میکند.
8- متد api
این متد یک میدلور را به گروه پیشفرض api اضافه/حذف/جایگزین میکند.
9- متد web
این متد یک میدلور را به گروه پیشفرض web اضافه/حذف/جایگزین میکند.
10- متد appendToGroup
این متد یک یا چند میدلور را به آخر یک گروه اضافه میکند.
11- متد prependToGroup
این متد یک یا چند میدلور را به اول یک گروه اضافه میکند.
12- متد removeFromGroup
این متد یک یا چند میدلور را از یک گروه حذف میکند.
13- متد replaceInGroup
این متد یک میدلور را با میدلور دیگری در یک گروه جایگزین میکند.
14- متد priority
این متد اجرای میدلور ها را الویت بندی میکند.
#laravel #فصل_۱
@AmirhDeveloper
.
بخش سوم - میدلورها - قسمت دوم
در قسمت قبل آموختیم پس از ساخت یک میدلور، باید آن را در برنامه ثبت کنیم.
برای این کار میدلور ها را در متد withMiddleware در فایل bootstrap/app.php ثبت می کردیم:
->withMiddleware(function (Middleware $middleware) {
// $middleware->
})متد های مختلفی از متغیر $middleware برای ثبت میدلور ها در دسترس است که به بررسی آنها خواهیم پرداخت:
1- متد use
این متد استک سراسری میدلور ها را به صورت دستی تنظیم میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->use([
TrustHosts::class,
// ...
]);
})2- متد append
این متد یک میدلور را به آخر لیست میدلور ها اضافه میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->append(TrustHosts::class);
})3- متد prepend
این متد یک میدلور را به اول لیست میدلور ها اضافه میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->prepend(TrustHosts::class);
})4- متد remove
این متد یک میدلور را از لیست میدلور ها حذف میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->remove(TrustHosts::class);
})5- متد replace
این متد یک میدلور را جایگزین میدلور موجود در استک میدلور ها می کند.
->withMiddleware(function (Middleware $middleware) {
$middleware->replace(First::class, Second:class);
})6- متد group
این متد یک گروه از چندین میدلور را ایجاد میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->group('my-group', [
TrustHosts::class,
StartSession::class,
// ...
]);
})
// Use
Route::get('/', function () {
// ...
})->middleware('my-group');7- متد alias
این متد یک میدلور را با نام مستعار ثبت میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'permission' => Permission::class,
]);
})8- متد api
این متد یک میدلور را به گروه پیشفرض api اضافه/حذف/جایگزین میکند.
->withMiddleware(function (Middleware $middleware) {
// append middleware
$middleware->api(append: [
StartSession::class,
]);;
// prepend middleware
$middleware->api(prepend: [
StartSession::class,
]);;
// remove middleware
$middleware->api(remove: [
StartSession::class,
]);;
// replace middleware
$middleware->api(replace: [
First::class => Second::class,
]);;
})9- متد web
این متد یک میدلور را به گروه پیشفرض web اضافه/حذف/جایگزین میکند.
->withMiddleware(function (Middleware $middleware) {
// append middleware
$middleware->web(append: [
StartSession::class,
]);;
// prepend middleware
$middleware->web(prepend: [
StartSession::class,
]);;
// remove middleware
$middleware->web(remove: [
StartSession::class,
]);;
// replace middleware
$middleware->web(replace: [
First::class => Second::class,
]);;
})10- متد appendToGroup
این متد یک یا چند میدلور را به آخر یک گروه اضافه میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->appendToGroup('group-name', [
StartSession::class,
]);
})11- متد prependToGroup
این متد یک یا چند میدلور را به اول یک گروه اضافه میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->prependToGroup('group-name', [
StartSession::class,
]);
})12- متد removeFromGroup
این متد یک یا چند میدلور را از یک گروه حذف میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->removeFromGroup('group-name', [
StartSession::class,
]);
})13- متد replaceInGroup
این متد یک میدلور را با میدلور دیگری در یک گروه جایگزین میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->replaceInGroup('group-name', First::class, Second::class);
})14- متد priority
این متد اجرای میدلور ها را الویت بندی میکند.
->withMiddleware(function (Middleware $middleware) {
$middleware->priority([
First::class,
Second::class,
Third::class,
]);
})#laravel #فصل_۱
@AmirhDeveloper
.
فصل یک - Routing
بخش چهارم - معرفی کامند های روتینگ
Artisan ابزار خط فرمانی است که به شما کمک میکند تا کارهای مختلفی را در پروژه لاراول خود انجام دهید. این کامندها به توسعهدهندگان اجازه میدهند تا به سرعت وظایف مختلفی را مانند مدیریت مسیرها، پیکربندیها، و کشها انجام دهند.
در این قسمت با کامند های مربوط به بخش روتینگ آشنا می شویم:
1-
در نسخه جدید لاراول مسیر های مربوط به API به طور پیش فرض وجود ندارد، اگر پروژه شما نیاز به API دارد با این دستور مسیر های API را ایجاد و پیکربندی کنید.
با اجرای این دستور فایل api.php در پوشه route برای شما ایجاد می شود.
همچنین Laravel Sanctum که یک پکیج برای احراز هویت و محافظ API ها می باشد به طور خودکار برای شما نصب می شود.
2-
این دستور لیستی از تمام مسیرهای ثبت شده در پروژه را نمایش میدهد. اطلاعاتی مانند HTTP Method, URL، نام مسیر و کنترلری که درخواستها را مدیریت میکند، را نمایش میدهد.
3-
تمامی اطلاعات پیشفرض به علاوه جزئیات بیشتری از Action، مانند نام کنترلر و متد، و میدلورهای مورد استفاده در مسیر را نمایش میدهد.
اطلاعات دقیقتر درباره namespace و گروهبندیهای اعمال شده به مسیرها نیز ممکن است نمایش داده شود.
4-
تمامی اطلاعات
این سطح از جزئیات میتواند شامل اطلاعات دقیقتر درباره dependency injection و هر نوع تنظیمات خاص دیگر مربوط به مسیر باشد.
5-
این کامند لیست مسیرهایی را نمایش میدهد که شامل رشته api در URL خود هستند. این میتواند برای فیلتر کردن و نمایش مسیرهای مرتبط مفید باشد.
6-
این کامند لیست مسیرها را به استثنای مسیرهایی که از پکیجهای vendor آمدهاند، نمایش میدهد.
7-
این کامند تنها مسیرهایی را نمایش میدهد که از پکیجهای vendor آمدهاند.
8-
این کامند برای انتشار تنظیمات پیکربندی CORS (Cross-Origin Resource Sharing) استفاده میشود. این پیکربندیها میتواند شامل تنظیمات امنیتی برای مدیریت درخواستهای API از دامنههای مختلف باشد.
9-
این کامند برای کش کردن (ذخیره موقت) تمامی مسیرهای ثبت شده در پروژه استفاده میشود. این کار به بهبود عملکرد برنامه کمک میکند زیرا نیاز به تحلیل دوباره مسیرها در هر درخواست کاهش مییابد.
10-
این کامند برای پاک کردن کش مسیرها استفاده میشود. بعد از اجرای این کامند، لاراول مسیرها را دوباره از نو تحلیل و ثبت میکند.
این کامندها به توسعهدهندگان کمک میکند تا مدیریت بهتری بر روی پروژه لاراول خود داشته باشند و به راحتی بتوانند وظایف روزمره توسعه را انجام دهند.
#laravel #فصل_۱
@AmirhDeveloper
.
بخش چهارم - معرفی کامند های روتینگ
Artisan ابزار خط فرمانی است که به شما کمک میکند تا کارهای مختلفی را در پروژه لاراول خود انجام دهید. این کامندها به توسعهدهندگان اجازه میدهند تا به سرعت وظایف مختلفی را مانند مدیریت مسیرها، پیکربندیها، و کشها انجام دهند.
در این قسمت با کامند های مربوط به بخش روتینگ آشنا می شویم:
1-
php artisan install:api
در نسخه جدید لاراول مسیر های مربوط به API به طور پیش فرض وجود ندارد، اگر پروژه شما نیاز به API دارد با این دستور مسیر های API را ایجاد و پیکربندی کنید.
با اجرای این دستور فایل api.php در پوشه route برای شما ایجاد می شود.
همچنین Laravel Sanctum که یک پکیج برای احراز هویت و محافظ API ها می باشد به طور خودکار برای شما نصب می شود.
2-
php artisan route:list
این دستور لیستی از تمام مسیرهای ثبت شده در پروژه را نمایش میدهد. اطلاعاتی مانند HTTP Method, URL، نام مسیر و کنترلری که درخواستها را مدیریت میکند، را نمایش میدهد.
3-
php artisan route:list -v
تمامی اطلاعات پیشفرض به علاوه جزئیات بیشتری از Action، مانند نام کنترلر و متد، و میدلورهای مورد استفاده در مسیر را نمایش میدهد.
اطلاعات دقیقتر درباره namespace و گروهبندیهای اعمال شده به مسیرها نیز ممکن است نمایش داده شود.
4-
php artisan route:list -vv
تمامی اطلاعات
-v به علاوه اطلاعات بیشتری درباره پارامترهای مسیر، نامهای کامل کلاسها و متدها، و جزئیات دقیقتر دیگری که ممکن است در مسیر استفاده شده باشند را نمایش میدهد.این سطح از جزئیات میتواند شامل اطلاعات دقیقتر درباره dependency injection و هر نوع تنظیمات خاص دیگر مربوط به مسیر باشد.
5-
php artisan route:list --path=api
این کامند لیست مسیرهایی را نمایش میدهد که شامل رشته api در URL خود هستند. این میتواند برای فیلتر کردن و نمایش مسیرهای مرتبط مفید باشد.
6-
php artisan route:list --except-vendor
این کامند لیست مسیرها را به استثنای مسیرهایی که از پکیجهای vendor آمدهاند، نمایش میدهد.
7-
php artisan route:list --only-vendor
این کامند تنها مسیرهایی را نمایش میدهد که از پکیجهای vendor آمدهاند.
8-
php artisan config:publish cors
این کامند برای انتشار تنظیمات پیکربندی CORS (Cross-Origin Resource Sharing) استفاده میشود. این پیکربندیها میتواند شامل تنظیمات امنیتی برای مدیریت درخواستهای API از دامنههای مختلف باشد.
9-
php artisan route:cache
این کامند برای کش کردن (ذخیره موقت) تمامی مسیرهای ثبت شده در پروژه استفاده میشود. این کار به بهبود عملکرد برنامه کمک میکند زیرا نیاز به تحلیل دوباره مسیرها در هر درخواست کاهش مییابد.
10-
php artisan route:clear
این کامند برای پاک کردن کش مسیرها استفاده میشود. بعد از اجرای این کامند، لاراول مسیرها را دوباره از نو تحلیل و ثبت میکند.
این کامندها به توسعهدهندگان کمک میکند تا مدیریت بهتری بر روی پروژه لاراول خود داشته باشند و به راحتی بتوانند وظایف روزمره توسعه را انجام دهند.
#laravel #فصل_۱
@AmirhDeveloper
.
فصل دو - Controllers
بخش اول - ایجاد و استفاده از کنترلرها
کنترلرها (Controllers) یکی از اجزای اصلی معماری MVC (Model-View-Controller) هستند. کنترلرها وظیفه دارند درخواستهای ورودی را مدیریت کرده و پاسخهای مناسب را به سمت کاربر ارسال کنند.
تعریف کنترلرها:
کنترلرها در لاراول فایلهایی هستند که در پوشه app/Http/Controllers قرار میگیرند و شامل کلاسهایی هستند که مسئولیت کنترل جریان درخواستها و پاسخها را بر عهده دارند. به طور کلی، کنترلرها به منظور جداسازی منطق تجاری (Business Logic) از منطق نمایش (Presentation Logic) استفاده میشوند.
ایجاد کنترلر:
برای ایجاد یک کنترلر در لاراول، میتوانید از کامند Artisan استفاده کنید. به عنوان مثال:
این دستور یک کنترلر جدید به نام UserController در پوشه app/Http/Controllers ایجاد میکند.
انواع کنترلرها:
لاراول چندین نوع کنترلر را پشتیبانی میکند:
1- کنترلرهای پایه (Plain Controllers): کنترلرهای سادهای که شامل متدهای مختلف برای مدیریت درخواستها هستند.
2- کنترلرهای منبع (Resource Controllers): کنترلرهایی که برای عملیات CRUD (ایجاد، خواندن، بهروزرسانی، حذف) بهینه شدهاند. میتوانید با استفاده از دستور زیر یک کنترلر منبع ایجاد کنید:
این کنترلر شامل 7 متد پیشفرض است:
3- کنترلرهای قابل توزیع (Singleton Controllers): کنترلرهایی که تنها یک نمونه از آنها در طول عمر درخواست ایجاد میشود.
نمونه کنترلر برای انجام یک عملیات:
مسیر دهی کنترلرها در روتینگ
برای اتصال یک route به کنترلر روش های متنوعی وجود دارد که در ادامه بررسی خواهیم کرد:
1-
در مثال بالا پارامتر دوم به متد index از کنترلر UserController اشاره دارد.
ابتدا نام کامل کنترلر سپس @ و بعد نام متد.
2-
روش بالا یک روش دیگر برای فراخوانی یک متد از کنترلر است، به این صورت که در یک آرایه، اندیس صفر برابر کلاس کنترلر و اندیس یک برابر نام متد.
برای فراخوانی کنترلر های resource میتوانید از متد دیگری از فساد Route استفاده کنید.
این متد به صورت خودکار 7 متد کنترلر را مسیردهی می کند.
همچنین متد دیگری از فساد Route برای کنترلر ها در دسترس است:
در روش بالا یک گروه برای یک کنترلر ایجاد می کنید و پس از آن تنها نام متد کنترلر را به عنوان اکشن وارد می کنید.
#laravel #فصل_۲
@AmirhDeveloper
.
بخش اول - ایجاد و استفاده از کنترلرها
کنترلرها (Controllers) یکی از اجزای اصلی معماری MVC (Model-View-Controller) هستند. کنترلرها وظیفه دارند درخواستهای ورودی را مدیریت کرده و پاسخهای مناسب را به سمت کاربر ارسال کنند.
تعریف کنترلرها:
کنترلرها در لاراول فایلهایی هستند که در پوشه app/Http/Controllers قرار میگیرند و شامل کلاسهایی هستند که مسئولیت کنترل جریان درخواستها و پاسخها را بر عهده دارند. به طور کلی، کنترلرها به منظور جداسازی منطق تجاری (Business Logic) از منطق نمایش (Presentation Logic) استفاده میشوند.
ایجاد کنترلر:
برای ایجاد یک کنترلر در لاراول، میتوانید از کامند Artisan استفاده کنید. به عنوان مثال:
php artisan make:controller UserController
این دستور یک کنترلر جدید به نام UserController در پوشه app/Http/Controllers ایجاد میکند.
انواع کنترلرها:
لاراول چندین نوع کنترلر را پشتیبانی میکند:
1- کنترلرهای پایه (Plain Controllers): کنترلرهای سادهای که شامل متدهای مختلف برای مدیریت درخواستها هستند.
2- کنترلرهای منبع (Resource Controllers): کنترلرهایی که برای عملیات CRUD (ایجاد، خواندن، بهروزرسانی، حذف) بهینه شدهاند. میتوانید با استفاده از دستور زیر یک کنترلر منبع ایجاد کنید:
php artisan make:controller UserController --resource
این کنترلر شامل 7 متد پیشفرض است:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
// show users list
}
public function create()
{
// show create form
}
public function store(Request $request)
{
// store user data
}
public function show($id)
{
// show user data
}
public function edit($id)
{
// show edit form
}
public function update(Request $request, $id)
{
// update user data
}
public function destroy($id)
{
// delete user
}
}
3- کنترلرهای قابل توزیع (Singleton Controllers): کنترلرهایی که تنها یک نمونه از آنها در طول عمر درخواست ایجاد میشود.
php artisan make:controller SingletonController --invokable
نمونه کنترلر برای انجام یک عملیات:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SingletonController extends Controller
{
public function __invoke()
{
//
}
}
مسیر دهی کنترلرها در روتینگ
برای اتصال یک route به کنترلر روش های متنوعی وجود دارد که در ادامه بررسی خواهیم کرد:
1-
Route::get("/users", "app\Http\Controllers\UserController@index");در مثال بالا پارامتر دوم به متد index از کنترلر UserController اشاره دارد.
ابتدا نام کامل کنترلر سپس @ و بعد نام متد.
2-
use app\Http\Controllers\UserController;
Route::get("/users", [UserController::class, 'index']);
روش بالا یک روش دیگر برای فراخوانی یک متد از کنترلر است، به این صورت که در یک آرایه، اندیس صفر برابر کلاس کنترلر و اندیس یک برابر نام متد.
برای فراخوانی کنترلر های resource میتوانید از متد دیگری از فساد Route استفاده کنید.
Route::resource('users', UserController::class);این متد به صورت خودکار 7 متد کنترلر را مسیردهی می کند.
همچنین متد دیگری از فساد Route برای کنترلر ها در دسترس است:
Route::controller(UserController::class)->group(function(){
Route::get("/users", 'index');
});در روش بالا یک گروه برای یک کنترلر ایجاد می کنید و پس از آن تنها نام متد کنترلر را به عنوان اکشن وارد می کنید.
#laravel #فصل_۲
@AmirhDeveloper
.