WebMatrix توسعه وب را آسان تر می کند

مایکروسافت به تازگی ابزار جدیدی برای توسعه دهندگان وب به نام WebMatrix ارائه کرده است که سفارشی کردن وب اپلیکیشن های موجود یا ساخت یک وب سایت جدید را با امکانات خوب و راه حل های ساده، آسان می کند. این ابزار سبک به افراد کمک می کند تا به راحتی برنامه نویسی با ASP.NET را شروع کنند و خیلی زود در آن پیشرفت کنند. WebMatrix شامل ابزارهای مهم مایکروسافت برای توسعه وب  است. این ابزارها شامل :

  • IIS Developer Express : یک وب سرور سبک و رایگان که با تمام نسخه های ویندوز و نسخه کامل IIS سازگار است.
  • ASP.NET : یک فریم ورک رایگان شامل کلاس های پایه برای توسعه وب.
  • SQL Server Compact : یک نسخه embedded و بسیار سبک و رایگان از SQL Server که بر اساس فایل کار می کند.
  • Razor Syntax : یک View Engine جدید و ساده برای ASP.NET که کدهای سمت سرور سی شارپ یا ویژوال بیسیک را با کدهای HTML ترکیب می کند (مانند  PHP) و یادگیری آن ساده و لذت بخش است.

وب ماتریکس

WebMatrix با استفاده از تکنولوژی های بالا، یک محیط مجتمع ساده و در عین حال قدرتمند برای ساخت وب سایت های داینامیک و مطابق با استاندرادهای جدید به ساده ترین شکل ممکن در اختیار کاربر خود قرار می دهد. شما با وب ماتریکس می توانید یک وب اپلیکیشن اوپن سورس مثل BlogEngine.NET را انتخاب کنید، آن را بر اساس نیاز خود سفارشی کنید و به راحتی آن را بر روی هاست خود پابلیش کنید. پروسه استفاده از وب اپلیکیشن های اوپن سورس در اینترنت با WebMatrix بسیار آسان خواهد بود. شما با وب ماتریکس حتی قادر به انتخاب CMSهای نوشته شده با PHP مثل وردپرس، جوملا و Drupal نیز هستید و حتی می توانید آن ها را با ابزارهای موجود در وب ماتریکس توسعه داده و از همانجا بر روی هاست خود پابلیش کنید.

برای شروع شما می توانید WebMatrix را از اینجا دانلود کنید. اگر دات نت فریم ورک 4.0 را نصب نداشته باشید، کمی حجم دانلود وب ماتریکس بالا خواهد بود، در غیر این صورت با دانلود 15 تا 20 مگابایت WebMatrix را در اختیار خواهید داشت. پس از اجرای آن با یک محیط ساده مواجه خواهید شد که فقط 4 انتخاب را پیش روی شما می گذارد. می توانید یک سایت جدید خالی ایجاد کنید یا از وب اپلیکیشن های موجود در گالری مایکروسافت برای شروع استفاده کنید. هر طور که شروع کنید، وب ماتریکس به شما اجازه مدیریت بر صفحات سایت و تغییر آن ها، مدیریت بر فایل های وب سایت، مدیریت بر دیتابیس سایت و در نهایت پابلیش سایت بر روی سرور را می دهد.

Microsoft Web Gallery

همانطور که اشاره شد، شما در وب ماتریکس می توانید از سینتاکس Razor برای نوشتن کدهای سی شارپ و ویژوال بیسیک در میان کدهای HTML بهر ببرید. یادگیری سینتاکس Razor خیلی آسان است. شما کدهای خود را با یک علامت @ آغاز می کنید و بلاک کد خود را در سی شارپ با { و } محصور می کنید. هر جا که از علامت @ استفاده کنید یعنی می خواهید یک کد سمت سرور را بنویسید. از متغیرها بدون تعیین نوع آن ها استفاده می کنید، سپس ASP.NET خودش بهترین تصمیم را برای تعیین نوع متغیر بر اساس مقداری که درون آن ذخیره می شود خواهد گرفت. صفحاتی که دارای کد Razor هستند دارای پسوندهای مخصوص cshtml یا vbhtml خواهند بود. سینتاکس Razor تمام قدرت ASP.NET را با قواعدی آسان تر در اختیار مبتدیان قرار می دهد، اما حرفه ای ها نیز می توانند به بهترین شکل برای بالا بردن کارایی خود از آن استفاده کنند. یک کد بسیار ساده با سینتاکس Razor را ببینید :


<html>
<head>
<title>Razor Syntax Sample</title>
</head>
<body>

@{
var message = «Hello World.»;
var today = DateTime.Now.ToString();
}

<p>Message : @message</p>
<p>Today is : @today</p>
</body>
</html>

اینطور که پیداست مایکروسافت راه درستی را انتخاب کرده و باید منتظر تکنولوژی های جدیدتر و بهترش در زمینه توسعه وب باشیم. اینکه نظر مایکروسافت در این چند سال اخیر نسبت به نرم افزارهای اوپن سورس تغییرات مثبت زیادی داشته خیلی خوب و سازنده است. مایکروسافت نیز اهمیت استفاده از وب اپلیکیشن های اوپن سورس را در توسعه وب به خوبی می داند و به همین دلیل Microsoft Web Gallery را راه اندازی کرده و توسعه دهندگان را به جای باز تولید اپلیکیشن های تکراری به استفاده و توسعه وب اپلیکیشن های اوپن سورس موجود تشویق می کند. Web Platform Installer و WebMatrix دو ابزار مهم مایکروسافت در زمینه توسعه وب هستند که به صورت توکار از وب اپلیکیشن های اوپن سورس پشتیبانی می کنند و قادرند آن ها را دانلود، تنظیم و پابلیش کنند. تکنولوژی های تحت وب هرچه بازتر باشند بیشتر مورد تایید و مورد اعتماد توسعه دهندگان وب خواهند بود، این را مایکروسافت به خوبی می داند. بدون شک در آینده ای نه چندان دور از WebMatrix و Razor Syntax بیشتر خواهیم شنید.

منابع بیشتر در مورد WebMatrix

Advertisements

نکات امنیتی برای برنامه نویسان ASP.NET

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

در این مطلب کوتاه با نکاتی آشنا خواهید شد که اگر آن ها را بکار ببرید می توانید تا حدی امنیت وب اپلیکیشن های خود را تامین کنید.

ASP.NET Security Tips

1) داده های ورودی کاربران را اعتبارسنجی کنید

قانون اول : هرگز به کاربران خود اعتماد نکنید! همیشه امکان اشتباه وارد کردن داده ها توسط کاربران وجود دارد. شما باید همیشه و درهر حال تمام داده های ورودی توسط کاربران را Validate کنید و اجازه ورود اطلاعات نادرست و دور از انتظار را به سیستم ندهید. یک کاربر ممکن است آن قدر ناوارد و خنگ باشد که اطلاعات را نادرست و ناقص وارد کند و یا آن قدر حرفه ای باشد که به جای اطلاعات، کدهای مخرب به سیستم تزریق کند. در تمام فرم های آنلاین وب سایت خود از کنترل های Validation برای اطمینان از درستی داده های وارد شده توسط کاربر استفاده کنید. اگر داده های ورودی کاربر معتبر باشند، امکان اشتباه در سیستم به حداقل خواهد رسید.

2) اطلاعات حساس را کد کنید

قانون دوم : هر اطلاعاتی را که فکر می کنید ممکن است از آن سوء استفاده شود را کد کنید. حتماً Username و Password کاربران را کد کرده و سپس ذخیره کنید. Hash کردن رمز عبور یکی از بهترین و مطمئن ترین راه ها برای تامین امنیت رمزعبور کاربران است. برای این کار در دات نت راه حل های خوبی وجود دارد. اطلاعات حساس دیگر مثل Connection String دیتابیس خود را حتماً Encrypt کنید. در ASP.NET توصیه شده است به جای اینکه رشته اتصال دیتابیس خود را در کدهای خود بنویسید، آن را به صورت جداگانه در فایل Web.config تعریف کنید. از آن جایی که فرمت این فایل XML است و امنیت پایینی دارد، شما باید تمام اطلاعات حساس این فایل از جمله Connection String را کد کرده و سپس ذخیره کنید.

حتی توصیه می شود در برخی مواقع که کوئری استرینگ ها اطلاعات حساسی را به کاربران لو می دهند، آن ها را نیز کد کنید.

3) اطلاعات تکنیکی را از دید کاربران مخفی کنید

در برنامه های ASP.NET هنگامی که خطایی رخ می دهد که توسط برنامه هندل نشده، تمام اطلاعات تکنیکی مربوط به خطای مذکور با ذکر جزئیات و حتی خطی از برنامه که خطا در آن اتفاق افتاده است توسط کاربران قابل مشاهده است. البته این تنظیمات پیش فرض ASP.NET برای زمان توسعه در Localhost و خطایابی مناسب است که هنگام پابلیش وب اپلیکیشن بر روی اینترنت یا اینترانت باید تغییر کند. متاسفانه برخی از برنامه نویسان ناشی هنگام توزیع وب اپلیکیشن خود همان فایل web.config روی لوکال هاست خود را بدون هیچ تغییری بر روی محیط اجرایی قرار می دهند. این گونه پیغام های خطای ASP.NET معمولاً اطلاعات مناسبی در مورد آسیب پذیری های یک وب سایت در اختیار یک هکر قرار می دهد. برای حل این مشکل شما باید تمام خطاهای ممکن را هندل کنید و مقدار ویژگی customErrors در فایل web.config را برابر RemoteOnly قرار دهید.

<customErrors mode=«RemoteOnly«></customErrors>

4) حالت دیباگ را غیرفعال کنید

هنگام توسعه یک وب اپلیکیشن در ASP.NET حالت Debug به صورت پیش فرض true است. شما باید پس از توسعه و هنگام آپلود وب اپلیکشن در یک هاست اینترنتی خاصیت debug در قسمت compilation فایل web.config را برابر false قرار دهید. این کار هم کارایی برنامه تحت وب شما را بالاتر می برد و هم از نشان دادن برخی از خطاها که باعث لو رفتن کدهای شما می شود جلوگیری می کند.

5) مواظب حملات SQL Injection باشید

این نوع حملات در اکثر وب سایت های اطلاعاتی مبتنی بر دیتابیس مرسوم است. به این صورت که کاربر/هکر یک کد SQL را به برنامه شما تزریق می کند و باعث ایجاد خرابکاری می شود. با وجود خطرناک بودن و جدی بودن این نوع حمله باز هم هستند برنامه نویسانی که به این مورد توجهی ندارند. به طور مثال در یک فرم لاگین نا امن که کوئری چک کردن Username و Password شبیه به کد زیر باشد، حمله SQL Injection به راحتی امکان پذیر است.

string query = «SELECT * FROM Users WHERE username='» +
txtUsername.Text + «‹ AND password='» + txtPassword.Text + «‹»;

در این موقعیت یک فرد نسبتاً باهوش با نوشتن رشته x› or username like %x در فیلد password به راحتی می تواند فرم لاگین شما را رد کرده و خود را به عنوان یک کاربر قانونی جا بزند. برای جلوگیری از این مشکل حتماً قانون اول را رعایت کنید و به جای استفاده از مقادیر تکست باکس ها به این صورت، از کلاس SqlParameter برای مقداردهی استفاده کنید. یکی از راه های دیگر برای جلوگیری از این حمله استفاده از ORMهایی مثل LINQ  to SQL است.

6) جلوگیری از حملات Cross-site Scripting

یکی از مرسوم ترین و در دسترس ترین نوع حملات به وب سایت هاست که فرد خرابکار سعی می کند اسکریپت مخربی را به وب اپلیکیشن شما تزریق کند. به طور مثال در فرم های ورود اطلاعات کاربر خرابکار می تواند به جای وارد کردن اطلاعات صحیح، کدهای جاوا اسکریپت مخرب را وارد کند. خوشبختانه ASP.NET به صورت پیش فرض دارای یک محافظ درخواست توکار است که در اکثر مواقع جلوی این حملات را می گیرد. اما باز هم نمی توان به صورت صد در صد به آن اطمینان کرد، چون راه هایی برای دور زدن آن نیز وجود دارد. بهتر است هنگام نمایش دادن داده های ورودی کاربر، ابتدا رشته مورد نظر را با Server.HtmlEncode به یک رشته امن HTML تبدیل کنید و سپس آن را نمایش دهید. در این صورت اگر حتی کاربر اسکریپت مخربی را با موفقیت به برنامه شما تزریق کرده باشد، آن اسکریپت اجرا نخواهد شد و فقط به صورت یک رشته به نمایش در خواهد آمد.

7) سیستم لاگین خود را امن بسازید

روش مرسوم برای پیاده سازی سیستم لاگین در وب، روش استفاده از Session است. Session متغیرهایی هستند که بر روی سرور به ازای هر کاربر لاگین شده ساخته می شوند و وب اپلیکیشن با چک کردن متوالی آن در هر صفحه هویت کاربر وارد شده را شناسایی می کند. یک Session معمولاً برای یک مدت زمان محدودی (مثلاً 20 دقیقه) اعتبار دارد و پس از آن کاربر دوباره باید به سیستم لاگین کند. در ASP.NET بهترین و امن ترین راه برای پیاده سازی لاگین استفاده از ویژگی خوب تشخیص هویت خود دات نت است. منظورم همان FormsAuthentication است که شما با آن می توانید یک سیستم لاگین بسیار امن پیاده سازی کنید. به هیچ وجه از کوکی ها برای پیاده سازی یک سیستم لاگین استفاده نکنید! از کوکی ها فقط برای پیاده سازی قابلیت «Remember Me» استفاده کنید آن هم با کلی احتیاط! یک نکته دیگر در مورد لاگین این است که تعداد تلاش های ناموفق یک کاربر برای لاگین را محدود کنید. مثلاً بعد از 5 بار وارد کردن اشتباه رمز عبور به او تا یک مدت اجازه ورود ندهید!

8 ) در مواقع لازم از تصاویر امنیتی استفاده کنید

این نکته را در اکثر وب سایت ها و هنگام ثبت نام دیده اید. مثلاً گوگل در هنگام ثبت نام شما را مجبور می کند که یکسری حروف عجیب و غریب را که در عکس می بینید درون تکست باکس وارد کنید تا بفهمد شما آدم هستید! شما هم سعی کنید در اکثر فرم هایی که نیاز به لاگین کاربر ندارند (مثل فرم ثبت نام یا فرم تماس) از این تصاویر استفاده کنید.

9) امنیت دیتابیس خود را تامین کنید

معمولاً دیتابیس های SQL Server دارای امنیت بسیار خوبی هستند اما اگر از دیتابیس Access برای ذخیره اطلاعات استفاده می کنید حتماً 1- روی فایل آن پسورد بذارید 2- مطمئن شوید که فولدری که فایل دیتابیس در آن قرار دارد توسط کاربران قابل دسترسی نباشد 3- حتماً اطلاعات داخل آن را کدگذاری کنید.

farasun.wordpress.com

مطالب مرتبط :

مصائب فلش! یا چرا اپل از فلش استفاده نمی کند؟

فلشFlash نام بزرگی در دنیای اینترنت و PCهاست که این روزها آینده و حیاتش به چالش جدی کشیده شده است. با سر و صدایی که اپل با پشتیبانی نکردن از ادوبی فلش در محصولات خود از جمله iPad و iPhone راه انداخت و با ارائه HTML 5 که امکانات چند رسانه ای فوق العاده خوبی به توسعه دهندگان وب می دهد، تردید بسیار جدی ای در آینده Adobe Flash بوجود آمده است. فلش در زمان پیدایش خود یک پدیده دوست داشتنی و مدرن بود. پدیده ای که به شما اجازه می داد با کمترین دانش و کمترین زحمت انیمیشن های اینتراکتیو بسیازید و از آن ها در وب استفاده کنید. مشکل فلش شاید این بود که مثل تکنولوژی های دیگر زود به زود تغییر نکرد و همان رویه اولیه خود را دنبال کرد تا به امروز که دیگر جوابگوی نیازهای توسعه دهندگان وب و حتی کاربران اینترنت نیست.

مشکلاتی که در نوشته به آن ها اشاره شده، مشکلاتی نیستند که در این چند ماه اخیر بوجود آمده باشند. این ها مشکلاتی هستند که از ابتدا در مورد استفاده فایل های فلش در وب مطرح بودند.

موتورهای جستجو فلش را دوست ندارند!

یکی از مهمرین دلایل برای عدم استفاده از فلش، ایندکس نشدن محتویات فایل های فلش در موتورهای جستجوست. اطلاعات مخفی شده در فایل های گرافیکی مثل فایل های فلش برای موتورهای جستجو قابل دسترسی نیستند، هرچند موتورهای جستجوی پیشرفته ای مثل گوگل سعی می کنند محتویات فایل های فلش را نیز ایندکس کنند، اما این عمل با محدودیت های بسیار زیادی مواجه است. وب سایت هایی که کاملاً با فلش ساخته شده اند وضع بسیار نامناسبی از نظر SEO دارند. تگ های متا در فایل های HTML از مهمترین عناصر مربوط به SEO هستند که در وب سایت های Full Flash قابل استفاده نیستند. فایل های فلش معمولاً اطلاعات متنی بسیار کمی ارائه می کنند و اکثراً برای تاثیر گذاری بیشتر فایل های عکس و فیلم را به نمایش می گذارند. گوگل چند وقت پیش از بهبود جستجوی text در فایل های فلش خبر داد و ایندکس کردن اطلاعات عکس، فیلم و انیمیشن بکار رفته در یک فایل فلش را منتفی دانست.

