تحقیق درباره پیاده سازی صفحات سایت

راهنمای سایت

سایت اقدام پژوهی -  گزارش تخصصی و فایل های مورد نیاز فرهنگیان

1 -با اطمینان خرید کنید ، پشتیبان سایت همیشه در خدمت شما می باشد .فایل ها بعد از خرید بصورت ورد و قابل ویرایش به دست شما خواهد رسید. پشتیبانی : بااسمس و واتساپ: 09159886819  -  صارمی

2- شما با هر کارت بانکی عضو شتاب (همه کارت های عضو شتاب ) و داشتن رمز دوم کارت خود و cvv2  و تاریخ انقاضاکارت ، می توانید بصورت آنلاین از سامانه پرداخت بانکی  (که کاملا مطمئن و محافظت شده می باشد ) خرید نمائید .

3 - درهنگام خرید اگر ایمیل ندارید ، در قسمت ایمیل ، ایمیل http://up.asemankafinet.ir/view/2488784/email.png  را بنویسید.

http://up.asemankafinet.ir/view/2518890/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%AE%D8%B1%DB%8C%D8%AF%20%D8%A2%D9%86%D9%84%D8%A7%DB%8C%D9%86.jpghttp://up.asemankafinet.ir/view/2518891/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%AE%D8%B1%DB%8C%D8%AF%20%DA%A9%D8%A7%D8%B1%D8%AA%20%D8%A8%D9%87%20%DA%A9%D8%A7%D8%B1%D8%AA.jpg

لیست گزارش تخصصی   لیست اقدام پژوهی     لیست کلیه طرح درس ها

پشتیبانی سایت

در صورت هر گونه مشکل در دریافت فایل بعد از خرید به شماره 09159886819 در شاد ، تلگرام و یا نرم افزار ایتا  پیام بدهید
آیدی ما در نرم افزار شاد : @asemankafinet

تحقیق درباره پیاده سازی صفحات سایت

بازديد: 95

تحقیق درباره پیاده سازی صفحات سایت

 در اين گفتار سعي در اين است كه ابتدا توضيح مختصري در مورد سيستم بانك هاي اطلاعاتي بدهيم و سپس بانك اطلاعاتي و جداول مورد استفاده در اين پروژه را مختصراً شرح دهيم. سپس به سراغ شرح نحوة پياده سازي صفات سايت مذكور از لحاظ كدنويسي خواهيم رفت، كه اين بخش را با توجه به اينكه ما در دنياي وب بطور كلي داراي دو نوع صفحه وب هستيم (استاتيك و ديناميك) به دو قسمت جداگانه تقسيم كرده ايم كه در آن ابتدا صفحات استاتيك و سپس ديناميك شرح داده مي شود. و بخش آخر اين گفتار نيز مربوط به فايل هايي از نوع php. و يا js. مي شود كه از آن ها براي اعمال تغييرات در بانك داده ها و يا ايجاد جلوه هايي خاص در طراحي پروژه استفاده شده است؛ مي شود. قابل ذكر است كه جداسازي يك سري كد از صفحات اصلي و قرار دادن آنها درون فايل هاي ديگر باعث بالا رفتن امنيت در انتقال اطلاعات شده و نيز از ميزان حجم فايل بطور محسوسي كاسته مي شود.

 

1- پايگاه داده ها

يكي از مهم ترين بخشهاي هر برنامة كاربردي، از جمله برنامه هاي كاربردي وب، بانك اطلاعاتي آن است كه با چگونه ذخيره و بازيابي داده ها سروكار دارد. بانك اطلاعاتي مجموعه اي از داده هايي پايدار است كه توسط برنامه هاي كاربردي موجود مورد استفاده قرار مي گيرد. برنامه هاي كاربردي مستقيماً مي توانند با اين داده ها كار كنند. بنابراين نياز به فرمان هايي دارند تا به سيستم هاي مديريت بانك اطلاعاتي (DBMS) ارسال كند و نتيجه را از آن دريافت كند. ما با توجه به اينكه از امكانات زبان اسكرپيتي php استفاده مي كنيم لذا از سيستم بانك اطلاعاتي My-SQL كه بطور مشهود با php هماهنگ است؛ سود جسته ايم. بانك هاي اطلاعاتي داراي مزايايي هستند كه در زير نمونه اي از آنها را ذكر    مي كنيم.

جلوگيري از اتلاف حافظه در ذخيره كردن داده ها.

·        ايجاد اطمينان نسبت به گزارش هاي بدست آمده.

·        ساده بودن اخذ گزارش هاي جديد

·        بالا بودن سرعت پردازش داده ها

·        استقلال داده ها از سيستم هاي كاربردي

·        تمركز در مديريت داده ها.

 

انواع بانك هاي اطلاعاتي شامل :

1- هرمي

2- شبكه اي

3- رابطه اي

كه ما از نوع سوم آن استفاده مي كنيم.

 

 

 

 

 

طراحي بانك اطلاعاتي

فرآيند طراحي، با تحليل كارهايي شروع مي شود كه براي بانك اطلاعاتي مورد نياز است. اول بايد مشخص شود كه سيستم چه كاري را براي كاربر صورت مي دهد و سپس از خواسته هاي كاربران آگاه شويم.

در مجموع مراحل طراحي يك بانك اطلاعاتي توسط پنج (5) مرحله اصلي و پايه صورت مي گيرد؛ كه انجام اين مراحل را در اين پروژه؛ مرور و بررسي مي كنيم:

1- تعيين اينكه كاربران چه انتظاري از بانك اطلاعاتي دارند و چه داده هايي بايد در خروجي ظاهر شوند.

اين كار توسط تهيه پرسشنامه و مصاحبه حضوري با اشخاص كه با سايت سروكار دارند صورت مي گيرد. با توجه به اينكه ما در ارتباط با اين پروژه داراي سه نوع كاربر (كاربر معمولي ، مشتري و مدير سايت) هستيم؛ بطور جداگانه اين امر را به انجام رسانديم.

طبق نتيجه گيري و بررسي اقدامات صورت گرفته اعمال اصلي با بانك اطلاعاتي ؛ مانند حذف، اضافه و تغيير اطلاعات كاربر توسط مدير سايت صورت مي گيرد و تنها از بين دو نوع كاربر ديگر اين تنها مشتري است (شخصي كه دستگاهي را سفارش داده است) كه سعي در گزارش گيري در مورد ميزان پيشرفت ساخت و توليد دستگاه موردنظر خود مي كند.

طبق نتايج حاصله؛ مدير سايت در نظر دارد تا بتواند اطلاعات مربوط به مشتري جديد را وارد بانك اطلاعاتي كرده و به او نام كاربري و رمز عبور خاصي را اختصاص دهد؛ در ضمن تصوير و نيز توضيحاتي از ميزان پيشرفت دستگاه مشتري را در بانك قرار دهد ، و از طرفي مشتري تنها با استفاده از نام كاربري و رمز عبور خود     مي تواند تصوير را مشاهده و توضيحات مربوطه را مورد ملاحظه قرار دهد.

2- توزيع داده ها در جداول مشخص و فيلدهاي هر ركود معين شوند.

با توجه به نياز و سطح ارتباط با بانك اطلاعاتي؛ ما دريافتيم كه در اين پروژه تنها يك جدول نياز مي باشد كه فيلدهاي آن بصورت زير است:

·        ID: اين فيلد نگاهدارندة عددي است كه منحصراً به يك كاربر اختصاص مي يابد.

نوع اين فيلد Int و طول آن 4 رقم مي باشد.  لازم به ذكر است كه براي مدير سايت فيلد ID بطور پيش فرض مقدار 0001 مي باشد.

·        user name: اين فيلد نگاهدارندة نام كاربري مربوط به هر كاربر است كه همانند فيلد ID ؛ مقداري يكتاست. اين فيلد براي مدير سايت بطور پيش فرض مقدار “Co_admin” را داراست.

فيلد موردنظر از نوع Varchar مي باشد و طول آن 8 كاراكتر است.

