دهها قطعه کد کاربردی بسیار مفید در سایت css-tricks
نویسنده: امیر مددی - ۱۳٩٠/٩/٢٢
دهها قطعه کد کاربری بسیار جالب در زمینه HTML ، CSS ، JQuery ، Javascript ، PHP ، WordPress و... در این صفحه وجود دارد. بسیار ساده ، کاربردی و مفید
کلا سایت به قول معروف خفنی است این css-tricks ، همه صفحاتش آموزنده و کاربری و کاملا بروز است. در بین کدها این کد را پیدا کردم که یاد قدیما افتادم. "نوستالژی برنامه نویسی (: "
<meta http-equiv="refresh" content="5;url=http://example.com/" />
فوروارد صفحه بعد از 5 ثانیه به مسیر دیگر
چگونه در یک فرم MVC مانع حملات از نوع CSRF شویم؟
نویسنده: امیر مددی - ۱۳٩٠/٩/۱۸
هنگامی که در MVC فرمی را برای عملیاتی مثل ذخیره سازی یا ویرایش به سرور ارسال می کنید، در صورتی که کاربر در فرم از تگهای Html یا کدهای JavaScript استفاده کرده باشد ، کنترلر بصورت پیش فرض آن تگ یا کد را خطرناک تشخیص می دهد و خطای زیر را ارسال می کند :
A potentially dangerous Request.Form value was detected from the client
حتی اگر کد Html شما خطرناک هم نباشد ، باز هم این خطا داده می شود، مثلا در شکل زیر تنها یک تگ B وجود دارد که متن را توپر می کند ولی باز هم خطا صادر می شود :
این خطا از لحاظ امنیتی به ما کمک می کند تا جلو کدهای احیانا مخربی را که هکرها وارد می کنند ، بگیریم ولی گاهی اوقات لازم است که ما کد Html را دریافت کنیم ، مثلا اگر شما می خواهید به کاربر اجازه درج محتویات یک صفحه خبر و یا ارسال یک ایمیل را بدهید که معمولا یک ویرایشگر متنی در اختیار کاربر قرار می گیرد که کد html تولید می کند
برای حل این مشکل ValidationInput را برابر false قرار می دهیم که باعث می شود اعتبار سنجی روی تگهای Html صورت نگیرد. در این حالت کنترلر بصورت زیر در می آید:
[ValidateInput(false)]
public ActionResult NewEmail(FormCollection form(
{
اما با اینکار عملا راه را برای حمله های امنیتی از نوع Cross Site Request Forgery باز کرده ایم . این حمله ها به این صورت انجام می شود که هکر با ارسال فرمی که خودش ساخته است و قرار دادن کدهایی در آن ، باعث ربوده شدن اطلاعاتی مثل Session از کامپیوتر کاربر می شود .
برای پیشگیری از این نوع حملات شما باید یک token از نوع encrypted تولید می کند که تنها توسط کنترلر قابل اعتبار سنجی است . بنابراین شما در ابتدای فرم خود ، آن token را بصورت زیر تولید می کنید :
@using (Html.BeginForm("NewEmail", "Emails", FormMethod.Post))
{
@Html.AntiForgeryToken()
و سپس در کنترلر خود آن را با عبارت [ValidateAntiForgeryToken] بررسی می کنید تا مطمئن شوید که مقادیر این فرم توسط برنامه خود شما تولید شده است.
[ValidateAntiForgeryToken]
[ValidateInput(false)]
public ActionResult NewEmail(FormCollection form)
{
ویژگی Name در عناصر Html هنوز مهم است.
نویسنده: امیر مددی - ۱۳٩٠/۸/۳٠
چند روز پیش برای فراخوانی یک تابع با استفاده از Ajax در MVC و آپدیت کردن بخشی از صفحه به این مسئله برخورد کردم که به نظر می رسید Ajax.BeginForm هیچ مقداری را به سرور ارسال نمی کند:
View//

Controller//

بعد از کمی کار خسته شدم و این سئوال را در StackOverFlow پرسیدم که متاسفانه هیچ جواب مثبتی نگرفتم و حتی جوابهای گمراه کننده ، نظیر این " Ajax.BeginForm خیلی دردآور (بد قلق) است. " نیز دریافت کردم. تا اینکه بر حسب اتفاق متوجه شدم که برای عناصر Html صفحه فقط ویژگی id تعریف کرده ا م و ویژگی قدیمی name را فراموش کرده ام. خیلی جالب بود که با اضافه کردن آن مساله حل شد! خیلی ساده اما وقت گیر. هر دو ویژگی id و name لازم هستند:

افزودنیهای مرورگر کروم
نویسنده: امیر مددی - ۱۳٩٠/۸/۱٩
افزودنیهای کروم واقعا محشرند: ساده ، کارا، سبک و رایگان! لیست افزودنیهای محبوب را ببینید (آنقدر زیادند که من نتونستم به ته لیست برسم). این چند مورد را امتحان کنید: نمایشگر تعداد ایمیل ها، دیکشنری (با تلفظ ) ، web developer ، Blog this، FireBug Lite (همه با یک کلیک دانلود و نصب می شوند) دراین لیست آنهایی که یک نوار سبز با علامت تیک دارند، دارای رتبه بالاتر از 4 (از 5) می باشند.
در صورتی که از نصب آنها پشیمان شدید روی آیکون آچار فرانسه کلیک کنید، سپس با انتخاب Tools و Extentions هر کدام را که دوست نداشتید پاک کنید.
متد ()on. در JQuery 1.7
نویسنده: امیر مددی - ۱۳٩٠/۸/۱۳
متدِ .on() در Jquery نگارش 1.7 متد ترجیحی برای چسباندن یک event handler (مثل click ) به یک عنصر صفحه (مثل دکمه ) می باشد. در حالی که در نگارشهای قبلی متدهایی مانند bind() ، .delegate() یا .live() این عمل را انجام می دادند. فرم کلی آن :
.on(events[, selector, data], handler )
Events : می تواند یک یا بیشتر از یک event باشد (مثل click ، mouseOver و ... )
Selector : (اختیاری ) عنصری از صفحه که متد را برای آن تعریف می کنیم (مثل div یا button )
Data : (اختیاری) اطلاعاتی که زمان رخ دادن این event به handler پاس می دهیم (می تواند هر نوع اطلاعاتی از جمله id یا value عنصر باشد )
Handler : دستورات یا توابعی که می خواهیم در صورت رخ دادن این event اجرا شوند.
مثال:
$("#dataTable tbody tr").on("click", function(event){
alert($(this).text());
});
در این مثال اگر رویداد click به بدنه سطری از جدولی به نام dataTable چسبانده شده و باعث می شود که متن درون آن سطر نمایش داده شود.
مرجع و مثالهای بیشتر را در این صفحه ببینید:
مشاهده صفحات طراحی شده در چند مرورگر
نویسنده: امیر مددی - ۱۳٩٠/۸/۱٠
ویژال استودیو صفحات وب را بصورت پیش فرض در مرورگر IE باز می کند و یکی از نگرانیهای طراحان وب این است که نمیدانند که صفحه ای که طراحی میکنند، در مرورگرهای مختلف چگونه دیده میشود و آیا تنظیمات ظاهری ( CSS ) آن بدرستی نوشته شده است یا خیر؟ برای حل این مسئله میتوانید افزونه WOVS را دانلود و نصب کنید. با نصب این افزونه نوار ابزاری به ویژال استودیو اضافه میشود که می توانید مرورگر را براحتی تغییر دهید:
برای نصب این افزونه به سایت آن مراجعه و آن را دانلود کنید. پس از دانلود فایل آن را اجرا و ویژال استودیو را باز و بسته کنید تا بتوانید آنرا ببینید.
این مرورگر گاهگاهی Update می شود که باید برای نصب نسخه جدبد آن در ویژال استودیو از منوی Tools گزینه Extention Manager را انتخاب کنید و در پنجره باز شده از گرینه های سمت چپ گزینه Update را انتخاب کنید تا نسخه جدید نصب شود.
یکی از مزایای این ابزار این است که می توانید با کلیک راست روی هر فایل در ویژال استودیو، آن را در مرورگر دلخواه خود ببینید: