چگونگی بازنویسی آدرس ها (UrlRewriting)

توسط : محمد علي محموديار

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


کار UrlRewriting تبدیل یک آدرس اینترنتی واضح و با معنا به یک آدرس واقعی دارای Query String جهت تفسیر موتور Asp.net است. دو آدرس زیر را در نظر بگیرید :

http://aspcode.ir/article.aspx?id=4&type=print

http://aspcode.ir/article-4-print.html

یقینا" آدرس دوم با معنی تر از آدرس اول است.در ضمن تا حدودی امکان هک شدن سایت از طریق تزریق عبارات Sql را کاهش می دهد. اجازه دهید ابزار های موجود برای UrlRewriting را بررسی کنیم.

بعد از ظهور Asp.net 2.0 خبر پشتیبانی استاندارد این تکنولوژی از UrlRewriting بسیار جالب توجه بود. برای این منظور در Asp.net 2.0 تنها کافیست مقداری تغییر در Web.Config دهید :

 
     
              mappedUrl="~/show.aspx?id=5" />

دقت فرمایید تنظیمات فوق متعلق به شاخه می باشد و باید در این بخش از Web.Config تعریف شود. در مثال بالا url آدرسی است که کاربر مشاهده می کند و mappedUrl آدرس حقیقی ماست. اما همانطور که از ظواهر امر پیداست این روال کاری، تنها برای مواقعی مفید خواهد بود که تعداد دفعات استفاده محدود باشد و در صورتی که تعداد آدرس ها بالا باشد ، مدیریت آنها بسیار کار مشکل و زمانبری خواهد بود.
برای حل این مشکل ابزار های دیگری در دسترس برنامه نویسان قرار گرفته است. یکی از بهترین ابزار ها را می توان در سایت www.UrlRewriting.net یافت. جهت استفاده از این ابزار که Open Source هم می باشد ، می توانید مستندات آن و تمام آنچه که نیاز دارید از آدرس فوق دانلود کنید.
هر چند که مستندات و مطالب ارائه شده در سایت فوق کاملا" جامع است ، ولی در ادامه این مقاله، توجه شما را به مثال هایی از UrlRewriting در Asp.net جلب می کنم.
ابتدا فایل ضمیمه مقاله را دریافت کنید و Intelligencia.UrlRewriter.dll را به پوشه Bin پروژه خود انتقال دهید. حال مراحل زیر را جهت بازخوانی یک آدرس ثابت دنبال کنید :

فایل Global.asax را باز و
رویداد Application_BeginRequest را بصورت زیر کد نویسی می کنیم. همانطور که از نام این رویداد پیداست زمانی کد اجرا می شود که درخواستی به سمت موتور Asp.net ارسال شود.

if (Request.Url.ToString().Contains("show.htm"))
{
      Context.RewritePath("show.aspx");
}

در این مثال محتوای صفحه ای با نام show.htm که بصورت مجازی ایجاد شده است و وجود خارجی ندارد از صفحه ای دیگر با نام show.aspx خوانده می شود.











سپس فایل web.config را باز و محتوای آن را به صورت زیر تنظیم نمایید :

لطفا" به محل قرار گرفتن تغییرات دقت ویژه ای داشته باشید :

داخل تگ قرار گیرد.
داخل تگ قرار گیرد.
:
داخل تگ و خارج و بعد از تگ قرار گیرد.
توجه فرمایید کد کامل برنامه را نیز می توانید در انتهای برنامه دانلود نمایید.
مخفی کردن Query String :
شاید به ذهن شما رسیده باشد که چگونه می توان آدرس های مجازی
دارای Query String را نیز بازنویسی کنیم. این کار نیز بسیار ساده است و تفاوتهای جزئی با مثال بالا دارد.
برای اینکار
دوباره فایل Global.asax را باز و رویداد Application_BeginRequest را بصورت زیر کد نویسی می کنیم :

if (Request.Url.ToString().Contains("show-(.+).htm"))
{
      Context.RewritePath("show.aspx?id=$1");
}

علامت (.+) نماینده یک متغیر است که مقدار Query String را می گیرد و $1 در خط بعدی همان مقدار (.+) و نماینده مقدار Query String در آدرس حقیقی است. همچنین تگ rewrite را بصورت زیر تغییر دهید :

در صورتی که آدرس شما دارای بیش از یک پارامتر Query String است (برای مثال سه پارامتر) بصورت زیر عمل کنید :

show-(.+)-(.+)-(.+).htm
Show.aspx?Page=$1&Id=$2&state=$3

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

دقت کنید که در بازخوانی
آدرسهای با چندین پارامتر Query String در قسمت آدرس حقیقی قبل از & ، amp; را قرار دهید. در ضمن برای بازخوانی مقدار Query String نیاز به کد نویسی خاصی نیست و با در نظر گرفتن مثال فوق بعد از UrlRewriting با دستور زیر در صفحه show.aspx می توانیم مقدار Query String را بخوانیم :

Response.Write((string)Request.QueryString["id"]);

دانلود فایل ضمیمه | دریافت کد

(#Dynamic Themes in ASP.NET 2.0(C

مقدمه :

تم های پویا در Asp.net : Asp.net، تم های پویا را بسیار ساده می سازند. از این به بعد احتیاجی نیست به افرادی که تم های زیبا دارند، حسادت ورزید، چون شما می توانید به سرعت تم خود را داشته باشید. این مقاله به شما روش گام به گام ساخت یک تم در c# را آموزش می دهد. شما می توانید کد زیر را در وب سایت آموزشی خود آزمایش کنید .

کدها :

گام اول : پایین پوشه App_code ما یک فایل به نام Theme.cs اضافه کردیم :

گام دوم : پایین پوشه App_code ما یک کلاس Theme manager با فایلی به نام Thememanager.cs اضافه کردیم. با این کار می توانید تمام تم های موجود در پایین پوشه ی App_theme را ملاحظه کنید :

گام سوم : تم های پیش فرض مثل --> را در Web.config از Comment خارج کنید، به این دلیل که شما به آن نیازی ندارید زیرا تم پیشفرض برنامه در کلاس Base page در گام ششم مشخص خواهد شد.
گام چهارم : در Master Page تان، مثل Default.master ، یک DataSource و یک لیست Radiobutton اضافه کنید. شما می توانید از یک لیست DropDown در صورت تمایل استفاده کنید.

گام پنجم : در Master page code-behind، مثل Defualt.master.cs متدهای زیر را اضافه کنید.

گام ششم : کلاس BasePage را زیر App_code اضافه کرده، و تم پیش فرض را تعیین کنید. که در اینجا ما از “white” استفاده کردیم.

گام هفتم : تمام صفحات را از BasePage بوسیله Dynamic Theme به ارث ببرید.


 

مترجم : فرزاد شیرزاد

تبدیل تاریخ شمسی به میلادی

عنوان : تبدیل تاریخ شمسی به میلادی .
  کد:
using System.Globalization;

public string func_PersianDateFormat(DateTime date)
        {
            PersianCalendar pc = new PersianCalendar();
            StringBuilder sb = new StringBuilder();
            sb.Append(pc.GetYear(date).ToString("0000"));
            sb.Append("/");
            sb.Append(pc.GetMonth(date).ToString("00"));
            sb.Append("/");
            sb.Append(pc.GetDayOfMonth(date).ToString("00"));
            return sb.ToString();
        }

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            textBox1.Text = e.Start.ToShortDateString();
            textBox2.Text = func_PersianDateFormat(e.Start.Date);
        }

فایل(های) پيوست:
PersianDate.rar 

غیر فعال کردن و فعال کردن یک رویداد در زمان اجرا

عنوان : غیر فعال کردن و فعال کردن یک رویداد در زمان اجرا .

به طور مثال رویداد textChenge یک textBox را می توان با دستورات زیر به طور موقت غیر فعال کرد .
  کد:
private void txtText_TextChanged(object sender, EventArgs e)
        {
            MessageBox.Show("Text Changed");
        }

        private void btnEnable_Click(object sender, EventArgs e)
        {
            // add event handler
            txtText.TextChanged += new EventHandler(txtText_TextChanged);
        }

        private void btnDisable_Click(object sender, EventArgs e)
        {
            // remove event handler
            txtText.TextChanged -= new EventHandler(txtText_TextChanged);
        }


فایل(های) پيوست:
RemoveEventHandler.rar

ShutDown و Reboot و LogOff کردن کامپیوتر

عنوان : ShutDown و Reboot و LogOff کردن کامپیوتر
  کد:
private void btnLogOff_Click(object sender, EventArgs e)
        {
            // Log Off
            System.Diagnostics.Process.Start("ShutDown", "/l");
        }

        private void btnShutDown_Click(object sender, EventArgs e)
        {
            // Shutdown
            System.Diagnostics.Process.Start("ShutDown", "/s");
        }

        private void btnReboot_Click(object sender, EventArgs e)
        {
            // Reboot
            System.Diagnostics.Process.Start("ShutDown", "/r");
        }
فایل(های) پيوست:
LogOff_Shutdown_Reboot.rar 

Hibernate و StandBy کردن ویندوز

عنوان : Hibernate و StandBy کردن ویندوز .

  کد:
private void btnHibernate_Click(object sender, EventArgs e)
        {
            // Hibernate
            Application.SetSuspendState(PowerState.Hibernate, true, true);
        }

        private void btnStandBy_Click(object sender, EventArgs e)
        {
            // Standby
            Application.SetSuspendState(PowerState.Suspend, true, true);
        }

فایل(های) پيوست:
Hibernate_StandBy.rar 

افزودن برنامه به StartUp و یا حذف برنامه از آن

عنوان : افزودن برنامه به StartUp و یا حذف برنامه از آن .
  کد:
private void func_AddStartUpKey(string _name, string _path)
        {
            RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
            key.SetValue(_name, _path);
        }

        private void func_RemoveStartUpKey(string _name)
        {
            RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
            key.DeleteValue(_name, false);
        }

فایل(های) پيوست:
AddRemoveProgramToStartUp.rar 

یافتن لیست SQL Server های موجود در شبکه

عنوان : یافتن لیست SQL Server های موجود در شبکه .
  کد:
private void func_ShowSQLServerInstances()
        {
            SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
            System.Data.DataTable table = instance.GetDataSources();
            dataGridView1.DataSource = (table);
        }

فایل(های) پيوست:
SQLServerListInNetwork.rar 

انتقال مقادیر Text دو تکست باکس از طریق Drag & Drop

عنوان : انتقال مقادیر Text دو تکست باکس از طریق Drag & Drop

قبل از هر چیز باید خاصیت allow drop تکست باکس ها را true کنید
  کد:
private void txt01_MouseDown(object sender, MouseEventArgs e)
        {
            txt01.SelectAll();
            txt01.DoDragDrop(txt01.Text, DragDropEffects.Copy);
        }

        private void txt02_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.Text))
                e.Effect = DragDropEffects.Copy;
            else
                e.Effect = DragDropEffects.None;
        }

        private void txt02_DragDrop(object sender, DragEventArgs e)
        {
            txt02.Text = e.Data.GetData(DataFormats.Text).ToString();
        }


به نام رویدادها دقت کنید
برنامه پیوست شد
فایل(های) پيوست:
TextBox_DragAndDrop.rar 

مشاهده عکس ها در Windows Picture & Fax Viewer با استفاده از کدنویسی

عنوان : مشاهده عکس ها در Windows Picture & Fax Viewer با استفاده از کدنویسی
  کد:

            //Open with the 'Windows picture and fax viewer':
        System.Diagnostics.Process.Start("C:\\Windows\\system32\\rundll32.exe ",
        "C:\\Windows\\system32\\shimgvw.dll,ImageView_Fullscreen " + _filename);




نمونه برنامه پیوست شدفایل(های) پيوست:
PictureAndFaxViewer.rar 

تغییر زبان فرم های ویندوزی از فارسی به انگلیسی و از انگلیسی به فارسی

عنوان : تغییر زبان فرم های ویندوزی از فارسی به انگلیسی و از انگلیسی به فارسی .

البته می توان به زبان های دیگر هم تغییر داد .
  کد:

private void func_SetLanguagePersian()
        {
            System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("fa-IR");
            InputLanguage MyL;
            string BackL;
            MyL = InputLanguage.CurrentInputLanguage;
            MyCulture = MyL.Culture;
            BackL = MyCulture.Name;
            MyCulture = new System.Globalization.CultureInfo("fa-IR");
            InputLanguage.CurrentInputLanguage = System.Windows.Forms.InputLanguage.FromCulture(MyCulture);
        }


  کد:

private void func_SetLanguageEnglish()
        {
            System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en");
            InputLanguage MyL;
            string BackL;
            MyL = InputLanguage.CurrentInputLanguage;
            MyCulture = MyL.Culture;
            BackL = MyCulture.Name;
            MyCulture = new System.Globalization.CultureInfo("en");
            InputLanguage.CurrentInputLanguage = System.Windows.Forms.InputLanguage.FromCulture(MyCulture);
        }

فایل(های) پيوست: ChangeFormLanguage.rar 

ارسال یک مقدار از فرم فرزند به فرم پدر - در سی شارپ

برای این کار ،

در رویداد کلیک دکمه chage text در فرم اول هم کد زیر رو قرار بده :
  کد:
private void btnChange_Click(object sender, EventArgs e)
        {
            frmOption frmOption = new frmOption();
            frmOption.ShowDialog(this);
            label1.Text = _newstr;
        }



در فرم اول خودتون یه property به صورت زیر تعریف کنید ( دقت کنید که نام متغیرها رو بر حسب نیاز خودتون تغییر بدین . )

  کد:


        public string newstr
        {
            get { return _newstr; }
            set { _newstr = value; }
        }


و در فرم دوم خودتون تابعی به صورت زیر بنویسید و در رویداد کلیک دکمه set Text خودتون اونو فراخوانی کنید .

  کد:


        private void FillText()
        {
        
            ((form1)base.Owner).newstr = textbox1.textr;
            base.Close();
        }



  کد:

private void Btn_OK_Click(object sender, EventArgs e)
        {
            FillText();
        }



حالا میتونید متغیر _newstr رو در فرم اول ازش استفاده کنید و مقدار اونو به مقدار لیبل خودتون بدین .