·        Password: همانطور كه از نام اين فيلد مشخص است؛ مقدار رمز كاربر را نگاهداري مي كند. اين فيلد نيز براي مدير سايت مقداري پيش فرض را داراست كه برابرست با “Co_admin”.

فيلد موردنظر از نوع Varchar و طول آن 8 كاراكتر    مي باشد.

·        Name: نگاهدارندة نام كوچك شخص (كاربر) است؛ طول آن 15 كاراكتر و از نوع Varchar مي باشد.

·        Family: نگاهدارندة نام فاميل كاربر موردنظر است كه طول آن 30 كاراكتر و از نوع varchar     مي باشد.

·        Corp: نشان دهنده نام شركت مربوط به كاربر است. نوع Varchar و با طول 40 كاراكتر مي باشد.

·        Exp: حاوي توضيحات موردنظر در مورد ميزان پيشرفت ساخت و توليد دستگاه سفارش شده توسط كاربر مي باشد. چون ميزان توضيحات مي تواند كم و تقريباً زياد باشد در نتيجه ما نوع اين فيلد را از نوع Blob در نظر گرفته ايم تا بتوان تا هر مقدار كاراكتر كه موردنظر است در اين فيلد قرار داد.

ذكر چند نكته حائز اهميت است كه نام كاربري و رمز عبور مربوط به مدير سايت ثابت نمي باشد و مدير      مي تواند آن را تغيير دهد. در ضمن عكس هاي مربوط به كاربران با نامي مشابه با شماره ID در آنها در شاخه اي بنام Userimg ذخيره مي شود. و با توجه به اينكه در فيلد exp ها امكان وارد کردن توضيحات فارسي را هم به بانك اطلاعاتي اضافه كرده ايم در نتيجه جدول بانك اطلاعاتي را نيز همانند تمامي صفحات سايت از نوع استاندارد جهاني UTF-8 ؛ كه از فونت هاي فارسي پشتيباني مي كند، در نظر گرفته ايم.

در پايان نيز شماتيك كلي جدول بانك اطلاعاتي شرح داده شده را در ذيل مي آوريم:

Nmc - co

Exp

Corp

Family

Name

Password

Username

ID

Blob

Varchar

40

Varchar

30

Varchar

15

Varchar

8

Varchar

8

Int

4

3- تعيين يك فيلد منحصر به فرد تا تضمين كنندة اين باشد كه هيچ دو ركورد يكساني وجود نداشته باشد (تعيين فيلد كليد) با توجه به اين كه در اين جدول تنها دو مقدار هستند كه حاوي مقادير منحصر به فردي مي باشند و بايد تنها يك فيلد كليد در نظر گرفت؛ بنابراين فيلد ‌‌ID را به عنوان فيلد كليد در نظر مي گيريم.

4- تحليل و بررسي كارايي بانك اطلاعاتي

براي انجام اين مرحله پس از بررسي دوباره اطلاعات جمع آوري شده؛ و با پياده سازي نرم افزار كارايي جدول موردنظر بسيار مشهود است.

 

2- شرح صفحات استاتيك

در اين پروژه در كنار مولفه هايي هم چون ، پياده سازي نيازهاي كاربران بطور كامل و بالا بردن امنيت؛ سرعت نيز براي ما بسيار مهم بوده است. به همين منظور براي بالا بردن سرعت كاري كاربر و جلوگيري از اتلاف وقت كاربر تا حد امكان؛ يك طراحي و پياده سازي كلي براي صفحه مربوط به سايت (صفحه اصلي) صورت داده ايم و در داخل آن از يك قالب داخلي (<iframe>) استفاده كرديم تا صفحاتي كه كاربر تقاضا مي كند همگي درون آن قاب باز شوند.

در نتيجه تنها صفحه اصلي يكبار لود مي شود و براي صفحات ديگر نيازي به لود كردن عكس ها ديگر نمي باشد و سرعت كار بطور فوق العاده اي بالا مي رود ضمن اينكه اگر كاربري سعي در ديدن سورس اصلي صفحات وب ساخته شده را داشته باشد با توجه به اينكه ما تمامي صفحات php را نيز در آن قاب ها بازي كنيم؛ به هيچ عنوان  نمي تواند كدهاي زبان php را ببينيد به همين خاطر امنيت سايت بسيار بالا مي رود. در اين بخش ابتدا صفحه Index را توضيح و سپس به شرح كامل قالب اصلي صفحه   مي پردازيم (صفحه اصلي) و بعد از آن تمامي صفحات توضيح داده شده، همگي در قاب داخلي لود مي شوند. لذا از توضيح مجدد قالب كلي صرف نظر مي نماييم.

بايد توجه داشت كه پياده سازي تمامي اين صفحات چه انگليسي و چه فارسي يكسان بوده ؛ پس تنها يك بار آنها را مرور خواهيم نمود. نوع تمامي صفحات از نوع استاندارد جهاني UTF-8 مي باشد.

در طراحي صفحات سعي بر اين بوده است تا با استفاده از CSS كار طراحي را ساده تر كنيم. هم چنين براي بالا بردن هر چه بيشتر سرعت، با كمك از زبان جاوااسكريپ سعي كرده ايم تا پيغام ها و يا كنترل هايي كه بايد بر روي اطلاعاتي كه كاربر مي خواهد به بانك اطلاعاتي ارسال كند، درون خود كامپيوتر كاربر صورت مي گيرد (Client) و ديگر منتظر فرستادن داده ها به سرور و پاسخ گويي آن نشويم.

 

1-2) Index html :

اين صفحه؛ home page مربوط به سايت است، در كدنويسي اين صفحه با استفاده از زبان HTML ، كنترل هايي را اعمال كرديم تا اين سايت بتواند توسط موتورهاي جستجو گر قابل كشف باشد يعني اگر شخصي سعي كرد تا سايت را جستجو كند؛ اين را بتواند توسط موتورهايي هم چون yahoo يا google انجام دهد. اين صفحه داراي دو لينك   مي باشد كه كاربر مي تواند با توجه به سليقه خود صفحات انگليسي يا فارسي را باز نمايد.

 

 

2-2)صفحه اصلي (main.htm) :

در اينجا قالب كلي صفحه را توضيح خواهيم داد. اين صفحه حاوي سه قسمت كلي مي باشد: نوار لينك ها؛ ورود به سايت (مربوط به مدير سايت و مشتريان) و قالب داخلي كه درون آنها صفحات ديگر بارگذاري خواهند شد. در قسمت لينك ها، دكمه هايي اختيار شده اند تا كاربر با توجه به خواسته خود صفحه دلخواه خود را باز كرده و اطلاعات درون آن را مشاهده نمايد مانند صفحه توليدات، مشتريان و

در قسمت ورود به سايت، كاربر و يا مدير سايت       مي توانند از امكانات مخصوصي كه به آنها اختصاص داده شده اند استفاده كنند. در اينجا براي حصول اطمينان از درست وارد كردن نام كاربري و رمز عبور توسط كاربر دو كار بايد صورت گيرد: اول اينكه مطمئن شويم كاربر اطلاعات وارده را در قالب مشخص شده وارد كرده است. منظور از قالب مشخص شده؛ طول نام كاربري و رمز عبور (8 كاراكتر) و نيز درستي از لحاظ قالب رشته اي مي باشد (يعني فقط رشته هايي كه كاراكتر اول آنها از حروف و 7 كاراكتر بعدي تنها شامل كاراكتر و يا حروف الفبا و اعداد باشد). و سپس اتصال به بانك اطلاعاتي و چك كردن اينكه نام كاربري با چنين رمز عبوري وجود دارد يا خير. بدين طريق از بيشتر رجوع ها به بانك اطلاعاتي و سرور در همان Client جلوگيري خواهد شد و در نتيجه سرعت و اطمينان بالا مي رود. براي اين منظور هنگامي كه كاربر بر روي دكمه ورود (يا Enter) كليك و يا كليد Enter را فشار مي دهد. تابع ()check فراخواني مي شودتا توسط استفاده از تكنيكهاي عبارات منظم؛ موارد ذكر شده از لحاظ درستي چك كند و سپس دو مقدار نام كاربري و رمز عبور را توسط دو متغير مخفي بنام هاي "user 2" و "pass 2" به فايل check.php ارسال مي كند.

در زير كدهاي مربوط به نتايج ()check را مي بينيد.

 

<script language="javascript" type="text/javascript">

function check()

{

re=/^[a-z]\w{7}$/i;elseno=false;

if (re.test(document.getElementById('user').value))

  if (re.test(document.getElementById('pass').value))

  {elseno=true;

document.getElementById('user2').value=document.getElementById('user').value;

document.getElementById('pass2').value=document.getElementById('pass').value; 

document.getElementById('user').value="";document.getElementById('pass').value=""; 

   document.getElementById('f1').submit();}//**** End Of If (TESTING)

if (!elseno)

  {window.alert("Your Username Or Password Matchcase Was Invalid!");

  }//****End Of If (Reverse Situation)

}//**** End Of Check Function

</script>

 

در اين قسمت در صورتي كه نام كاربري و رمز عبور از لحاظ قالبي غلط باشد پيغام مناسبي به كاربر جهت ارسال مجدد اطلاعات داده مي شود. در اين نتايج قالب كلي رشته ها بصورت عبارات منظم بصورت   /^[a-z]\w{7}$/i;    مي باشد و نشان دهنده اين است كه رمز عبور و نام كاربري    مي تواند حاوي تمامي حروف الفبا و اعداد و كاراكتر "_" باشد با شرط اينكه حتماً كاراكتر اول از حروف الفبا انتخاب شود. اگر قالب داده هاي وارد شده درست باشد مقادير در دو متغير مخفي ريخته شده و سپس فرم موجود در صفحه Submit, (<form>) خواهد شد. در غير اين صورت پيغام خطا نشان داده خواهد شد.

 

<form action='check.php?language=1' target="pagechg" method='post'  id='f1' name='enter_form'>

<input type="hidden" id="user2" name="user2">

<input id="pass2" type="hidden" name="pass2">

 

در اين صفحه كل كدهاي html را درون يك عدد فرم قرار داده ايم. اين فرم اطلاعات درون خود را به فايل Check.php ارسال مي كند. متغير ارسالي Language ؛ نشان دهنده زبان جاري است (انگليسي o= و فارسي 1=) خط بعدي (24) همان متغيرهاي مخفي اي هستند كه از چشم كاربر به دور هستند.

نام قالب داخلي اي كه براي نمايش ديگر صفحات مورد استفاده قرار مي گيرند؛ Pagechg است كه از اين نام براي ارجاع صفحات به اين قاب استفاده مي كنيم. همان طور كه در كد آورده شده در زير مي بينيد؛ صفحة پيش فرضي كه اين قاب درون خود جاي خواهد داد صفحة       " درباره ما " (About-us) است؛ كه حاوي توضيح مختصري در مورد تاريخچه و سابقه كاري كارخانه مي باشد.

 

<iframe src="About-us_p.html" name="pagechg" id="pagechg" align="top" frameborder="0" height="487" width="470" marginheight="0" marginwidth="0" scrolling="no">

<img src="images_p/main_p_06.jpg" border="0">

</iframe>

 

3-2)صفحه توليدات ( main-Product-1-1.html )

اين صفحه حاوي اطلاعات و معرفي كوتاهي از تمامي توليدات مربوط به كارخانه مي باشد.

براي پياده سازي اين صفحه از امكانات و تكنيك هاي CSS استفاده كرده ايم.

 

<style type="text/css">

.font1 {

         font-family: Tahoma;

         color: #ff4e02;

         text-decoration: none;

         font-weight: bold;

         text-align: center;

         vertical-align: middle;

}

.font2 {

         font-family: Tahoma;

         text-decoration: none;

         font-size:10px;

         text-align: center;

         vertical-align: middle;

}

.font3 {

         font-family: Tahoma;

         color: #a8a8a8;

         text-decoration: none;

         font-weight: bold;

         text-align: center;

         vertical-align: middle;

}

</style>

 

font 1 و font 2 براي تيتر و لينك ها و font 3 براي توضيحات و معرفي توليدات مي باشد.

اين صفحه خود به تنهايي حاوي دو صفحه است كه كاربر مي تواند با انتخاب صفحه دوم ادامه محصولات قابل توليد توسط كارخانه را مشاهده نمايد.

  main-Product-1-2.html )يا main-Product 1-2-p.html)

براي بيشتر شدن زيبايي اين صفحات از تكنيك fade كردن عكس ها استفاده كرده ايم تا هنگامي كه كاربر موس را بر روي محصوليمي برد تصوير مربوط به آن وضوح بيشتري پيدا كند، تا براي كاربر جذابيت بيشتري داشته باشد. اين كار توسط برنامه نويسي جاوا اسكريپ صورت گرفته است و كد اصلي مربوط به اين قسمت در قسمت هاي بعدي و در بخش چهارم مربوط به همين گفتار توضيح داده خواهد شد. براي لينك كردن فايل Js. به اين صفحه و صفحات ديگر از كد زير استفاده كرده ايم:

 

<SCRIPT LANGUAGE="javascript" TYPE="text/javascript" SRC="picfader.js"></SCRIPT>

 

و به عنوان مثال خطوط مربوط به يكي از تصاوير را در پايين مي آوريم كه نشان دهندة نحوة استفاده از امكانات اين فايل مي باشد.

 

<td colspan="6">

<a href="Product-1_p.html" target="pagechg" onmouseover=nereidFade(j1,100,50,35) onmouseout=nereidFade(j1,30,30,20)>

<img src="images_p/Main-Product-1-1_p_12.gif" style="filter:alpha(opacity=30);" alt="در بندي 4 هد" width="100" height="106" border="0" name="j1">

</a>

</td>

4-2)صفحه خدمات ( Services. Html )

اين صفحه نيز تنها در حد اطلاع رساني مي باشد و نشان دهنده سرويس ها و خدماتي است كه كارخانه در قبال خريد محصولات ارائه مي دهد.

 

5-2)صفحه مشتريان (  Customers.html)

در اين صفحه نيز براي راحت كردن امر كدنويسي از امكانات CSS سود جسته ايم:

  

<style type="text/css">

.font1 {

          font-family: Tahoma;

          color: #ff4e02;

          text-decoration: none;

          font-weight: bold;

          text-align: center;

          vertical-align: middle;

}

.font2 {

          font-family: Tahoma;

          color: #8B8B8B;

          font-size: 14px;

          text-decoration: none;

          font-weight: bold;

          text-align: center;

          vertical-align: middle;

}

.font3 {

       font-family: Tahoma;

       text-decoration: none;

       font-size: 12px;

       padding-right: 70px;

}

</style>

  

font 1 و font 2؛ استيل مربوط به نمايش تيترهاي صفحه    مي باشد و font 3، مربوط به معرفي مشتريان اخير.

هدف از ايجاد اين صفحه معرفي مشتريان سابق و كنوني كه نسبتاً شهرت خاصي را دارند، مي باشد. بدليل اينكه تعداد اين مشتريان مي تواند زياد شود و نيز امكان اين وجود داشته باشد تا بتوان از ليست آنها كم و يا به آن ليست مشتري ديگري را اضافه كرد از تگ <marquee> مربوط به زبان html استفاده كرده ايم.

 

<td colspan="5" height="259" class="font3">

<marquee align="right" behavior="scroll" dir="rtl" direction="up" height="255" loop="-1" scrollamount="1" scrolldelay="30">

1- کارخانجات کشت و صنعت شمال ( غنچه )<br><br>

2- کارخانه کنسروسازي قائم شهر( اتکاء )<br><br>

3- کارخانجات کشت و صنعت يک و يک گرگان<br><br>

4- کارخانجات کشت و صنعت يک و يک دشت مرغاب شيراز<br><br>