فلش استانداردهای Usability وب را رعایت نمی کند

سایت های فلش زیبا و چشم نواز هستند. شاید برای یک کاربر عادی استفاده از یک سایت فلش حتی راحت تر از استفاده از یک وب سایت معمولی ساخته شده با HTML و CSS باشد. اما محدویدت هایی که فلش برای یک کاربر ایجاد می کند استانداردهای قابل استفاده بودن وب را زیر پا می گذارد. به طور مثال در یک وب سایت فول فلش سعی کنید از دکمه Back مرورگر خود استفاده کنید، متاسفانه کار نمی کند. سعی کنید قسمتی از متن را انتخاب و کپی کنید، یا سعی کنید با استفاده از امکانات مرورگر خود اندازه متن را بزرگ و کوچک کنید! متاسفانه هیچکدام از این امکانات کار نمی کنند. اصلاً یک نکته مهم دیگر : در وب سایت های فول فلش شما نمی توانید استایل صفحه را با استفاده از ابزارهایی مثل Stylish بر اساس سلیقه خود تغییر دهید!

کاربرانی که فلش ندارند!

یکی از اساسی ترین خصوصیات یک وب سایت استاندارد، اجرای آن در تمامی مرورگرها و سیستم عامل های موجود است. هر چند اکثر کاربران اینترنت فلش را نصب دارند، اما نمی توان تضمین کرد که آن ها نسخه مناسب را داشته باشند. به طور مثل در اکثر مواقع نسخه لینوکس فلش ماه ها بعد از نسخه ویندوز فلش منتشر می شود. به این اضافه کنید کاربرانی را که برای فرار از تبلیغات فلش و استفاده بیجا از پهنای باند اینترنت خود به کلی فلش را در مرورگر خود غیر فعال کرده اند!

دلایل اپل برای استفاده نکردن از فلش

استیو جابز در نوشته ای دلایل خود را برای عدم استفاده از فلش در محصولات اپل بیان کرده است. اولین دلیل و از نظر من مهمترین دلیل برای استفاده نکردن از فلش، بسته بودن فلش نسبت به سایر تکنولوژی های وب و مخصوصاً HTML و CSS است. استانداردهای فلش را فقط ادوبی تعیین می کند و تمام آینده آن در دست این شرکت است. این در حالی است که استانداردهای مهم وب مثل HTML، CSS و JavaScript همگی باز هستند. چرا باید این استاندرادهای باز را کنار بگذاریم و از محصول بسته شرکت ادوبی استفاده کنیم!؟

فلش مشکلات امنیتی زیادی دارد. قابلیت اطمینان فلش به خاطر ذات آسیب پذیر بودن فرمتش نسبت به HTML بسیار پایین است. به گفته استیو جابز فلش بر روی دستگاه های موبایل کارایی خوبی ندارد، مصرف باطری زیادی دارد و با قابلیت های لمسی مشکل دارد.

استیو جابز در نوشته خود مهمترین دلیل استفاده نکردن اپل از فلش را عدم علاقه اپل به وارد شدن پلت فرم نرم افزاری یک شرکت دیگر به حوزه محصولات خود عنوان کرده است.

به هر حال با ارائه HTML5 و CSS3 باید منتظر کم رنگ تر شدن هرچه بیشتر نقش Adobe Flash در توسعه وب باشیم. شرکت مایکروسافت نیز همانند گوگل و اپل در مرورگر خود اینترنت اکسپلورر 9 از HTML5 پشتیبانی خواهد کرد و این یعنی آینده وب را تکنولوژی های بازی همچون HTML, CSS و JavaScript خواهند ساخت.

دلایل دیگر برای عدم استفاده از فلش

در وب سایت های فول فلش معمولاً URLهای یکتایی برای هر صفحه وجود ندارد. این مسئله باعث می شود کاربران نتوانند یک صفحه خاص از سایت را بوکمارک کنند و موتورهای جستجو نیز قادر به تفکیک صفحات مختلف از هم نخواهند بود.

کنسرسیوم جهانی وب، تگ جایگذاری فایل فلش درون یک فایل HTML را معتبر نمی داند. در صورتی که از یک فایل فلش در وب سایت خود استفاده کنید، کد شما استاندارد نخواهد بود.

همانطور که در متن اشاره شد، فایل های فلش معمولاً حجم زیادی دارند و این باعث استفاده بیشتر از پهنای باند اینترت کاربران و در نتیجه عدم رضایت آن ها می شود.

نسخه نهایی ASP.NET MVC 2 منتشر شد!

تقریباً دو روز پیش نسخه نهایی فریم ورک کدباز ASP.NET MVC 2 برای دریافت عمومی منتشر شد. این نسخه بهبودهای زیادی پیدا کرده و ویژگی های جدید بیشتری در اختیار توسعه دهندگان وب قرار می دهد. این نسخه با ASP.NET MVC 1.0 کاملاً سازگار است و می تواند در کنار آن نصب شود و به صورت side by side کار کند. این یعنی شما می توانید ASP.NET MVC 2 را نصب کنید در حالی که هنوز هم از ASP.NET MVC 1.0 برای توسعه پروژه های خود استفاده می کنید. در ضمن تمام دانش، کدها و اکستنشن هایی که در ASP.NET MVC 1.0 دارید را می توانید در این نسخه به کار ببندید.