در آخر برنامه رو هم برات ضمیمه میکنم ، احتمالا به درد میخوره .


لینک دانلود نمونه برنامه

GetChildValue.rar

تعویض یه عبارت خاص در فیلد متنی با عبارتی دیگر - دستورات اس کیو ال

ممکنه براتون پیش بیاد که لازم باشه عبارت خاصی رو در یک فیلد متنی مثلا از نوع ntext رو با یه عبارت دیگه عوض کنید . store procedure زیر این کارو براتون انجام میده .

خیلی ساده ،

فرض کنید که اسم table شما هست object و فیلدی که باید درونش عبارت تغییر کنه به اسم objectlongdesc فقط دقت کنید که جدول شما باید داری primary key باشه . حالا فرض کنید عبارت oldtext رو میخوایم با عبارت newtext عوض کنیم کافیه به شکل زیر از این sotre procedure استفاده کنید .

exec [sp_textreplace] 'Objects','objectslongdesc','ID','OldText ','NewText’

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [sp_textreplace]
    @table_name varchar (30),
    @field_name varchar (30),
    @key_name varchar (30),
    @otxt varchar (1000),
    @ntxt varchar (1000)

AS

begin tran

declare @txtlen int
set @txtlen = len(@otxt)
declare @txtlenchar as varchar(30)
set @txtlenchar=Cast(@txtlen as varchar(30))