5- شرکت نگار گلستان واقع در علي آباد کتول<br><br>

6- شرکت ترخوش ( بين ساري و نکاء )<br><br>

7- شرکت شهداب خراسان ( تبرک )<br><br>

8- شرکت شاداب خراسان<br><br>

9- شرکت چين چين بين الملل<br><br>

10- شرکت صنايع غذايي مجيد ( آذين شوشتر )<br><br>

11- شرکت انوشه گوهر آبادان<br><br>

12- صنايع غذايي تارا<br><br>

13- شرکت گلدشت مشهد مرغاب در شيراز<br><br>

14- شرکت صنايع غذايي هماگون در شيراز<br><br>

15- شرکت صنايع غذايي تک چين بهاران در شيراز <br><br>

16- شرکت صنايع غذايي شيراز صدک<br><br>

17- شرکت صنايع غذايي سيسارون<br><br>

18- شرکت شبديس شيراز<br><br>

19- شرکت تک ميوه شيراز<br><br>

20- شرکت گلريز مرودشت شيراز<br><br>

21- شرکت شادچين شيراز<br><br>

22- شرکت بهشاد مرودشت<br><br>

23- شرکت گلفام اروميه<br><br>

24- شرکت کشت و صنعت سرچين خراسان

</marquee>

</td>

 

 

 

6-2 (صفحه تماس با ما ( Contact-us.html):

اين صفحه براي كاربر امكان برقراري ارتباط با مدير سايت را از طريق ارسال نامه الكترونيكي ، توسط استفاده از يك فرم؛ مي دهد. در اين صفحه از دو عدد textbox براي نگاهداري مقاديري هم چون نام email شخص و موضوع نامه و نيز يك عدد Textarea كه محتويات نامه ارسالي را در بر خواهد داشت؛ استفاده شده است.

 كاربر بعد از پر كردن فيلدهاي درخواست شده زدن كليد ارسال مي تواند نامه را ارسال كند. اين صفحه اطلاعات درخواستي و وارد شده را در ابتدا توسط تابع()Chack كه با زبان برنامه نويسي JavaScript نوشته شده است؛ از لحاظ قالب موردنظر بانك اطلاعاتي و استانداردهاي جهاني چك كند و در صورت صحت به فايل Sendmail.php ارسال    مي كند. كل صفحه نيز در يك عدد فرم (<form>) جاسازي شده است اين فرم كه مربوط به آن را در زير مشاهده  مي كنيد در صورت درست بودن اطلاعات، كار خود را انجام مي دهد.

      

<form action="sendmail.php?per_lang=1" target="pagechg" id="sendmail" name="sendmail" method="post">

 

همانطور كه گفته شد، چك كردن اطلاعات موردنياز توسط تابع چك صورت مي گيرد كه كدهاي مربوط به آن در زير آمده است:

<script language="javascript" type="text/javascript">

function check()

{

re1=/^[a-z]\w+@\w+(\.[a-z]{2,3})+$/i;//from(email)

re2=/^[a-z\s]+$/i;//subject

elseno=true;

if (re1.test(document.getElementById('from').value))

   if (re2.test(document.getElementById('subject').value))

        {elseno=false;

                 document.getElementById('sendmail').submit();

                }

if (elseno)

     window.alert("! لطفا از صحت آدرس و موضوع ايميل اطمينان حاصل فرمائيد");                  

//here we check the spelling of the form's objects and submit the form if

//they are true.

}//**** End Of Check Function

</script>

 

در اين تابع دو چيز بايد چك شود:

1-آدرس E-mail وارده در قالب صحيح خودش (استاندارد جهاني) باشد.

2-تست اينكه موضوع وارده از حروف قابل قبول باشد.

هدف اول را توسط عبارت منظم  re1 = /^[a-z]/w+@/w+(/.[a-z]{2,3})+$/i;

به انجام مي رسانيم. اين كد قالب كلي يك آدرس E-mail را در بردارد مانند:

Sj1983msh@yahoo.com

Members.ea-j.f@lycos.uk.org

و هدف دوم تـوسط عبـارت منـظم  re2 = /^[a-z/s] +$/i;صـورت مي گيرد. طبق اين قالب رشته وارده بايد حداقل حاوي يك حرف بين a-z و يا بيشتر باشد. ضمن اينكه اجازه به وارد كردن Space در بين حروف نيز داده شده است.

در صورت درست بودن مقادير فرم موجود در برنامه Submit() خواهد شد و در غير اين صورت پيغام مناسبي مبني بر نادرست بودن اطلاعات به كاربر داده خواهد شد.

هم چنين به منظور زيباسازي اين صفحه و جلوگيري از كدنويسي مجدد از CSS براي قالب بندي شكل ظاهري نوشته ها در اين صفحه استفاده كرده ايم:

 

<style type="text/css">

.font1 {

          font-family: Tahoma;

          color: #ff4e02;

          text-decoration: none;

          font-weight: bold;

          text-align: center;

          vertical-align: middle;

}

.font2 {

          font-family: Tahoma;

          color: #8B8B8B;

          font-size: 12px;

          text-decoration: none;

          text-align: right;

          vertical-align: middle;

}

</style>

 

font 1 براي تيتر و font 2 براي اطلاعات ديگر كه بر روي صفحه قرار گرفته است، استفاده مي شوند.

 

3- شرح صفحات ديناميك

در اين بخش از اين گفتار سعي بر اين شده است كه تا بطور كامل صفحات ديناميك مورد بررسي قرار بگيرند. در اين صفحات كه همگي از نوع html/php هستند و طبق استاندارد جهاني UTF-8 قالب بندي شده اند؛ همانند قبل تمامي اطلاعاتي كه توسط كاربر به سروري ارسال خواهد شد ابتدا در قسمت Client از لحاظ درستي تست مي شوند و سپس به سرور ارسال مي شود تا سرعت و سطح اطمينان سايت بالا رود. همانطور كه گفته شده به اين علت كه تمامي اين صفحات در يك قالب داخلي (<iframe>) بارگذاري مي شوند؛ در نتيجه در صورت اينكه كاربر سعي در مشاهده كدهاي php نوشته بكند به هيچ عنوان قادر به اين كار نخواهد بود و اين كار سطح اطمينان نسبتاً بالايي را باعث    مي شود كه يكي از اهداف اصلي ما در اين پروژه بوده است.

كاربراني كه با صفحات ديناميك سروكار دارند، مشتري و مدير سايت مي باشند كه مشتري تنها از يك صفحه و ديگر صفحات همگي متعلق به مدير سايت است و تنها اوست كه  مي تواند از امكانات اين صفحات استفاده كند.

در تمامي صفحات ديناميك از امكانات و تكنيك هاي مربوط به Session هاي php براي حفظ ردپاي كاربر وارد شده به سيستم استفاده كرده ايم به اين طريق كه وقتي كاربري Login مي نمايد شماره id آن در سرور حفظ مي شود تا هويت كاربر در تمامي صفحات ديناميك مشخص باشد.

حال به شرح و توضيح اين صفحات مي پردازيم:

 

 

 

1-3) صفحة پيشرفت كار (Progress.php)

اين صفحه داراي چهار قسمت جداگانه مي باشد؛ تيتر صفحه به مكاني كه نام شركت كاربر در آنجا چاپ خواهد شد يك عدد Textarea كه در آن توضيحات در مورد ميزان پيشرفت پروژه در آن قرار خواهد گرفت و قسمت آخر مربوط به عكس وارد شده توسط مدير سايت كه نشان دهندة پيشرفت توليد كالاي سفارشي بصورت تصويري است،       مي باشد. اين صفحه مخصوص كاربر (مشتري) مي باشد.

در قسمت كدنويسي اين صفحه در ابتدا با استفاده از شماره id كاربر كه در هنگام Login در متغير "$user–id" ذخيره شده است و نيز زبان php ،از بانك اطلاعاتي گزارش گيري كرده و مقادير مربوط به فيلدهاي نام شركت مشتري و نيز توضيحات مربوط به سفارش او را به ترتيب در دو متغير "$_corp" و"$_enp" ذخيره مي كنيم. كد مربوطه كه با زبان php نوشته شده است در زير آمده است:

 