یکی از قابلیت های جدید و کاربردی این نسخه که با نام Areas شناخته می شود به شما کمک می کند تا پروژه های بزرگ را به چندین بخش کوچک تر تقسیم کنید تا بتوانید پیچیدگی پروژه را ساماندهی کنید. هر بخش یا Area معمولاً قسمت جداگانه ای از یک وب اپلیکیشن است و برای دسته بندی viewها و کنترلرها به کار می روند.

پشتیبانی از کنترلرهای غیرهمزمان در این نسخه به کنترلرها اجازه می دهد که درخواست ها را به صورت غیر همزمان پردازش کنند. این قابلیت می تواند کارایی وب اپلیکیشن هایی که با درخواست های خیلی زیاد کار می کنند را بسیار بالا ببرد.

از دیگر قابلیت های جدید این نسخه می توان به بهبودهای اعتبار سنجی مدل در سرور ساید و کلاینت ساید، پشتیبانی از مقدار پیش فرض در پارامترهای یک اکشن، کلاس های helper جدید و بهبودهای API اشاره کرد.

من قبلاً در یک مطلب کوتاه در مورد نحوه آپگیرد کردن از نسخه 1 به نسخه 2 فریم ورک ASP.NET MVC نوشته بودم. نسخه 2 را می توانید برای ویژوال استادیو 2008 و ASP.NET 3.5 از اینجا دانلود کنید. ویژوال استادیو 2010 در انتشار نهایی به صورت توکار ASP.NET MVC 2 را همراه خواهد داشت و دیگر شما نیازی به دانلود و نصب دستی این فریم ورک نخواهید داشت. در ویژوال استادیو 2010 برای آپگرید کردن پروژه هایی که با نسخه 1 نوشته شده اند به نسخه 2 یک ابزار ویزارد نیز در نظر گرفته شده است تا دیگر مجبور به استفاده از روش دستی برای آپگیرد کردن نباشید.

https://farasun.wordpress.com

سایت رسمی ASP.NET MVC | این پروژه در کدپلکس

PHP برای برنامه نویسان ASP.NET – قسمت دوم

قسمت اول را در اینجا بخوانید.

پردازش فرم ها

ASP.NET تمام سعی خود را کرده تا برنامه نویس را درگیر پردازش فرم های HTML نکند. در واقع یک برنامه نویس ASP.NET ممکن است با فرم های HTML آشنایی نداشته باشد اما در هر صفحه وبی که ایجاد می کند از آن ها استفاده کند. ASP.NET به صورت پیش فرض در هر یک از صفحات aspx یک فرم HTML قرار می دهد تا برنامه نویس بتواند با داده های ورودی کاربر کار کند. شاید در ASP.NET احتیاجی به دانستن نحوه ایجاد و کارکرد فرم های HTML نداشتید اما پردازش فرم های وب یکی از ملزومات اساسی PHP است.

فرم وب

اطلاعات فرم های HTML به دو روش Get و Post فرستاده و دریافت می شوند. در ASP.NET شاید این روش ها از دید برنامه نویس پنهان بمانند اما در PHP این برنامه نویسان هستند که باید در مورد استفاده از این روش ها در شرایط مختلف تصمیم گیری کنند. اطلاعات فرم ها در ASP.NET همیشه به خود صفحه فرستاده می شوند و به صورت پیش فرض از متد post برای این کار استفاده می کند. هنگامی که اطلاعات فرم به سرور برای پردازش فرستاده می شود و دوباره به صفحه باز می گردد، یک PostBack اتفاق می افتد. برای اینکه از متد get استفاده کنیم می توانیم یکسری پارامتر به صفحه مورد نظر خود بفرستیم و در صفحه مقصد با استفاده از Request.QueryString (که آرایه ای است از پارامترهای فرستاده شده توسط صفحه مبدا) اطلاعات فرستاده شده را بخوانیم.

اما در PHP این پروسه تفاوت زیادی دارد. شما باید خودتان در مورد متد ارسال اطلاعات تصمیم گیری کنید. در PHP اطلاعاتی که به روش get فرستاده می شوند را می توان در آرایه $_GET و اطلاعاتی که به روش post فرستاده می شوند را در آرایه $_POST پیدا کرد.

روش Post

همانطور که گفتم ASP.NET از این روش به صورت پیش فرض برای پردازش فرم ها استفاده می کند. در PHP شما می توانید با استفاده از متغیر سراسری $_POST به اطلاعات فرستاده شده توسط این روش دستیابی پیدا کنید. یک مثال کوچک می تواند مسئله را روشن تر کند :

<form action=«welcome.php» method=«post»>
Name: <input type=«text» name=«fname» />
<input type=«submit» name=«btnSubmit» />
</form>

یک فرم ساده HTML ساختیم که اطلاعات خودش (فیلد نام) را به صفحه welcome.php با روش post می فرستد. حالا فایل welcome.php را به صورت زیر می سازیم :

Welcome <?php echo $_POST[«fname»]; ?>!<br />

با این یک خط کد ساده اطلاعات فیلد fname را که در صفحه قبل قرار داشت، خواندیم. PHP در روش Post به صورت خودکار فیلدهای فرم را شناسایی می کند. اطلاعات ارسالی توسط این روش برای دیگران قابل رویت نیست و محدودیتی در حجم اطلاعات ارسالی نداریم. البته به صورت پیش فرض ماکزیمم حجم اطلاعات ارسالی در روش Post در PHP برابر با 8 مگابایت است که این مقدار را می توانید در فایل php.ini و با تغییر ثابت post_max_size در این فایل تغییر دهید.