exec('declare curs cursor
for
select ' +
    @key_name + ',
    textptr(' + @field_name + ')
from ' +
    @table_name + '
where ' +
    @field_name + '
like
    ''%' + @otxt + '%''')

open curs

exec('

declare @key int
declare @pos int
declare @ptr binary(16)
declare @nextpos int

fetch next from curs into @key, @ptr
while @@fetch_status = 0
    begin
        set @nextpos=1
        select @pos=charindex(''' + @otxt + ''', ' + @field_name + ', @nextpos) - 1
            FROM ' + @table_name + ' WHERE ' + @key_name + ' = Cast(@key as Varchar(30))

        WHILE @pos>0
            BEGIN
                updatetext ' + @table_name + '.' + @field_name + ' @ptr @pos ' + @txtlenchar + ' ''' + @ntxt + '''
          
                SET @nextpos=@pos + ' + @txtlenchar + ' + 1

                select @pos=charindex(''' + @otxt + ''', ' + @field_name + ', @nextpos) -1
                    FROM ' + @table_name + ' WHERE ' + @key_name + ' = Cast(@key as Varchar(30))
            END
        fetch next from curs into @key, @ptr
    end

')

close curs
deallocate curs

commit tran



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

پس از ساخت یک وب سایت و قرار دادن آن در اینترنت، مهمترین مسئله پیدا کردن بازدیدکننده و مشتری برای آن است. وب سایتی که بازدیدکننده نداشته باشد به هیچ دردی نمی خورد. در این روزگار هم بازدید کننده و مشتری از کجا پیدا می شود… از موتورهای جستجوی معروف مثل گوگل، یاهو و بینگ! اکثر بازدیدهای یک وب سایت را موتورهای جستجو تامین می کنند، به همین علت داشتن یک رتبه ی خوب در موتورهای جستجو یک امتیاز مهم محسوب می شود و باعث پیشرفت وب سایت شما خواهد شد. موتورهای جستجو برای ربته بندی وب سایت ها در نتایج جستجوی خود قوانین مشخصی دارند که با پیروی از این استانداردها می توانید وب سایت خود را برای موتورهای جستجو بهینه کنید. به بهینه کردن یک وب سایت برای موتورهای جستجوگر SEO یا Search Engine Optimization می گویند.

بهینه سازی برای موتورهای جستجو

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

1 ) URLهای تمیز بسیازید!

URL یک صفحه وب، اولین جایی است که یک موتور جستجو می بیند پس سعی کنید تا جایی که می توانید آدرس های شما با معنی باشند. اگر از ASP.NET MVC استفاده می کنید که هیچ! در غیر این صورت باید از تکنیک URL Rewriting برای بازنویسی آدرس های پارامتری و تبدیل آن به URLهای با معنی استفاده کنید. به طور مثال شما باید آدرسی مثل mysite.com/products.aspx?id=1 را تبدیل به mysite.com/products/1 کنید. اگر به جای اعداد از کلمات با معنی استفاده کنید که چه بهتر!

2 ) URLهای کوتاه بهتر از URLهای طولانی است

سعی کنید آدرس های تولید شده توسط وب سایت شما حداقل طول ممکن را داشته باشند. خود گوگل توصیه می کند که صفحات پویا حداکثر دارای دو پارامتر باشند. صفحاتی با آدرس شبیه به mysite.com/products.aspx?item=3&category=7&subcategory=12&show=true شانس کمتری برای ایندکس شدن نسبت به صفحاتی با یک URL تمیز و کوتاه دارند.

3 ) تا جایی که می توانید از ایجاد Postback جلوگیری کنید!

استفاده از Postback در صفحات aspx می تواند از مهمترین دلایل برای عدم ایندکس شدن بخشی از این صفحات در موتورهای جستجوگر باشد. به طور مثال فرض کنید بخشی از صفحه را در یک Panel قرار داده اید که کاربر پس از فشردن یک دکمه و ایجاد یک Postback به صفحه دستور panel1.Visible = true اجرا شده و محتویات پانل را به کاربر نمایش می دهد. این کار اشتباه شما باعث عدم ایندکس شدن بخشی از محتویات سایت شما که در پانل وجود دارد، می شود، به این دلیل که یک موتور جستجو نمی تواند لینک های یک دکمه را دنبال کند، به زبان ساده تر نمی تواند روی آن دکمه کلیک کند تا ببیند چه اتفاقی می افتد! علاوه بر این مورد، Postback باعث ساخته شدن مقداری کد جاوا اسکریپت در صفحه ما می شود که هم حجم صفحه را بالا می برد و هم اینکه این کدها به هیچ وجه ایندکس نمی شوند. راه حل استفاده از Query String برای انجام اعمالی است که می خواهید هنگام Postback انجام شوند. به طور مثال یک پارامتر به همین صفحه می فرستید و در Page_Load پارامترها را چک می کنید تا عمل مورد نظر کاربر را انجام دهید. در این صورت صفحه شما به راحتی در موتورهای جستجو ایندکس خواهد شد.

4 ) تا جایی که می توانید از کنترل Button استفاده نکنید!

در بکارگیری و استفاده از کنترل تحت سرور asp:Button دقت مضاعف! داشته باشد. این کنترل حتی اگر کدی برای آن ننویسید باعث ایجاد یک Postback می شود. موتورهای جستجوگر نمی توانند کد پشت این دکمه را اجرا کنند تا نتیجه را ایندکس کنند. سعی کنید تا جایی که امکان دارد به جای استفاده از دکمه از تگ a (لینک معمولی) و دستور Response.Redirect استفاده کنید.

5 ) همیشه Title صفحه را به صورت پویا ایجاد کنید

هنگامی که یک صفحه aspx به پروژه خود اضافه می کنید، صفحه شما هیچ Title خاصی ندارد. همانطور که می دانید تگ Title یکی از مهمترین بخش های یک صفحه وب است که از نگاه تیزبین موتورهای جستجو مخفی نمی ماند. فرض کنید شما یک عنوان مناسب برای قسمت Title تعیین کردید، اما آیا این کافیست؟ مگر قرار نیست صفحه پویای شما بر اساس درخواست کاربر محتویات مختلفی نمایش دهد؟ اگر جوابتان مثبت است پس شما باید بر اساس درخواست کاربر و محتویات صفحه، هر بار یک Title خاص را ایجاد کنید. برای این کار می توانید از کلاس HtmlTitle استفاده کنید یا تگ title صفحه خود را به شکل زیر تغییر دهید :

سپس در Page_Load کدی شبیه به کد زیر را بنویسید :

if (Request.QueryString.Count > 0)
{
mytitle.Text = "Test - " + Request.QueryString["name"];
}

6 ) به تگ Meta توجه ویژه ای داشته باشید

تگ Meta با خاصیت های name=”description”x و name=”keywords”x یکی از مهمترین تگ های مربوط به SEO هستند که اولی برای توضیح یک صفحه وب و دومی برای مشخص کردن کلمات کلیدی آن صفحه وب برای موتورهای جستجو کاربرد دارند. خزنده موتورهای جستجو همیشه دقت ویژه ای به محتویات این دو تگ مهم دارند و استفاده درست از آن ها باعث بالا رفتن رتبه صفحه وب شما در نتایج موتورهای جستجو مثل گوگل خواهد شد. در صفحات استاتیک که محتویات صفحه قرار نیست تغییر کنند، شما به صورت دستی مقادیر این تگ ها را مشخص می کنید اما در صفحات پویای ASP.NET بهتر است بر اساس محتویات صفحه ای که قرار است بر اساس اطلاعاتی که از دیتابیس خوانده می شود تغییر کند، محتویات این تگ ها نیز تغییر کنند. برای این که هر بار تگ متا به صورت پویا تعیین شود می توانید این تگ را به شکل زیر بنویسید :

  />
/>

سپس در Code Behind صفحه خود دو متغیر Public از نوع string به نام های MetaDesc و MetaKeywords بسازید. حالا در Page_Load بر اساس اطلاعاتی که می خواهید نمایش دهید این دو متغیر را تغییر دهید تا تگ های متای شما نیز تغییر کنند.

7 ) هر صفحه* URL یکتای خود را داشته باشد

این نکته خیلی مهم است. * منظور از صفحه در اینجا یک فایل فیزیکی نیست. به طور مثال فایل فیزیکیproducts.aspx می تواند صفحات products.aspx?id=1 یا products.aspx?name=datefa را بسازد که محتویات یکسانی ندارند! موتورهای جستجو این دو آدرس را به صورت دو صفحه جداگانه در نظر می گیرند. اگر مثل همین مثال از Query String برای مشخص کردن پارامترها استفاده کنید هیچ مشکلی وجود ندارد، اما اگر از ViewState، Session یا کوکی برای ذخیره این پارامترها و پاس دادن مقادیر به صفحات استفاده می کنید، راه اشتباهی را در پیش گرفته اید! استفاده از این روش باعث می شود که نرم افزارهای خزنده توانایی تفکیک صفحات را نداشته باشند و در نتیجه محتویات شما در موتورهای جستجو ایندکس نخواهد شد. به بیان ساده هر صفحه ای که یک URL یکتا داشته باشد و کاربر بتواند آن را بوکمارک کند توسط موتورهای جستجو نیز قابل ایندکس شدن خواهد بود.

8 ) حتماً یک Site Map برای پروژه خود بسازید

Site Map یک پروتکل استاندارد بر اساس XML است که به موتورهای جستجو کمک می کند تا صفحات را آسان تر و کاراتر ایندکس کنند. داشتن یک Site Map در یک وب سایت مبتنی بر ASP.NET علاوه بر فوایدی که برای ایندکس شدن در موتورهای جستجوی مختلف دارد، باعث نظم در ساختار منوها و Navigation یک وب سایت می شود. ساختن یک Site Map با لطف ویژوال استادیو بسیار آسان شده است. روی پروژه خود کلیک راست کنید و گزینه Add New Item… را برگزینید. در پنجره باز شده Site Map را پیدا کنید و به پروژه خودتان اضافه کنید. حالا فایلی به نام Web.sitemap به پروژه شما اضافه شده است. اگر با XML آشنایی داشته باشید، قواعد نوشتن Site Map نیز مانند نوشتن تگ های XML است. سعی کنید تمام صفحات مهم خودتان را با جزئیات کامل و رعایت قوانین یک نقشه سایت، در این فایل مشخص کنید.

9 ) URLهای خود را با حروف کوچک بسازید

اکثر موتورهای جستجو به بزرگی و کوچکی حروف حساس هستند و این یعنی دو آدرس mysite.com/products.aspx و mysite.com/Products.aspx برای آن ها متفاوت هستند. برای جلوگیری از این اشتباه شما باید تمام URLهای خود را با حروف کوچک بسازید تا مشکلی در ایندکس شدن صفحات توسط موتورهای جستجو پیش نیاید.

10 ) سورس کد صفحات را تمیز کنید!

سورس کد خود را تمیز کنید تا صفحات شما کم حجم شوند. در اینجا منظور از سورس کد، کد نوشته شده در فایل های aspx است نه کدهای موجود در Code Behind که به cs یا vb ختم می شوند. برای تمیز کردن سورس صفحات :

  • کامنت های html را حذف کنید
  • از ViewState وقتی که نیازی به آن ندارید، استفاده نکنید
  • از form runat=”server”x وقتی که نیازی به آن ندارید، استفاده نکنید
  • تا می توانید کد جاوا اسکرپیت درون فایل aspx ننویسید، بلکه از فایل های Js خارجی استفاده کنید
  • تا می توانید کدهای CSS خود را در فایل های استایل جداگانه تعریف کنید

farasun.wordpress.com

نکات مهم دیگر :

  • در تگ های a حتماً از خاصیت title استفاده کنید
  • در تگ های img از خاصیت alt استفاده کنید
  • مطالب وب سایت خود را در فرمت rss هم ارئه کنید
  • از Flash یا Silvetlight برای نشان دادن محتویات استفاده نکنید
  • از Flash یا Silverlight برای ساختن منوها استفاده نکنید
  • از منوهای جاوا اسکریپت استفاده نکنید
  • لینک خود را در وب سایت های دیگر قرار دهید

منبع :

farsika.ir

پروژه پایانی دوره کارشناسی - طراحی وب سایت تجارت الکترونیک (بخش پایانی)

دوستان عزیز ،

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

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

شاد و پیروز باشید .
شاید این آخرین پست من در سال 86 باشه ، که اگر اینطور باشه همین جا از همه ی شما خداحافظی میکنم تا سال بعد .
از همه ی عزیزان و اساتید این سایت که خیلی بهم کمک کردن تا پا بگیرم و امیدوار به کار ادامه بدم ممنون .



فهرست منابع


کتاب ها
1. گام به گام با ASP.NET 2.0، کريس هارت ، عليرضا انصاري، انتشارات ناقوس انديشه، 1385.
2. مرجع کامل ASP.NET با مروري بر ASP، استفان والتر، بابک احترامي، دانش نگار، 1383.
3. شيوه ارئه مطالب، سيد محمد تقي روحاني رانکوهي، انتشارات جلوه ، پاييز 83.
4. برنامه نويسي شيء گرا با ASP.NET2.0، عارف کريمي، ناقوس انديشه، 1385.
5. آموزش گام به گام ASP.NET، مهندس جعفرنژاد قمي، انتشارات علوم رايانه، زمستان 1383 .
6. آموزش گام به گام ASP.NET، داتي اندرو، مهندس سعيد هراتيان – مهندس مهدي فلاح، ساحر، 1384 .
7. آموزش گام به گام ASP.NET، داتي اندرو، ماني قاسم نيا همداني، انتشارات ناقوس، 1383.
8. امنيت در ASP.NET 2.0، وحيد نصيري، ناقوس انديشه، 1386 .
9. 101 نکته و ترفند براي استفاده از CSS در طراحي وب، اندرو ريچل، اميرعباس عبدالعلي، ناقوس انديشه، 1385.
10. 101 روش بازاريابي در اينترنت، سوزان سوييني، فاطمه فرزانه – عبدالوهاب فخرياسري، ناقوس انديشه، 1384.
11. رازهاي طراحي وب سايت، سيد ابوالحسن تجملي محدث، ناقوس انديشه، 1385.
12. آموزش گام به گام SQL، مهندس عين الله جعفرنژاد قمي – مهندس رمضان عباس نژاد، علوم رايانه، بهار 1384.
13. آموزش قدم به قدم SQL Server 2000، ريوردان ربکا، ماني قاسم نيا همداني، ناقوس انديشه، 1383.
14. شهر الکترونيک، دکتر علي اکبر جلالي، مرکز انتشارات دانشگاه علم و صنعت ايران، 1382.
15. آموزش گام به گام برنامه نويسي بانک هاي اطلاعاتي در WEB، جعفرنژاد قمي، علوم رايانه ، پاييز 1383.
16. آموزش گام به گام AJAX، حسين خوشرفتار منفرد، انتشارات نشر گستر، زمستان 1386.
17. راه و رسم رونق تجارت با Google، برد هيل، مهيار کلانتري فرد، ناقوس انديشه، 1386.


مقالات
1. وب 2 دنيايي بافته از مشاركت‌ ، عليرضا صالحي ، ماهنامه شبکه - اسفند ۱۳۸۴ شماره 63 .
2. وب2 - شوق يك جهان نو ، پرهام ايزدپناه ، ماهنامه شبکه - اسفند ۱۳۸۴ شماره 63 .
3. هفت مشخصه مهم وب2 ، بهروز نوعي پور ، ماهنامه شبکه - اسفند ۱۳۸۴ شماره 63 .
4. ارسال ايميل در ASP.NET، بابک خالديان ، وب سايت دات نت سورس .
5. آموزش ساخت تصاوير امنيتي، سيد محمد رضا فراحي ، وب سايت نت سورس .
6. آموزش ساخت کامپوننت هاي وب در ASP.NET 2.0، بابک خالديان ، وب سايت دات نت سورس .
7. حفظ حالت در ASP.NET، وحيد نصيري .
8. ساخت پروفايل در WebHostingMatrix، وحيد نصيري .
9. تجارت الکترونيک ، نويد زراعتي .
10. تفاوت هاي اصلي DataSet و DataReader ، مجتبي صحرايي ، وب سايت دات نت سورس .
11. محافظت از برنامه هاي خود در برابر SQL Injection، بابک زواري، وب سايت دات نت سورس .
12. خطاهاي متداول در ASP.NET ،وحيد نصيري .
13. ذخيره تصاوير در SQL Server ، اردوان دژپناه.
14. کد کردن Connection String، محمد رضا طاهري .
15. روانشناسي سيستمهاي کامپيوتري ، محمد حسين دالوند .
16. نکات منفي وب سايت ها ، محمد توري .


وب سايت ها
17. www.sitepoint.com/article/build-whois-lookup-asp-net
18. www.iranasp.net
19. www.dotnetsource.com
20. http://www.macromediax.com
21. www.itiran.com
22. www.يک سايت
23. http://www.nofa.ir
24. http://www.sharghian.com
25. www.behbazar.com
26. www.persian-soft.com
27. www.google.com
28. www.asp.net
29. www.codeproject.com
30. www.itanalyze.om
31. www.istgah.com
32. www.parsdev.ir
33. www.parslook.com
34. www.yahoo.com
35. www.msdn.com
36. www.microsoft.com


پروژه پایان نامه دوره کارشناسی ، دانشگاه پیام نور واحد بهشهر
تهیه کننده : محمد جعفری فوتمی
ایمیل : mohammad_jafari64@yahoo.com
وب سایت پروژه : www.behbazar.com
وبلاگ پروژه : www.behbazar.blogfa.com
با تشکر از : www.dotnetsource.com

لینک دانلود بخش پایانی

References.pdf



پروژه پایانی دوره کارشناسی - طراحی وب سایت تجارت الکترونیک (بخش هشتم)

فصل پانزدهم (نصب و راه اندازي سايت)
15-1- ثبت دامنه و هاست براي سايت
15-2- ارسال فايل هاي سايت از طريق FTP
15-3- استفاده از کنترل پنل سايت
15-4- جستجوي نام هاي دامنه (Whois) در ASP.NET
فصل شانزدهم (معرفي WEB 2.0)
16-1- وب 2 – دنيايي بافته از مشارکت
16-2- وب 2- شوق يک جهان نو
16-3- هفت مشخصه مهم وب 2
16-4- Ajax چست ؟

لینک دانلود

CH_15_16.pdf

پروژه پایانی دوره کارشناسی - طراحی وب سایت تجارت الکترونیک (بخش هفتم)

فصول بعدی پروژه :

فصل دوازدهم (کار با تصاوير در ASP.NET)
12-1- ذخيره تصاوير در SQL Server
12-2- چگونه مي توانم يک تصوير را از ديتابيس خوانده و در صفحه وب نمايش دهم؟ ....
12-3- کوچک سازي تصاوير در ASP.NET

فصل سيزدهم (امنيت در ASP.NET)
13-1- امنيت در ASP.NET
13-2- استفاده از فايل Web.config
13-3- تعيين اعتبار ورودي کاربر
13-4- مديريت ورودي هاي خطرناک مهاجمان
13-5- اطمينان نکردن به کنترل هاي تعيين اعتبار در ASP.NET
13-6- محافظت از برنامه هاي خود در مقابل SQL Injection
13-7- روش محافظت در برابر تزريق عباراتي که از OR و Single Quote Marks استفاده مي کنند
13-8- روش محافظت در برابر تزريق SQL در QueryString
13-9- انتخاب پسوردهاي قوي
13-10- آموزش ساخت تصاوير امنيتي
13-11- کد کردن Connection String

فصل چهاردهم (مقابله با خطاها)
14-1- مقابله با خطاها
14-2- کدنويسي تدافعي
14-3- چک کردن پارامترها
14-4- اجتناب از فرضيات
14-5- پارامترهاي پرس و جو
14-6- تعيين اعتبار کاربر
14-7- مقابله با استثناء
14-8- صفحات خطاي سليقه اي
14-9- اشکال و ردگيري

لینک دانلود

CH_12.pdf

CH_13.pdf

CH_14.pdf

پروژه پایانی دوره کارشناسی - طراحی وب سایت تجارت الکترونیک (بخش ششم)

فصول دهم و یازدهم :

فصل دهم (ارسال ايميل در ASP.NET)
10-1- ارسال ايميل در ASP.NET
فصل يازدهم (آمار کاربران سايت در ASP.NET)
11-1- آمار کاربران سايت درASP.NET


لینک دانلود

CH_10_11.pdf

پروژه پایانی دوره کارشناسی - طراحی وب سایت تجارت الکترونیک (بخش پنجم)

فصل نهم ،

فصل نهم (انتقال مقادير بين صفحات و حفظ حالت در ASP.NET)
9-1- استفاده از QueryString
9-2- استفاده از متغيرهاي Session
9-3- استفاده از Server.Transfer
9-4- حفظ حالت در ASP.NET
9-5- حفظ حالت سمت کلاينت (Client Side)
9-5-1- کوکي ها
9-5-2- فيلدهاي مخفي
9-5-3- ViewState
9-5-4- QueryString
9-6- حفظ حالت سمت سرور (Server Side)
9-6-1- استفاده از شيء Application
9-6-2- استفاده از شيء Session
9-6-3- استفاده از DataBase

لینک دانلود

CH_09.pdf

پروژه پایانی دوره کارشناسی - طراحی وب سایت تجارت الکترونیک (بخش چهارم)

فصل هشتم ،

فصل هشتم (کار با داده هاي بانک اطلاعاتي و مقيدسازي داده ها)
8-1- کار با داده هاي بانک اطلاعاتي
8-2- اتصال به بانک اطلاعاتي
8-3- بازيابي رکوردها از جداول بانک اطلاعاتي
8-4- اضافه کردن رکورد به بانک اطلاعاتي
8-5- اصلاح رکوردها
8-6- حذف رکوردها
8-7- استفاده از رويه هاي ذخيره شده
8-8- بهبود کارآيي صفحه با جمع آوري رشته هاي اتصال
8-9- تفاوت هاي اصلي DataSet و DataReader

لینک دانلود

CH_08.pdf