<?

session_start();

$link=mysql_connect();

mysql_select_db('nmc-co',$link);

$result=mysql_query(" SELECT * FROM nmc WHERE id='$user_id' ",$link);

$search=mysql_num_rows($result);

if ($search!=0)

{

  $x=0;

  while ( $a_row = mysql_fetch_row( $result ) )

  {

    foreach ( $a_row as $field )

              {

                     if ((mysql_field_name( $result, $x ))=='corp' )

                                       $_corp=$field;

                     if ((mysql_field_name( $result, $x ))=='exp' )

                                        $_exp=$field;

                     $x++;}}}

?>

 

سپس مقاديري كه از بانك اطلاعاتي و جدول nmc بدست آمده است را به ترتيب در مكان هاي خود چاپ مي كنيم. مكاني كه نام شركت كاربر (مشتري) چاپ خواهد شد:

 

<TD height="58" align="center" valign="middle">

<font color="#6A6A6A" size="+1"><b><? echo($_corp); ?></b></font>

</TD>

 

مكاني كه توضيحات مربوط نمايش داده مي شود:

 

<textarea name="txt" cols="50" rows="8" readonly="readonly" wrap="off">

<? echo($_exp); ?>

</textarea>

 

و در نهايت جايي كه تصوير ذخيره شده بر روي سرور نشان داده خواهد شد، بايد توجه داشت كه نام تصوير ذخيره شـده مشابــه شماره id شخــص است و مكــان آن در شـاخه "userimg" مي باشد. لذا براي نمايش آن کافي است که شمارهid   ذخيره شده در متغير "$user_id" را در تگ <img> چاپ كرده تا تصوير موردنظر نشان داده شود:

 

<TD height="154" align="center" valign="middle">

<img height="145" width="155" src="userimg/<? echo($user_id) ?>.jpg">

</TD>

 

2-3) صفحه اصلي مربوط به مدير سايت (Admin.php)

اين صفحه بطور اختصاصي مربوط به مدير سايت مي باشد. قبل از اينكه شروع به توضيح اين صفحه بكنيم بايد ذكر شود به دليل اين كه كدهاي اين صفحه بسيار زياد     مي باشد و در نتيجه ما فقط در مورد تابع هاي موجود در صفحه صحبت مي كنيم و روش كلي عمليات را در صفحه توضيح خواهيم داد؛ و كدهاي صفحه را در انتها،داخل ضمايم مي آوريم.

اين صفحه بطور اختصاصي مربوط به مدير سايت مي باشد و اين تنها مدير سايت است كه مي تواند به اين صفحه وارد شود. هنگامي كه كاربر (مدير سايت) وارد صفحه  مي شود؛ عمل پيش فرضي كه براي او در نظر گرفته شده است تا بتواند انجام دهد، " ايجاد يك كاربر جديد "   مي باشد. در اين قسمت او مي تواند با وارد كردن نام، نام خانوادگي، نام شركت، نام كاربري و رمز عبور؛ سپس به قسمت توضيحات برسد. در اينجا مدير تنها مي تواند توضيحات را به يك زبان به خصوص وارد بانك اطلاعاتي كند.

در اين جا براي اينكه اين موضوع براي مدير سايت مشخص شود و نيز براي اينكه تنها داراي يك مقدار باشيم تا هنگام درجه كردن در بانك اطلاعاتي به مشكلي بر نخوريم. با استفاده از برنامه نويسي جاوااسكريپت، دو تابع مختلف نوشته ايم كه توسط آنها اگر كاربر هر كدام از دكمه هاي مربوط به توضيحات را فشار دهد؛ ديگري غير فعال شده و نيز مقادير داخل آن به طور كامل از بين مي روند. در اين صورت مدير تنها مي تواند توضيحات را با توجه به هويت كاربر انگليسي و يا فارسي وارد بانك نمايد.

توابعي كه براي اين منظور استفاده شده اند؛ dismenu(x) و enamenu (x) مي باشد. X  پارامتري است كه ما به اين توابع ارسال مي كنيم و نشان دهندة منويي است كه بايد فعال يا غير فعال شود، مي باشد. پس از وارد كردن توضيحات؛ بخش بعدي اي كه مدير سايت بايد براي آن مقداري را معين سازد، تصوير است. تصويري كه مي خواهد بر روي سايت Upload شود بايد حتماً از نوع ".jpg"باشد. بعد از پر كردن تمامي فيلدهاي در نظر گرفته شده با فشار دادن كليد " اعمال ورودي جديد " ؛ دوباره همانند قبل به تست صحت فيلدهاي وارد شده از لحاظ قالب تعريف شده توسط ما، از تابعي به نام()  Check استفاده      مي كنيم. در اين تابع براي تست فيلدهاي name، family و corp از عبارت  "re1 = /^[a-z\s]+$/i;"استفاده كرده ايم، كه تنها اجازة ورود حروف بين a-z و كاراكتر space را      مي دهد. به منظور تست فيلدهاي نام كاربري و رمز عبور عبارت "re2 = /^[a-z]\w{7}+$/i;" را به كاربرده ايم كه به معناي اين است كاراكتر اول حتماً يك حرف بين a-z و 7 كاراكتر بعدي مي توان حروف اعداد و كاراكتر “_“ باشد. طول رمز عبور و نام كاربري؛ 8 كاراكتر مي باشد. براي چك كردن درستي اينكه فايل وارد شده حتماً از نوع “jpeg” باشد از عبارت روبرو استفاده كرده ايم:             

"re3 = /^[a-z]{1}:(\\[^\\\ /:\*!"<>\1]+)+\.(jpg)$/i"

عبارت فوق تحت قالب قانون نامگذاري در سيستم عامل Windows مي باشد يعني هر گونه فايلي كه نام آن قابل قبول براي Windows و از نوع “.jpg” باشد توسط اين قالب قابل قبول خواهد بود. و در نهايت براي چك كردن اينكه كاربر حتماً حداقل 5 كاراكتر را در قسمت توضيحات وارد كرده باشد از عبارت روبرو استفاده كرديم: "re4=/^[\w\w]{5, }$/i" مقدار پيش فرض فرم مورد استفاده دراين صفحه Create.php مي باشد و نيز enctype مربوط به آن طوري در نظر گرفته شده است تا بتواند فايل را upload كند.

 

<form id="form1" action="create.php" method="post" target="pagechg" enctype="multipart/form-data">

 

اگر مقادير وارد شده صحيح باشد فرم مربوطه Submit   مي شود و اطلاعات به فايل Create.php ارسال مي شود در آنجا چك مي شود اگر نام کاربري همانند نام كاربري وارد شده وجود داشت پيغام خطا مي دهد، در غير اين صورت كاربر جديد را در بانك ايجاد خواهد نمود. (توضيح فايل Create.php در بخش بعدي همين گفتار آورده شده است).

از ديگر اعمالي كه مدير سايت مي تواند در اين صفحه صورت دهد، جستجوي كاربر، تغيير اطلاعات كاربر و حذف آن را مي توان نام برد. براي استفاده از اين موارد مدير سايت بايد در بالاي صفحه گزينه موارد ديگر را انتخاب كند تا براي او آن قسمت از صفحه كه تا كنون غير قابل استفاده بوده است فعال و بقيه صفحه (ايجاد كاربر جديد) غير فعال گردند.

 براي انجام فعال سازي و غير فعال سازي منوها از همان دو تابع dismenu (x) و enamenu (x) استفاده كرديم كه x نشان دهندة منوي موردنظر ما است. در اينجا مقدار x برابر 1 مي باشد.