یکی از کاربردهای مهم روش post که در ASP.NET هم استفاده می شود، اعتبار سنجی سمت سرور یا Server Side Validation است. به این صورت که اطلاعات فرم را به جای اینکه به یک صفحه دیگر بفرستید به خود صفحه می فرستید تا عمل اعتبار سنجی انجام شود. سپس اگر اطلاعات ورودی خطایی داشته باشد، در همین صفحه از کاربر می خواهید که اطلاعات را صحیح وارد کند. این روش برای اعتبارسنجی سمت سرور اطلاعاتی که می خواهند در دیتابیس ذخیره شوند بسیار مرسوم است.

روش Get

بر خلاف متد post، اطلاعاتی که با این روش فرستاده می شوند توسط همه قابل رویت هستند. کاربران این اطلاعات را در نوار آدرس مرورگر خود می بینند و برای اطلاعات ارسالی محدودیت حجمی داریم. متغیر $_GET در PHP شامل اطلاعات فرمی است که با متد get ارسال شده است. به مثال زیر توجه کنید :

<form action=«welcome.php» method=«get»>
Name: <input type=«text» name=«fname» />
<input type=«submit» />
</form>

برای نشان دادن اطلاعاتی که از این فرم به فایل welcome.php با استفاده از روش get فرستاده می شود، فایل welcome.php را به صورت زیر می سازیم :

Welcome <?php echo $_GET[«fname»]; ?>.<br />

هنگامی که کاربر روی دکمه submit فرم کلیک کند، نوار آدرس مرورگر او آدرسی شبیه به آدرس زیر را نشان خواهد داد :

http://yoursitename.com/welcome.php?name=value

این همان QueryString خودمان در ASP.NET است! در  URL بالا قسمتی که آبی است و بعد از علامت سئوال قرار گرفته را Query String می گویند. ما در ASP.NET برای دسترسی به مقدار پارامتر name در URL بالا از دستور زیر استفاده می کنیم :

Request.QueryString[«fname»]

یکی از مزایای استفاده از روش Get این است که کاربر می تواند صفحه را بوکمارک کند، چون دارای یک آدرس مشخص است. هنگامی که از متد get در PHP استفاده می کنید باید به این نکته توجه کنید که تمام فیلد ها به علاوه مقادیر آن ها در نوار آدرس مرورگر قابل مشاهده هستند، پس نباید برای ارسال اطلاعات حساس مثل رمز عبور از این روش استفاده کنید.

نکات تکمیلی

ما در ASP.NET قبل از اینکه از مقادیر موجود در QueryString استفاده کنیم، چک می کنیم که مقداردهی شده باشد، یعنی null نباشد. برای این کار از کدی شبیه به زیر بهره می بریم :

if (Request.QueryString[«fname»] != null)
//do something

معادل شرط بالا در PHP کدی شبیه به کد زیر است :