حال كاربر (مدير سايت) با استفاده از منوي كشويي موجود و انتخاب گزينه دلخواه خود و فشار دادن كليد   " تاييد " به صفحه موردنظر مي رود. براي رفتن به صفحه اي ديگر بايد بعد از زدن كليد "تاييد" مقدار action فرم موجود در صفحه تغيير پيدا كند و نيز enctype آن به علت اين كه ديگر فايلي براي upload نداريم بايد تغيير كند. با توجه به انتخاب كاربر مقدار action مي تواند يكي از موارد روبرو باشد: Search.php ، modify.php و delete.php .

اين اعمال را توسط طراحي و پياده سازي تابعي به نام "go()" در زبان جاوا اسكريپت پياده سازي نموديم. با توجه به اهميت اين تابع و نمايش نحوه كاركرد آن، كدهاي مربوط به آن را در همين جا آورده ايم:

 

function go()

{let=false;

document.getElementById('form1').enctype="";

if (document.getElementById('sel1').selected){document.getElementById('form1').action="search.php";let=true;}

 else

   if (document.getElementById('sel2').selected){document.getElementById('form1').action="modify.php";let=true;}

   else

           if (document.getElementById('sel3').selected){document.getElementById('form1').action="delete.php";let=true;}

if (let) document.getElementById('form1').submit();

}//****End Of Go

 

همانطور كه ملاحظه مي شود، مقادير enctype و action تغيير مي كند و سپس فرم موردنظر Submit () خواهد شد.

 

3-3) صفحه جستجوي كاربر (Search.php)

اين صفحه به منظور ايجاد امكان جستجو براي Admin، طراحي و پياده سازي گرديده است. در اينجا مدير سايت جستجو را مي تواند برحسب نام، نام خانوادگي، نام كاربري و يا نام شركت صورت دهد.

براي جستجو فقط كافي است كه نوع جستجو را انتخاب و در قسمت Textbox مربوطه حرف و يا حروفي كه مدنظرش است را وارد كرده و دكمه جستجو را فشار دهد.

براي اينكه اطلاعات دريافتي از بانك اطلاعاتي در همين صفحه چاپ شود؛ دو قسمت Action مربوط به فرم از توابع php استفاده نموده ايم تا مقادير ارسالي براي خود صفحه ارسال شود:

      

<form action="<?php print $_SERVER['PHP_SELF']?>" target="pagechg" id="f1" method="post">

 

در قسمتي كه بايد اطلاعات ارسالي از سوي بانك اطلاعاتي و سرور، چاپ شود و به كاربر نمايش داده شود همگي را توسط زبان برنامه نويسي php صورت داده ايم.

 

<?

if (isset($_POST['searchtxt']))

{

$nothing=true;

$search=$_POST['searchtxt'];

$search=strtolower($search);

if ($search!='')

{

$link=mysql_connect();

mysql_select_db('nmc-co',$link);

switch ($_POST['kind'])

{

 case 'name':$result=mysql_query(" SELECT name,family,username,corp FROM nmc WHERE name like '%$search%' ",$link);break;

 case 'family':$result=mysql_query(" SELECT name,family,username,corp FROM nmc WHERE family like '%$search%' ",$link);break;

 case 'username':$result=mysql_query(" SELECT name,family,username,corp FROM nmc WHERE username like '%$search%' ",$link);break;

 case 'corp':$result=mysql_query(" SELECT name,family,username,corp FROM nmc WHERE corp like '%$search%' ",$link);break;

}//case

$search=mysql_num_rows($result);

if ($search!=0)

{ $nothing=false;

  $y=0;

  while ( $a_row = mysql_fetch_row( $result ) )

  {

    $x=0;

          foreach ( $a_row as $field )

              {

                     if ((mysql_field_name( $result, $x ))=='name' )

                                        $_search_arr[$y][$x]=$field;

                     if ((mysql_field_name( $result, $x ))=='family' )

                                        $_search_arr[$y][$x]=$field;

                     if ((mysql_field_name( $result, $x ))=='username' )

                                        $_search_arr[$y][$x]=$field;

                     if ((mysql_field_name( $result, $x ))=='corp' )

                                        $_search_arr[$y][$x]=$field;

                     $x++;

                   }//end of foreach

   $y++;

  }//while

  if ($y>5){echo("<marquee behavior='scroll' direction='up' height='210' align='center' loop='-1' scrollamount='1' scrolldelay='30' onmouseover=stop(); onmouseout=start(); >");}

  echo("<table width='380' border='1' cellpadding='0' cellspacing='0'>");

  echo("<tr bgcolor='#cccccc'>");

  echo("<td width='90' height='25' align='center' valign='middle'><b>نام</b></td><td width='90' align='center' valign='top'><b>نام خانوادگي</b></td><td width='90' align='center' valign='top'><b>نام کاربري</b></td><td width='110' align='center' valign='top'><b>نام شرکت</b></td>");

  echo("</tr>");

  for ($j=0,$i=0;$j<$y;$j++)

  {

    echo("<tr bgcolor='#dddddd'>");

          echo("<td width='90' height='25' align='center' valign='top'>");

          echo($_search_arr[$j][$i]);

          echo("</td><td width='90' align='center' valign='top'>");

          echo($_search_arr[$j][$i+1]);

          echo("</td><td width='90' align='center' valign='top'>");

          echo($_search_arr[$j][$i+2]);

          echo("</td><td width='110' align='center' valign='top'>");

          echo($_search_arr[$j][$i+3]);

          echo("</td>");     

          echo("</tr>");

  }

  echo("</table>");

  if ($y>5) {echo("</marquee>");}   

}//end of if ($search!=0)

mysql_close($link);

}

if ($nothing) echo("<b><font color='RED'>کاربري با اين مشخصات پيدا نشد </font></b>");

}//end of first if

?>

همانطور كه ملاحظه مي شود، در ابتدا شرطي را گذاشته ايم تا هنگامي كه كاربر كليد جستجو را فشار داده است اين قسمت از كد php اجرا گردد. با توجه به نوع انتخاب كاربر از منوي كشويي؛ دستور SELECT مخصوصي براي گزارش گيري از بانك اطلاعاتي انتخاب مي گردد اين كار توسط دستورات شرطي Switch در php صورت مي گيرد. سپس گزارش گيري از بانك اطلاعاتي انجام مي شود.

به منظور چاپ كردن گزارش گرفته شده توسط استفاده از دستورات html درون دستورات php جدولي را چاپ مي كنيم كه با توجه به تعداد ركورد پيدا شده سطرهاي آن بطور اتوماتيك اضافه شده و مقاديري را درون آن جاي      مي دهد. جدول موردنظر ما داراي چهار ستون مي باشد كه در آن، نام، نام خانوادگي، نام كاربري و نام شركت كاربر موردنظر را نشان مي دهد.

اگردر طي اين گزارش گيري نتيجه اي گرفته نشود (ركوردي پيدا نشود) پيغام مناسبي چاپ خواهد گرديد.

 

4-3)صفحه تغيير اطلاعات كاربر (modify.php)

همانطور كه از نام اين صفحه مشخص مي باشد، كاري كه انجام مي دهد تغيير اطلاعات و تصحيح آن براي كاربري خاص مي باشد. اين صفحه داراي چندين قسمت مي باشد كه به توضيح تك تك اين عناصر مي پردازيم.

در بالاي صفحه Textbox ي در نظر گرفته شده است تا مدير سايت نام كاربري مربوط به كاربر خاصي را كه   مي خواهد اطلاعات آن را تغيير دهد در آن جستجو كند اين كار توسط ارسال مجدد عناصر فرم به همين صفحه صورت    مي گيرد اگر كاربر موردنظر پيدا شود؛ مقادير خواسته شده از بانك اطلاعاتي استخراج شده و در تك تك فيلدهاي موجود درون صفحه قرار مي گيرد. اين كارها توسط كدهاي php زير صورت خواهد گرفت:

 

<? session_start();

if (isset($_POST['searchtxt']))

{

$search=$_POST['searchtxt'];

$search=strtolower($search);

$link=mysql_connect();

mysql_select_db('nmc-co',$link);

$result=mysql_query(" SELECT * FROM nmc WHERE username='$search' ",$link);

$search=mysql_num_rows($result);

$err=true;

if ($search!=0)

{

  $x=0;$err=false;

  while ( $a_row = mysql_fetch_row( $result ) )

  {

    foreach ( $a_row as $field )

              {

                     if ((mysql_field_name( $result, $x ))=='id' )

                                      {

                                        $_id=$field;

                                        //session_register('_id');

                                      }

                     if ((mysql_field_name( $result, $x ))=='username' )

                           {

                                        $_user=$field;

                                        //session_register('_user');

                                      } 

                     if ((mysql_field_name( $result, $x ))=='name' )

                                      {

                                        $_name=$field;

                                        //session_register('_name');

                                      } 

                     if ((mysql_field_name( $result, $x ))=='family' )

                           {

                                        $_family=$field;

                                        //session_register('_family');

                                      }

                     if ((mysql_field_name( $result, $x ))=='corp' )

                                      {

                                        $_corp=$field;

                                        //session_register('_corp');

                                      } 

                     if ((mysql_field_name( $result, $x ))=='password' )

                                      {

                                        $_pass=$field;

                                        //session_register('_pass');

                                      } 

                     if ((mysql_field_name( $result, $x ))=='exp' )

                                      {

                                        $_exp=$field;

                                        //session_register('_exp');

                                      } 

                     $x++;

                   }

  }

}

mysql_close($link);

}//end of first if

?>

حال اگر كاربر موردنظر موجود باشد و اطلاعات مربوط به او در فيلدها قرار گرفته شود؛ مدير سايت مي تواند تمامي فيلدها را تغيير داده و در صورت لزوم عكس را نيز تغيير دهد. پس از اعمال تغييرات موردنظر حال مدير سايت براي اعمال نهايي در بانك اطلاعاتي بايد دكمه "اعمال" در پايين صفحه را فشار دهد، و اگر منصرف شده، دكمه انصراف را فشار دهد تا به صفحه admin.php باز گردد.

هنگامي كه Admin دكمه اعمال را فشار دهد، همانند زمان ايجاد كاربر جديد تمامي ورودي هاي جديد از لحاظ قالب هاي مشخص شده براي بانك اطلاعاتي چك شده و در صورت درست بودن تمامي اطلاعات به فايل modify 2.php ارسال و در آنجا مقادير جديد Update مي شود.

قابل ذكر است كه مقدار username به هيچ عنوان قابل تغيير نمي باشد. (بدليل درخواست مدير سايت) تمامي كدهاي اين صفحه در ضمايم آورده شده است. در ضمن اعمال تغييرات حتماً با تائيد كاربر صورت مي پذيرد.

 

 

5-3) صفحه حذف كاربر (Delete.php)

اين صفحه نيز امكان حذف كاربر موجود را مي دهد. براي عمل حذف ، مدير سايت بايد حتماً نام كاربري آن كاربر را جستجو كند و در صورت وجود چنين كاربري تمامي اطلاعات كاربر نمايش داده خواهد شد.

مدير سايت به منظور حذف كاربر بايد دكمه حذف را فشار دهد و پس از تاييد دوباره از وي كاربر موردنظر حذف شده و تصوير مربوط به او نيز پاك خواهد شد. براي اين كار اطلاعات را به فايل Delete 2.php ارسال خواهد كرد، كه توضيح آن در بخش بعدي آمده است. در ضمن تمامي كدهاي اين صفحه بطور كامل در ضمايم آورده شده است.

 

4- توضيحات مربوط به فايل هاي صرفاً php و جاوا اسكريپت :

در اين بخش از گفتار چهارم به توضيح فايل هايي     مي پردازيم كه به هيچ عنوان در طراحي ظاهري پروژه نمايشي ندارند و فقط در پياده سازي برنامه نويسي به كار گرفته شده اند و صرفاً حاوي كدهاي مربوط به برنامه نويسي مي باشند. با استفاده از اين فايل پروژه كار خود را با سرعت بيشتر و امنيت بالاتري، انجام مي دهد.

 

1-4) فايل check.php

اين فايل همانطور كه در قسمت صفحات استاتيك و قالب اصلي صفحه سايت توضيح داده شده براي تست وجود كاربر خاصي در بانك اطلاعاتي مورد استفاده قرار مي گيرد. بدين صورت كه با استفاده از دو متغير مخفي اي كه از صفحه اصلي به اين فايل ارسال مي شود؛ در بانك اطلاعاتي نام كاربري را جستجو مي كند و در صورتي كه چنين كاربري وجود داشت، رمز عبور او را نيز با رمز عبوري كه درون بانك اطلاعاتي اختصاص داده شده است مقايسه كرده و در صورت درست بودن تست؛ شماره id كاربر موردنظر را در متغير "$user_id" ذخيره مي كند.

 

<?

session_start();

$link=mysql_connect();

mysql_select_db('nmc-co',$link);

$help_user=$HTTP_POST_VARS['user2'];

$help_pass=$HTTP_POST_VARS['pass2'];

$result=mysql_query(" SELECT * FROM nmc WHERE username='$help_user' ",$link);

$search=mysql_num_rows($result);

if ($search!=0)

{

  $x=0;

  while ( $a_row = mysql_fetch_row( $result ) )

  {

    foreach ( $a_row as $field )

              {

                     if ($field==$help_pass)

                                      {

                                        $signed_in="yes";

                                      }

                     if ((mysql_field_name( $result, $x ))=='id' )

                                      {

                                        $user_id=$field;

                                        session_register('user_id');}

                                        $x++;

                                      }

  }

}

mysql_close($link);

if (!isset($signed_in)) $signed_in="no";

session_register('language');

if ($language==0)

          {

            $link="About-us.html";

            $mess="en";

          }       

            else{

                             $link="About-us_p.html";

                             $mess="fa";

                     }

 ?>

 

سپس توسط جاوا اسكريپت چك مي شود كه اگر مقدار id برابر با 1 بود، admin وارد سيستم شده است.

مقدار action مربوط به فرم درون فايل را برابر      "admin,php" قرار داده و به آن صفحه برود در غير اين صورت تشخيص داده مي شود كه يك كاربر معمولي وارد سيستم شده است و مقدار action در اين حالت برابر "progress.php" قرار خواهد گرفت.

اگر چنين نام كاربري و يا رمز عبوري وجود نداشت پيغام مناسبي به كاربر ارائه خواهد شد و به صفحه اصلي سايت هدايت خواهد شد تا دوباره سعي خود را در ورود اطلاعات انجام دهد.

 

 

<script language="javascript" type="text/javascript">

function say()

{

if (document.getElementById('help3').value=="en")

          window.alert("You Are Not Registered Yet Or You Typed Your Username Or Password Incorrectly !");

  else

          window.alert("! از صحت نام کاربري و کلمه عبور خود اطمينان حاصل فرمائيد");

}

</script>

</head>

<body>

<form id="f1" action="<? echo ($link) ?>" target="pagechg">

<input type="hidden" id="help3" value="<? echo ($mess) ?>">

<input type="hidden" id="help1" value="<? echo ($signed_in) ?>">

<input type="hidden" id="help2" value="<? echo ($user_id) ?>">

<script language="javascript" type="text/javascript">

if (document.getElementById('help1').value=="yes")

    {

           if (document.getElementById('help2').value=="1")

                 document.getElementById('f1').action="admin.php";

                    else      

             document.getElementById('f1').action="progress.php";

          }

if (document.getElementById('help1').value=="no")

    {

           say();

          }

document.getElementById('f1').submit();            

</script>

</form>

 

2-4) فايل Create.php

اين فايل زماني صدا زده مي شود كه مدير سايت قصد ايجاد كاربر جديدي را دارد و تمامي اطلاعات را در قالب اصلي بانك اطلاعاتي وارد كرده است. در اينجا در بانك اطلاعاتي جستجو مي شود اگر نام كاربري اختصاص داده شده در بانك وجود داشت به مدير سايت پيغام مناسبي مبني بر اينكه چنين كاربري وجود دارد داده خواهد شد و admin به صفحه قبلي دوباره هدايت خواهد شد. در غير اين صورت با استفاده از زبان php كاربر را ايجاد و تصوير موردنظر را بر روي سرور upload مي كند.