if (isset($_GET[«fname»]){
//do something
}

یعنی اگر فیلد fname مقداردهی شده بود عمل مورد نظر را روی آن انجام بده.

farasun.wordpress.com

در مطلب بعد با کوکی ها و نحوه استفاده از آن ها در PHP آشنا خواهید شد. برای اینکه مطالب بعدی را از دست ندهید مشترک فراسان شوید! چطور مشترک شوید؟

farasun.wordpress.com

این مطلب ادامه دارد…

پ.ن : از این به بعد برای تماس با من از این فرم استفاده کنید!

PHP برای برنامه نویسان ASP.NET – قسمت اول

برخی مواقع ممکن است یک برنامه نویس ASP.NET احتیاج به استفاده از PHP پیدا کند یا بخواهد ASP.NET را کنار بگذارد و به دنیای PHP کوچ کند! هرچند این اتفاق در مورد برنامه نویسان ایرانی کمتر می افتد زیرا تمام ابزارهای تکنولوژی گرانی مثل ASP.NET به صورت رایگان در اختیار آن هاست. ممکن است وب سرور مشتری شما لینوکس باشد و مونو هم روی آن نصب نباشد و شما برای اینکه مشتری خود را از دست ندهید می توانید از PHP استفاده کنید. حتی اگر هیچ گاه نیازی به PHP هم پیدا نکنید، دانستن دستورات معادل ASP.NET در PHP بهتر از ندانستن آن است. اگر شما هم یک برنامه نویس ASP.NET هستید یا حتی برنامه نویس PHP هستید، این مطلب می تواند دید خوبی در مورد تکنولوژی که با آن آشنایی ندارید به شما بدهد.

PHP for ASP.NET Developers

همانطور که می دانید ASP.NET یک زبان نیست، بلکه یک فریم ورک رایگان و مجموعه ای از مولفه های نرم افزاری است که شما می توانید به کمک آن وب اپلیکیشن هایی را با زبان هایی مثل سی شارپ و ویژوال بیسیک بنویسید. برنامه های ASP.NET ابتدا کامپایل می شوند و سپس روی سرور اجرا می شوند. PHP یک زبان اسکریپت نویسی کدباز است که دارای کتابخانه های مختلفی برای انجام دادن کارهای مورد نیاز در وب است. کدهای PHP معمولاً با کدهای HTML ترکیب می شوند و پس از تفسیر توسط مفسر PHP به مرورگر فرستاده می شود.

سینتاکس PHP

PHP از خانواده زبان های C است، قواعد نوشتن دستورات PHP کاملاً شبیه به زبان C است. به طور مثال باید در آخر هر دستور از علامت ; استفاده کنید. اگر با سی شارپ آشنا باشید برای یادگیری سینتاکس PHP مشکلی نخواهید داشت. به یک مثال کوچک و ساده از PHP توجه کنید :

<html>
<head>
<title>
PHP Test</title>
</head>
<body>

<?php echo ‹<p>Hello World</p>›; ?>
</body>
</html>

همانطور که گفتم می توان دستورات PHP را داخل یک فایل HTML نوشت. ما در ASP.NET وقتی بخواهیم در لابه لای کدهای HTML برنامه نویسی کنیم از تگ های <% %> استفاده می کنیم. در PHP هم برای اینکه بتوانیم به مفسر بفهمانیم که این دستورات را برای ما تفسیر کند، بایستی کدهای خود را در تگ های <?php و <? قرار دهیم. دستور echo در اینجا همان کار Response.Write را انجام می دهد. در حقیقت دستور معادل آن یک خط کد PHP در ASP.NET دستور زیر است :

Response.Write(«<p>Hello World</p>»);

متغییر ها در PHP

برای تعریف یک متغیر در PHP یک علامت $ در ابتدای نام متغیر می گذاریم و سپس آن را برابر مقداری که می خواهیم در آن متغیر ذخیره شود قرار می دهیم. برخلاف زبان های ASP.NET که حتماً باید نوع یک متغیر را در هنگام تعریف آن صریحاً اعلام کنید، در PHP این کار لازم نیست و خود مفسر با توجه به مقداری که درون متغیر می ریزید نوع آن را تعیین می کند. به مثال زیر توجه کنید :

<?php
$a = «iman»; // string
$b = 22; // integer
$c = TRUE; // boolean
$d = 24.895; //float
?>

فکر نمیکنم نیازی به توضیح اضافی باشد. امیدوارم این را بدانید که کلمات بعد از // به عنوان توضیحات نوشته شده اند! البته PHP دارای انواع دیگری نیز هست که ما در این مطب به آن ها نخواهیم پرداخت. فقط برای استفاده از یک متغیر باز هم باید نام آن را با $ همراه سازید. برای مثال برای چاپ مقدار متغیر a که در بالا تعریف کردیم باید به صورت زیر عمل کنیم :

echo ‹my name is $a›;

همچنین برای تعریف یک ثابت در PHP از سینتاکس زیر پیروی کنید :

define(«CONST_NAME», «farasun»);

تعریف توابع در PHP

می خواهیم متد زیر که به زبان سی شارپ است را به یک تابع PHP تبدیل کنیم :

private bool Example(int arg)
{
if (arg == 10) return true;
else return false;
}

همانطور که گفتیم در PHP هنگام تعریف متغیر نوع آن را مشخص نمی کنیم. در تعریف تابع نیز احتیاجی به تعیین نوع برگشتی تابع یا نوع آرگومان های آن نداریم. تابع متناظر با متد بالا در زبان PHP چنین چیزی می شود :

function Example($arg)
{
if ($arg == 10) { return TRUE; }
else { return false; }
}

مشاهده می کنید که در اینجا دیگر خبری از کلمات کلیدی private یا bool نیست! در ASP.NET هر صفحه خودش یک کلاس است اما در PHP چون به صورت پیش فرض کلاسی وجود ندارد پس خبری از private یا public بودن تابع نیست. برای صدا زدن تابع نیز کافیست نام آن را همراه با پارامترهای آن صدا بزنیم. همانند سی شارپ یا ویژوال بیسیک خودمان!

جایگزینی برای Response.Redirect

ما در ASP.NET برای فرستادن کاربر به یک صفحه وب دیگر از Response.Redirect استفاده می کنیم که در حقیفت یک درخواست به مرورگر کاربر برای تغییر صفحه وب می فرستد. در PHP تابعی به نام header وجود دار که کی تواند یک هدر HTTP را به مرورگر کاربر بفرستد. با کد PHP زیر می توانیم کاربر را به سایت گوگل بفرستیم :

header(«location: http://www.google.com&raquo;);

جایگزینی برای Request.Url

برای بدست آوردن آدرس URL صفحه وب جاری در ASP.NET از Request.Url استفاده می کنیم. در PHP می توانیم این آدرس را با روش زیر بسازیم :

$host = $_SERVER[‹SERVER_NAME›];
$uri = $_SERVER[‹PHP_SELF›];
echo «$host$uri»;

متغیر host آدرس سایت (به طور مثال http://emaple.com) و متغیر uri آدرس فایل (به طور مثال directory/test.php) را ذخیره می کند. سپس در خط سوم این دو به هم می چسبند و آدرس کامل صفحه را چاپ می کنند.

نکات تکمیلی

در این مطلب کوتاه نمی توان تمام جایگزین ها را معرفی کرد. اکثر جایگزین های پراپرتی ها و متدهای شیء Request را می توانید در متغیر رزور شده $_SERVER پیدا کنید. مستندات کامل این متغیر را در اینجا بخوانید. به علت شباهت زیاد PHP با زبان های خانواده C در اینجا از آموزش ساختارهای کنترلی این زبان مانند if و switch و حلقه های for و while اجتناب کردیم. اگر سی شارپ بلد باشید مطمئن باشید این دستورات PHP را نیز بلد خواهید بود.

در مطالب بعدی به مباحث مورد نیاز دیگر مانند پردازش فرم های وب، کوکی ها و مدیریت Sessionها و دسترسی به داده های یک دیتابیس در PHP خواهیم پرداخت. برای اینکه این مطالب را از دست ندهید، می توانید مشترک فراسان شوید! چطور مشترک شوید؟

farasun.wordpress.com

این مطلب ادامه دارد…

بررسی بهترین ویرایشگرهای متن آنلاین برای توسعه دهندگان وب

یکی از تصمیمات مهمی که هر توسعه دهنده وب هنگام ایجاد یک وب سایت خواهد گرفت، همانا انتخاب یک ویرایشگر متن مناسب است. بسیاری از سیستم های مدیریت محتوای تحت وب، برای تولید محتوای متنی، ویرایشگرهایی با امکانات قالب بندی متون غنی (Rich Text) به کاربرانشان ارائه می دهند. نمونه های این ویرایشگرها را در هنگام نوشتن مطلب جدید در وبلاگ هایتان دیده اید. به طور مثال وردپرس، برای ایجاد مطلب یا صفحه، یک ویرایشگر با امکانات قالب بندی متن، درج تصویر و لینک در متن به شما می دهد.

rte

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

TinyMCE

ویرایشگر اوپن سورس و قدرتمندی است که در تمامی مرورگرهای استاندارد فایرفاکس، اپرا، اینترنت اکسپلورر، سافاری و کروم به خوبی کار می کند. TinyMCE به راحتی و با نوشتن دو سه خط کد در صفحه مورد نظر شما جای می گیرد و به کاربران شما اجازه استفاده از یک ویرایشگر غنی و قدرتمند را می دهد. از مزایای این ویرایشگر می توان به سرعت لود مناسب، سازگاری با AJAX، قابلیت چند زبانگی و رایگان بودن اشاره کرد. TinyMCE دارای اجتماع کاربری، راهنما و مستندات بسیار خوبی است. بسیاری از سیستم های مدیریت محتوا مثل ورپرس از این ویرایشگر قدرتمند استفاده می کنند.

FCKeditor

ویرایشگریست که سعی می کند بیشتر امکانات ویرایشگرهای تحت دسکتاپ مانند MS Word را در وب پیاده سازی کند. سبک است و برای استفاده از آن احتیاجی به نصب در کامپیوتر کلاینت ندارد. این ها جملاتی است که در وب سایت رسمی FCKeditor در وصف آن نوشته شده اند. این ویرایشگر قدرتمند با تمامی مرورگرهای استاندارد سازگار است و با بیشنر زبان های برنامه نویسی تحت وب مجتمع می شود. امکانات مناسب برای قالب بندی متن، پشتیبانی از CSS، آپلود تصاویر، مرور فایل های روی سرور، ایجاد جدول، درج فرم فیلد، منوی راست کلیک (Context Menu) اختصاصی، پوسته اختصاصی، تشخیص خودکار مرورگر کاربر و خروجی HTML مطلوب از قابلیت های این ویرایشگر هستند.

Yahoo! UI Editor

یاهو یکی از پیشرو ترین شرکت های وب در زمینه تولید ابزارهای مربوط به توسعه دهندگان وب است. کنترل Rich Text Editor یاهو یکی از بهترین و قدرتمند ترین راه حل ها در این زمینه است. از امکانات این ویرایشگر میتوان به مجوز اوپن سورس، قابلیت های خوب قالب بندی متون، پشتیبانی از مرورگرهای مختلف، تنظیمات قابل انعطاف، پشتیبانی از قابلیت کشیدن و رها کردن و روش شیء گرا در برنامه نویسی آن اشاره کرد. این کنترل جزئی از پروژه کتابخانه YUI شرکت یاهو! است.

FreeRichTextEditor

یک ویرایشگر قدرتمند و مبتنی بر جاوا اسکریپت که با اضافه کردن فقط سه خط کد به صفحات خودتان می توانید به کاربران خودتان لذت استفاده از یک ویرایشگر زیبا و قوی را بدهید. ظاهر این ویرایشگر شبیه به MS Word ساخته شده که کاربران با آن احساس نا آشنایی نکنند. تقریباً تمام امکاناتی که از یک ویرایشگر تحت وب انتظار دارید، FreeRichTextEditor دارای آن می باشد.

NiceEdit

یک ویرایشگر بسیار سبک، کم حجم و با نصب آسان است که روی تمام مرورگرها و سیستم عامل های موجود به خوبی کار می کند. هر چند مانند TinyMCE و FCKeditor قوی نیست و امکانات کمتری دارد اما برای کسانی که یک ویرایشگر ساده و بدون دردسر نیاز دارند بسیار مناسب است. این ویرایشگر سبک فقط 35کیلوبایت حجم دارد و فقط از دو فایل (js و icon) تشکیل شده است. این را با تعداد فایل های دیگر ویرایشگر ها مقایسه کنید. پشتیبانی از متد HTTP Post و AJAX برای ذخیره متن خروجی، کم حجم بودن، اسفاده آسان هم برای برنامه نویسان و هم برای کاربران نهایی، تنظیمات قابل انعطاف و پشتیبانی از تمامی مرورگرهای استاندارد از مزایای استفاده از NiceEdit هستند.

FreeTextBox

پر استفاده ترین ویرایشگر متن در دنیای ASP.NET است. بسیاری از وب سایت های مبتنی بر تکنولوژی ASP.NET از FreeTextBox به عنوان ویرایشگر HTML استفاده می کنند. کاملاً با IE و فایرفاکس سازگار است و امکانات خوبی به کاربر نهایی جهت قالب بندی متن می دهد. نسخه های اخیر این ویرایشگر روی پلت فرم مونو هم اجرا می شود.

RTE ASP.NET Control

اگر شما هم مثل من یک برنامه نویس ASP.NET هستید، حتماً با User Controlها آشنایی دارید. هدف این پروژه در کدپلکس جمع آوری تمامی امکانات یک ویرایشگر متن غنی در یک کنترل ASP.NET است. فایل dll این ویرایشگر را به شاخه bin پروژه خود اضافه کنید و به راحتی در هر صفحه ای که خواستید از آن استفاده کنید. متاسفانه کیفیت خروجی این کنترل هنوز به سطح مطلوبی نرسیده و به جز IE و فایرفاکس، از مرورگر دیگری پشتیبانی نمی کند.

Silverlight RichTextEditor

همانطور که از عنوان این ویرایشگر پیداست، یک ویرایشگر غنی برای سیلورلایت است. اوپن سورس است و با سیلورلایت نسخه 2 سازگاری دارد. متاسفانه در حال حاضر توسعه این پروژه تا اطلاع بعدی متوقف شده است.

farasun.wordpress.com

مشترک فید فراسان شوید! نمی دانید فید چیست!؟

مطالب مرتبط :