ما در اينجا فقط كدهاي مربوط به upload كردن تصوير را مي آوريم و بقيه كدها را تماماً در ضمايم خواهيم آورد:

 

  /* Start Of Uploading Picture */

   $default_dir="./userimg";

   $userfile=$_FILES['upload']['tmp_name'];

   $userfile_name=$_FILES['upload']['name'];

   $userfile_size=$_FILES['upload']['size'];

   $userfile_type=$_FILES['upload']['type'];

   $userfile_error=$_FILES['upload']['error'];

   $filename= basename($userfile_name);

   if (!@copy($userfile,"$default_dir/$filename")) 

           $err_upload=true;

          rename("$default_dir/$filename","$default_dir/$_id.jpg");

   /* End Of Uploading Picture */  

 

3-4) فايل delete 2. Php

اين فايل زماني مورد استفاده قرار مي گيرد كه مدير سايت مطمئن از حذف كاربر خاصي باشد و در پيغام ظاهر شده در صفحه delete.php گزينه اعمال را انتخاب كرده باشد.

<?

session_start();

$link=mysql_connect();

mysql_select_db('nmc-co',$link);

mysql_query("DELETE FROM nmc WHERE id='$_id'",$link);

mysql_close($link);

unlink("userimg/$_id.jpg");

?>

<html>

<body>

<form action="admin.php" method="post" id="f1" target="pagechg">

</form>

<script language="javascript" type="text/javascript">

document.getElementById('f1').submit();

</script>

</body>

</html>

 

همانطور كه ملاحظه مي كنيد ركورد موردنظر توسط فرمان delete و با كمك متغير $_id كه نگاهدارنده  id كاربر موردنظر براي حذف شدن را مي باشد؛ حذف كرده و سپس فايل مربوط (تصوير) به او را نيز از روي سرور با دستور "unlink" حذف مي كند. سپس توسط دستورات جاوااسكريپت به صفحه admin.php مي رود.

 

4-4) فايل Modify 2. Php

اين فايل نيز همانطور كه در بخش هاي قبلي گفته شد براي اعمال نهايي تغييرات در بانك اطلاعاتي مورد استفاده قرار مي گيرد و سپس از اعمال تغييرات به صفحه admin.php برگردانده مي شود. در صورت تغيير عكس مربوطه؛ به اين فايل، تصوير موردنظر را در سرور پاك كرده و عكس جديد را در آنجا كپي و نام آن را با توجه به مقدار متغير"$_id" تغيير مي دهد. كدهاي زير مربوط به اين كار مي شوند:

if ($userfile_name!="")

   {

      unlink("userimg/$_id.jpg");

      if (!@copy($userfile,"$default_dir/$filename")) 

           $err_upload=true;

            rename("$default_dir/$filename","$default_dir/$_id.jpg");

}

لازم به ذكر است كه سورس اين فايل نيز در قسمت ضمايم آورده شده است.

 

5-4) فايل Sendmail.php

اين فايل زماني مورد استفاده قرار خواهد گرفت كه شخصي قصد ارسال نامه الكترونيكي به مدير سايت را داشته باشد. هنگامي كه كاربر تمامي اطلاعات خواسته شده در صفحه Contact-us_p.html يا Contact-us.html؛ را بدرستي وارد كرده باشد و دكمه ارسال را بزند؛ اين فايل با استفاده از دستورات زير نامه اي را به مدير سايت    ) info@nmc-co.com (ارسال مي كند:

      

<?

$mail_to="info@nmc-co.com";

$mail_subject=$_POST['subject'];

$mail_body=$_POST['message'];

$mail_from=$_POST['from'];

$mail_headers="From: $mail_from";

$err=true;

if(mail($mail_to,$mail_subject,$mail_body,$mail_headers))

    $err=false;

?>

 

با توجه به اينكه نامه ارسالي با موفقيت ارسال شده باشد و يا خطايي در هنگام ارسال رخ دهد؛ پيغام مناسبي نشان داده خواهد شد كه تمام كدهاي مربوط آنها در ضمايم آخر پروژه آورده شده است.

 

6-4) فايل Signout.php

در تمامي صفحات ديناميك موجود در اين پروژه گزينه بنام "‎خروج" وجود دارد كه به منظور خروج از اين صفحات مي باشد (Logout). براي اين كار تنها كافي است تا مقدار متغيرهاي ذخيره شده توسط  Sessionهاي مربوط php از حافظه بطور كامل پاك شوند و اين كار تنها توسط دو دستور صورت خواهد گرفت؛ و بعد از آن به صفحه اصلي بازگردانده مي شويم.

<? session_start(); ?>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<body>

<form action="About-us.html" target="pagechg" id="f1">

<input type="hidden" id="1" value="<? echo ($language) ?>"

</form>

<script language="javascript" type="text/javascript">

if (document.getElementById('1').value==1)

        document.getElementById('f1').action="About-us_p.html";

document.getElementById('f1').submit();

</script>

<? session_unset(); ?>

</body>

</html>

 

7-4) فايل Picfader.js

اين فايل كه تمام به زبان جاوا اسكريپت مي باشد، شي اي از نوع <img> را دريافت مي كند و بر روي آن افكت هايي هم چون fade و unfade كردن را انجام مي دهد. ميزان fade كردن و نيز unfade ، توسط پارامترهاي ارسالي معين   مي شوند. كد كامل اين فايل در زير آورده شده است.

      

nereidFadeObjects = new Object();

nereidFadeTimers = new Object();

/* object - image to be faded (actual object, not name);

 * destop - destination transparency level (ie 80, for mostly solid)

 * rate   - time in milliseconds between transparency changes (best under 100)

 * delta  - amount of change each time (ie 5, for 5% change in transparency) */

function nereidFade(object, destOp, rate, delta){

if (!document.all)

return

    if (object != "[object]"){  //do this so I can take a string too

        setTimeout("nereidFade("+object+","+destOp+","+rate+","+delta+")",0);

        return;

    }

    clearTimeout(nereidFadeTimers[object.sourceIndex]);

    diff = destOp-object.filters.alpha.opacity;

    direction = 1;

    if (object.filters.alpha.opacity > destOp){

        direction = -1;

    }

    delta=Math.min(direction*diff,delta);

    object.filters.alpha.opacity+=direction*delta;

    if (object.filters.alpha.opacity != destOp){

        nereidFadeObjects[object.sourceIndex]=object;

        nereidFadeTimers[object.sourceIndex]=setTimeout("nereidFade(nereidFadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);

    }

}

 

 

منبع : سايت علمی و پژوهشي آسمان -- صفحه اینستاگرام ما را دنبال کنید
اين مطلب در تاريخ: سه شنبه 26 اسفند 1393 ساعت: 10:29 منتشر شده است
برچسب ها : ,
نظرات(0)

نظرات


کد امنیتی رفرش

شبکه اجتماعی ما

   
     

موضوعات

پيوندهاي روزانه

تبلیغات در سایت

پیج اینستاگرام ما را دنبال کنید :

فرم های  ارزشیابی معلمان ۱۴۰۲

با اطمینان خرید کنید

پشتیبان سایت همیشه در خدمت شماست.

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

درباره ما

آدرس خراسان شمالی - اسفراین - سایت علمی و پژوهشی آسمان -کافی نت آسمان - هدف از راه اندازی این سایت ارائه خدمات مناسب علمی و پژوهشی و با قیمت های مناسب به فرهنگیان و دانشجویان و دانش آموزان گرامی می باشد .این سایت دارای بیشتر از 12000 تحقیق رایگان نیز می باشد .که براحتی مورد استفاده قرار می گیرد .پشتیبانی سایت : 09159886819-09338737025 - صارمی سایت علمی و پژوهشی آسمان , اقدام پژوهی, گزارش تخصصی درس پژوهی , تحقیق تجربیات دبیران , پروژه آماری و spss , طرح درس