وب ﺑﺮ ﻣﺒﺘﻨﯽ ﻧﻮﯾﺴﯽ ﺑﺮﻧﺎﻣﻪ

65
ﺗﻌﺎﻟﯽ ﺑﺴﻤﻪ درﺳﯽ ﺟﺰوه وب ﺑﺮ ﻣﺒﺘﻨﯽ ﻧﻮﯾﺴﯽ ﺑﺮﻧﺎﻣﻪ وب ﺻﻔﺤﺎت ﻃﺮاﺣﯽ(HTML) دﻫﻨﺪه ﺳﺮوﯾﺲ ﺳﻤﺖ ﻧﻮﯾﺴﯽ ﺑﺮﻧﺎﻣﻪ(PHP)

Transcript of وب ﺑﺮ ﻣﺒﺘﻨﯽ ﻧﻮﯾﺴﯽ ﺑﺮﻧﺎﻣﻪ

بسمه تعالی

جزوه درسی

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

(HTML) طراحی صفحات وب

(PHP)برنامه نویسی سمت سرویس دهنده

2صفحه

طراحی صفحات وب : بخش اول

HTML مقدمه ای بر-1 يا اچتمل و نحوه ايجاد يک فايل ساده و نمايش آن در صفحه مرورگرتان آشناHTMLيهای فايلهایدر اين درس با ويژگ

. خواهيد شد

چيست؟HTMLيک فايل

•HTMLو يا اچتمل بخوانيد" اچ تی ام ال"را .

•HTMLبرگرفته از حروف اول Hyper Text Markup Languageميباشد .

ميباشدmarkup tagاشد که متشکل ازميبtext فايلی از نوعHTMLيک فايل• . ها

رویBrowserمرورگر يا• . ها می فهمد که چگونه بايد صفحه را نمايش بدهدmarkup tag از

ياhtm بايد دارای انشعابHTMLيک فايل• باشد. html و

. ساده ای قابل ايجاد استویرایشگر ميباشد که با هرtext فايلی از نوعHTMLيک فايل•

. بيان چگونگی نمايش اطالعات ميباشد ) markup tags( يفه اصلی تگ های اچتملوظ• ميخواهيد که يک فايل اچتمل بسازيد؟

:و متن زير را در آن تايپ کنيد را باز کردهNotepadاگر از ويندوز مايکروسافت استفاده ميکنيد،

<html> <head> <title>Title of page</title> </head> <body> This is my first html page. <b>This text is bold</b> </body> </html>

درايوtest.htmسپس فايل را با نام مثال . ذخيره کنيد\:d در

( Browerبرای ديدن فايل اچتمل باال در مرورگر يا کافی است که از روی ) فایرفاکسمعموال اينترنت اکسپلورر و ياتان

توجه کنيد،Addressبه آدرس فايل در قسمت. ( فايل باال را از روی محل ذخيره شده بخوانيدFile|Open fileمنوی

d:\test.htm) مثال

تهیه وتدوین 3صفحه

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

.مرورگرتان خوانده شده و سپس نمايش داده خواهد شد

) HTML Editors( های اچتملویرایشگرنکته ای در مورد

ياFrontPage مانندنرم افزارهای طراحی صفحات وب ازبا وجوديکه با استفاده امکان نوشتن وDreamweaver و

" طراحی صفحات اچتمل بصورت WYSIWYGياYou GetWhatIsSee " What Youوجود دارد اما توصيهته و هيچگاه بدونهای معمولی متن برای تهيه صفحات خود استفاده کرده، عملکرد تگها را شناخویرایشگرميشود که از

.اينکه بدانيد کاربرد يک تگ چيست آنرا بکار نبريد

2- & HTML WWW. با مفاهيم وب، اينترنت، مرورگرها و استانداردهای وب آشنا خواهيد شدبخشدر اين

منظور از وب چيست؟ . وب شبکه ای است متشکل از تمامی کامپيوترهای دنيا، شبکه ای از شبکه ها

WWW ،وب،webياWebWideWorldهمگی يک چيزند . . تمامی کامپيوترهای وب ميتوانند با هم ارتباط داشته باشند

. با هم ارتباط برقرار ميکنندHTTPکامپيوترهای موجود در وب با کمک استاندارد ارتباطی يا پروتکل

HTTPيعنيHyper Text Transfer Protocol) پروتكل انتقال ابرمتن( کارکرد وب چگونه است؟نحوه

. و يا صفحات وب قرار دارندWeb Pages به ناماطالعات وب داخل فايلهایی

. يا کامپيوترهای سرويس دهنده وب ذخيره شده اندWeb Serverاين فايلها يا صفحات روی

. استفاده ميشودWeb Browserبرای ديدن صفحات وب از نرم افزاری به نام مرورگر و يا

. جزو معروفترين مرورگرها حساب ميشوندFirefoxوInternet Explorerورگردو مر

بصورت رایگان و اوپن سورسFirefox متعلق به شرکت مايکروسافت و مرورگرInternet Explorerمرورگر . ميباشد

مرورگرها چگونه به خواندن صفحات وب ميپردازند؟

. خواندن يک صفحه از وب سرور ميکند درخواستی برایRequestيک مرورگر با کمک يک

بوده و شامل آدرس صفحه مورد نظرHTTP يا درخواست بر اساس استاندارد ارتباطی يا پروتوکلRequestاين . ميباشد

نوعhttp//:بخش. استhttp://www.astovan.com/faq.htmlآدرس يک صفحه وب چيزی شبيه

faq.html است وDomain نام دومين ياwww.astovan.comين ميکند،پروتوکل و يا استاندارد ارتباطی را تعي . نام صفحه ای است که بايد خوانده شود

مرورگرها چگونه صفحات وب را نمايش ميدهند؟ . چگونگی نمايش يک صفحه وب بصورت مستتر در آن وجود دارد

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

. بيان چگونگی نمايش اطالعات ميباشدHTML tags ) ( وظيفه اصلی تگ های اچتمل

. است> p/<! اين تگ پاراگراف است> p<يک تگ اچتمل چيزی شبيه چه کسانی استاندارد های وب را تعيين ميکند؟

. نداردسازندگان مرورگرهادیگرتعيين استاندارد های وب ربطی به شرکتهای مايکروسافت و يا

World Wide Web ConsortiumياW3Cمتولی تعيين استانداردهای وب است .

HTML, CSSو XMLاز مهمترين استانداردهای تصويب شده وب ميباشند .

4صفحه بر وب برنامه نویسی مبتنی

)Elements ( عناصر-3

ای ايجاد عناصر از تگ ها يا ها تشکيل ميشود و برelement است که از عناصر ياtextيک فايل اچتمل متنی از نوع

tagsدر اين فصل با عناصر و تگ ها اچتمل آشنا خواهيد شد. استفاده ميشود .

HTML Tags) (تگ های اچتمل . ساخته ميشوندبا کمک تگ های اچتمل عناصر• . تعريف شده است عنصر80در زبان اچتمل حدود• . ساخته ميشوند< و > کاراکترتگ های اچتمل بوسيله دو•

> b>test</b<تگ های اچتمل معموال بصورت زوج ظاهر ميشوند، مانند•

. تگ پايانی نام دارد> /b<تگ شروع و تگ دوم مثال> b<تگ اول در يک زوج تگ مثال• .ميده ميشودنامتن بين تگ اول و تگ دوم در يک زوج تگ محتوای عنصر•

بزرگlower case) (تگ های اچتمل را ميتوانيد بوسيله حروف التين کوچک• بنويسيد وupper case) (و يا

case sensitive)برای مثال دو تگ. نيستند)حساس به حالت>b <و>B <ولی شديدا توصيهمعادل هم هستند

.ده شود از حروف کوچک استفاXHTMLميشود که به خاطر سازگاری با

) HTML Elements(عناصر اچتمل :مثال بخش مقدمه را در نظر بگيريد

<html> <head> <title>Title of page</title> </head> <body> This is my first html page. <b>This text is bold</b> </body> </html>

:نمونه ای از يک عنصر اچتمل

<b>This text is bold</b> This text is"محتوای اين عنصر عبارت. پايان می يابد> /b<شروع شده و با تگ> b< اچتمل باال با تگعنصر

"bold .الزم به ذکر است که کاربرد تگاست>b <نمايش توپر ياboldمتون است . :مثال دوم از يک عنصر اچتمل***

<body> This is my first homepage. <b>This text is bold</b> </body>

> <شروع شده و با تگbody> <عنصر اچتمل باال با تگ body/همانطور که ميبينيد گاهی يک عنصر. پايان می يابد

الزم به يادآوری. يک متن اچتمل استbodyتعيين بدنه اصلی ياbody> <وظيفه تگ.حاوی يک يا چند تگ ديگر ميباشد

فايلbody> <است که تنها اطالعات بخش . اچتمل در صفحه مرورگر نمايش داده خواهد شديک

) Tag Attributes(شناسه های يک تگ

5صفحه بر وب برنامه نویسی مبتنی

ميگويند و وظيفه آنها بيان ديگرخاصيتتگ ها ميتوانند حاوی اطالعات اضافی ديگر باشند، به اين اطالعات شناسه يا

وجود دارد که رنگbgcolorمشناسه ای به ناbody> <مثال در مورد تگ. ميباشدElementاطالعات يک عنصر يا

تان سياه باشد کافیرا تعيين ميکند برای نمونه اگر ميخواهيد که رنگ زمينه صفحه اچتمل) background(زمينه متن : است که به شکل زير عمل کنيد

<body bgcolor="black"> bodywidth> <در مثال زير تگ مقاديرborderوheight ،align،دارای چهار شناسه مختلف با نامهای و

center،60،100ميباشد0و .

<table border="0" width="100" height="60" align="center" > ...... </table>

نوشته ميشوند و هميشه به تگ شروع يک عنصر ياname=”value"نام يا=”مقدار"شناسه ها به صورت کلی

Elementر در يک عنصر شناسه ها قيد نشوند از مقادير قراردادی يا اضافه ميشوند و نهايتا اگdefaultآنها استفاده

شناسهbodyخواهد شد مثال در تگ . نوشته نشود از رنگ سفيد برای زمينه صفحه استفاده خواهد شدbgcolor اگرفقط در مواردی که مقدار يکبنويسيد و اختيار دست شما است' و يا" مقدار يک شناسه را ميتوانيد داخل نويسه های

. استفاده شود' هم ميشود بايد از نويسه" شناسه شامل نويسه

) Basic Tags( تگ های اصلی-4

های اچتمل هستند و در اين فصل با عناصر و تگ های پايه وelementsاجزا تشکيل دهنده عناصر ياtags ) ( تگ ها

:مهمآشنا خواهيد شد) Headings( سر تيترها-1-4

معرف کوچکترين> h6<معرف بزرگترين سر تيتر و> h1<. تعيين ميشوند> h6<تا> h1<سر تيترها با کمک تگ هایمرورگر به هنگام نمايش يک سر تيتر بصورت اتوماتيک يک سطر خالی قبل و بعد از هر سر تيتر اضافه خواهد. سر تيتر است

. کرد

This is a heading This is a heading This is a heading …

<h1>This is a heading</h1> <h2>This is a heading</h2> <h3>This is a heading</h3> <h4>This is a heading</h4> <h5>This is a heading</h5> <h6>This is a heading</h6>

)Paragraphs( پاراگرافها-2-4

مرورگر به هنگام نمايش يک پاراگراف بصورت اتوماتيک يک سطر خالی قبل و بعد.معرفی ميشوند> p<پاراگرافها با کمک تگ . از آن اضافه خواهد کرد

<p>This is a paragraph</p> <p>This is another paragraph</p>

)Line Breaks( سطر جديد-3-4

6صفحه بر وب برنامه نویسی مبتنی

از نوع تگ> br<تگ. جديد ايجاد نميشوددر اينحالت يک پاراگراف.استفاده ميشود> br<برای رفتن سر سطر جديد از تگ

. نميباشد) > /br<مثال(های خالی بوده و دارای تگ انتهائی

<p>This <br> is a para<br>graph with line breaks</p> :خروجی

This is a para graph with line breaks

)Comments( توضيحات در اچتمل-4-4برای اينکار بايد متن و شرح را درون. در مورد کدهای اچتمل بايد از تگ خاصی استفاده کنيدبرای نوشتن شرح و توضيحات

را در نظر نگرفته و محتوی آنها را نمايش نخواهد داد و فقط شرح وcommentمرور تگ های. قرار دهيد> !-- و--<عالئمبه محل نويسه. ( کد اچتمل کار خواهند کرد مفيد خواهد بودتوضيحات برای برنامه نويس و ديگر افرادی که احتماال در آينده با

) فقط يکی و آنهم در ابتدا! توجه کنيد"!"

<!-- This is a comment --> : چند نکته کاربردی-5-4و به دليل تفاوت دقت نمايش..)،فایرفاکساکسپلورر،(توجه داشته باشيد که بدليل وجود مرورگرهای متفاوت•

ش کامپيوترها، صفحات اچتمل با اندکی تفاوت در حالتهای مختلف نمايش داده ميشوند و هميشه سعی کنيد کهصفحه نماي

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

تان تايپ ميکنيد با چيزی که مرورگر نمايش خواهد دادیشگرویرااز نظر فاصله و سطر بندی، متنی که در صفحه•

ویرایشگرو خطهای خالی متن در صفحهspace) (هميشه به ياد داشته باشيد که فاصله های اضافی.متفاوت خواهد بود . توسط مرورگر در نظر گرفته نشده و نمايش داده نخواهد شد

.. استفاده کنيد> br<الی استفاده نکنيد و به جای آن از تگخ> p<برای ايجاد يک سطر جديد هيچگاه از يک تگ•

. مرورگرها به هنگام نمايش بعضی عناصر بصورت اتوماتيک يک سطر خالی قبل و بعد از آن عنصر نمايش خواهند داد•

. نام برد) >..h<(و سرتيترها) >p<(برای نمونه اين گروه از عنصرها ميتوان از پاراگراف

سبب نمايش يک خط افقی خواهد شد و در واقع بخش های مختلف مطالبHorizontalRolerيا> hr<تگ• . اين صفحات با کمک اين تگ از هم جدا شده اند

تگهای اصلیتوجه داشته. در جدول زير عناصر معرفی شده در اين فصل به همراه لينکهای مربوطه جهت مطالعه بيشتر آورده شده است

موجود است و همچنين به شناسه های کنارگذاشتهAttributesر فهرستی از شناسه ها ياباشيد که برای هر عنص

. در نسخه های آينده اچتمل توجه داشته باشيد و سعی کنيد که از آنها استفاده نکنيدDeprecated) (شدهتگ کاربرد

<html> نشان شروع متن اچتمل

<body> تعيين بدنه و قسمت اصلی صفحه اچتمل

<h1>-<h6> h6 تاh1رهایتعريف سر تيت<p> تعريف پاراگراف

<br> رفتن سر خط جديد

<hr> نمايش خط افقی

7صفحه بر وب برنامه نویسی مبتنی

<!--> commentنوشتن شرح و فارسی نويسی-5

:سؤاالت مربوط به فارسی نويسی را ميتوان به سه گروه عمده تقسيم کرد م ؟ي چگونه فارسی بنويس- م؟ي چگونه فارسی بخوان- م؟ي چگونه صفحات اچتمل فارسی را نمايش ده- دو نکته بسيار مهم در مورد فارسی نويسی-1-5

UTF-8روش کدگذاری•نکته.کنيداستفادهUTF-8اریذاکيدا توصيه ميشود که برای تايپ و تمايش متون فارسی از استاندارد يونيکد و روش کدگ

صفحات فارسی است که برای اينکار بايد از متاتگencodingحيح متون فارسی تعيين نوع کدگذاری يامهم در نمايش ص

بخشhttp-equivخاصی به نام : صفحات اچتمل به شکل زير استفاده شودhead در

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> dirام ی به نattributeشناسه يا•

در مورد متون و جمالت فارسی.ميباشد) ltr( از چپ به راستdefaultجهت نمايش متون التين به صورت پيش فرض و

يا همانdirبه نامایشناسه. تغيير دهيد" راست به چپ"بايد با کمک روشی جهت نمايش پيش فرض را به

directionدارای دو مقدار ممکن ميباشداين شناسه. اين کار را برای شما انجام ميدهد :

dir="ltr" , Left-to-right text. - چپ به راست

dir="rtl" , Right-to-left text. - راست به چپ

<p dir="rtl"> سالم بر دنيای وب </p> .وجود داردdir از عناصر و تگ های اچتمل امکان استفاده از شناسهاکثردر

) HTML Source(ای اچتمل نحوه ديدن کدمنبع کده-2-5

oاگر ميخواهيد که سورس کدهای اچتمل صفحات وب را ببينيد کافی است که در منویViewگزینهمرورگر

SourceياPage Sourceاجرا کنيدرا.

oاگر طراح سايت با کمکJava Scriptکادر زیر مانع ديدن سورس توسط شما ميشود، ابتدا در:

Tools/Internet Options/Security/Custom Level .و سپس مراحل باال را تکرار کنيدdisable) (ا غير فعال کردهر امکانات جاواسکريپتمرورگر

تگهای فرمت دهی متون-6

تگهای فرمت دهی متون

Start Tag کاربرد

<b> ايش توپرنم

<i> نمايش ايتاليک يا کج

<small> نمايش در اندازه کوچک

<strong> نمايش قوی ؟!

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

8صفحه

<sub> نمايش پايين تر از خط افقی

<sup> نمايش باالتر از خط افقی

<strike> از رده خارج

<u> زيرخط دار

<pre> نمايش متون از قبل فرمت شده

نهادهای کاراکتری -7

شروع يک تگ و نويسه>مثال نويسه( معنی خاصی بودهدارایCharacter) (در استاندارد اچتمل گروهی از نويسه ها

در اين قسمت با. باشندو برای نمايش آنها در صفحاتتان مستقيما قابل مصرف نمي. ) انتهای يک تگ را نشان ميدهد<

. فرا خواهيد گرفتCharacter Entitiesفهرست اين نويسه ها آشنا شده و نحوه درج آنها را با کمک

1-7- Character Entities

هاcharacter entitiesدر اچتمل بعضی از نويسه ها دارای معنی خاصی بوده و برای نمايش آنها در صفحاتتان بايد از

: از سه قسمت تشکيل ميشودcharacter entitiesيک. استفاده کنيد

) & (ampersand نويسه-1

نويسهentity نام-2 entity و سپس شماره عددی# يا ) ; (semicolon و نهايتا نويسه-3

;lt&> برای مثال برای نمايش نويسه ازدو روش وجود دارد، بايد از entity نامltدر اين مثال. استفاده کنيد;60#& يا. شماره عددی آن ميباشد60و

ز روی نامش ميباشد و عيب آن اين در مقابل استفاده از شماره عددی آن سهولت يادآوری آن اentityمزيت استفاده از نام

ها را قبول ندارند ولی در عوض همگی شماره های عددیEntityاست که تمامی مرورگرها نام گذاريهای موجود برای

entityتوجه داشته باشيد که. ها را بخوبی ميشناسندentityها به کوچک و بزرگي حروف حساس هستند و در واقع

Case Sensitiveميباشند .

-non ميباشد و نام رسمی آنBlankياSpace در اچتمل، نويسه فاصله ياcharacter entityپر کاربردترينbreaking spaceهمانطور که ميدانيد مرورگرها فاصله های اضافی را در نظر نگرفته. ميباشد)truncate

(spacesرای نمايش فاصله های اضافی بايد از تای آنرا ناديده ميگيرند و ب9 نويسه فاصله،10و مثال از&nbsp; . استفاده کنيد

هاکاراکتر فهرست پرکاربردترين-2-7نمایش نام کد عددی

&nbsp; &#160;< &lt; &#60;> &gt; &#62;& &amp; &#38;" &quot; &#34;

9صفحه بر وب برنامه نویسی مبتنی

' &#39;

)HTML Links( پيوندهای اچتمل-8

و نحوه به کار گيری آنها آشنا خواهيدAياAnchor، تگ های مربوطه مخصوصا تگLinks ) ( در اين قسمت با پيوندها

. تشريح خواهند شدnameوtarget،همچنين شناسه های بسيار مهم href. شد

درHyper Text) (اصطالح ابرمتنميشوند. Link) (در محيط وب، صفحات اچتمل با کمک پيوندها به يکديگر متصل

داردLinear) ( خطیمقابل متن در يک متن معمولی خواندن به شکل خطی و از ابتدا به انتها ميباشد و در مقابل در. قرار

اين کار با کمک عنصری.با کمک پيوندها ميتوان از يک متن به هر صفحه ديگر در وب متصل شدHyper) (يک متن مختلط

. ميسر ميگرددAnchor ياAبه نام! معلوم الحال

شناسهAnchorتگ -1-8 href وپيوندها ميتوانند به بخش ديگری از همان صفحه، صفحات. استفاده ميشود> a<برای ايجاد پيوند به صفحات ديگر از تگ

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

<a href="url">Some Text</a>

برای تعيين. ميباشد بکار رفته استurl برای ايجاد پيوندی به صفحه ای ديگر که آدرس اينترنتی آن>a<در مثال باال تگ

همانhrefمقصد و يا آدرس صفحه جديد از شناسه ای به نام ميباشد، استفاده ميشود وreferencehyerlink که) و يا تصويری(بخش قابل رويت پيوند و در واقع متــنــی. فحه مقصد استمقدار اين شناسه در واقع همان آدرس اينترنتی ص

قرار داده<a/> و>a<که توسط مرورگر نمايش داده خواهد شد و بازديدکننده روی آن کليک خواهد کرد ميان تگهای

. اشداست ولی ميتواند حتی يک تصوير بSome Text" "ميشود و هر چند که در مثال باال اين بخش متن

: ايجاد خواهد کردgoogle.comبرای نمونه کد اچتمل زير پيوندی به سايت

<a href="http://www.google.com/">Visit Google Site</a>

خواهدGoogleو مرورگر پيوند باال را به شکل زير نمايش داده و در اثر کليک روی پيوند توسط بازديدکننده، مرورگر به سايت . رفت

در مثال باال پس از کليک روی پيوند، مرورگر سايت. امکان تعيين مقصد پيوند جديد فراهم ميشودtarget شناسهبا کمک

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

مقدارtargetبايد از شناسه درgoogle.comمثال زير سبب باز شدن سايت. استفاده کنيدبرای آنblank_" " و : پنجره جديدی خواهد شد

<a href="http://www.google.com/" target="_blank">Visit Google Site</a>

خواص تگtargetکاربرد حالتهای مختلف شناسه

target="_blank" مرورگر پيوند را در يک پنجره جديد باز ميکند.

target="_self" حالت پيش فرض يا. (مرورگر پيوند را همان پنجره باز ميکند (defaulttarget="_parent" مرورگر پيوند را فريمparentميکند ) کاربرد در مبحث فريمها. ( باز

target="_top" مرورگر پيوند را در فريم مادر و اصلی باز ميکند.

) Tables( جداول-9

10صفحه بر وب برنامه نویسی مبتنی

در جداول و تگ های مربوطه مخصوصا تگهایborder، سلولها يا خانه ها، مرز وTable ) ( با عنصر جدولدر اين درس

TABLE ،TD , TRطرح بندی آرایش وعناصر برایتوجه داشته باشيد که جداول یکی از مهمترین. آشنا خواهيد شد . ميباشندصفحات

جدولها-1-9

تعريف ميشوند،> tr<يک جدول از يک يا چند سطر که با کمک تگ. استفاده ميشود>table<برای تعريف جداول از تگ

. ايجاد ميشوند> td< تشکيل گرديده که با کمک تگcell از يک يا چند سلول، خانه ياrowهر رديف يا. تشکيل ميشود

. ميباشندtable dataوrowtable به ترتيب خالصه شدهtr وtdنام های . باشد... لول ميتواند متن، تصوير، فهرستها، جداول ديگر، پاراگرافها ومحتوی يک س

: مثال زير جدولی است با دو سطر و سه ستونکد اچتمل جدولی با دو سطر و سه ستون نمايش جدول روبرو توسط مرورگر

<table border="1" dir="rtl"> <tr> <td> 1، سلول1رديف </td> <td> 2، سلول1رديف </td> <td> 3، سلول1رديف </td> </tr> <tr> <td> 1، سلول2رديف </td> <td> 2، سلول2رديف </td> <td> 3، سلول2رديف </td> </tr> </table>

3، سلول1رديف2، سلول1رديف1، سلول1رديف

3، سلول2رديف2، سلول2رديف1، سلول2رديف

dirوborder جدولها و شناسه های-2-9 مرزی با ضخامت يک پيکسل را نمايش خواهد داد و1مرز جدول را مشخص ميکند، مقدارborderدر مثال باال شناسه

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

borderجداول بدون مرز را نمايش خواهد داد ، .

مقدارdirection ياdirمثال باال شناسهدر برای آن، سبب تعيين نمايش جهت متون از راست به چپ خواهدrtl و

. تعريف شده است به تمامی سلولهای جدول اعمال خواهد شدtableشد و چو ن در داخل تک ! ساده ترين جدول ممکن در اچتمل، جدولی است با يک سطر و يک ستون

) Headings( جداول سرستون در-3-9

: مثال زير نحوه تعريف سرستونها را در جداول نمايش ميدهد. تعريف ميشوند> th<سرستونها در جداول با کمک تگکد اچتمل جدولی با سه سطر و سه ستون نمايش جدول روبرو توسط مرورگر

<table border="1" dir="rtl"> <tr> <th>1 سرستون</th> <th> 2سرستون </th> <th> 3سرستون </th> </tr>

3سرستون2سرستون1سرستون

3، سلول1رديف2، سلول1رديف1، سلول1رديف

3، سلول2رديف2، سلول2رديف1، سلول2رديف

11صفحه بر وب برنامه نویسی مبتنی

کد اچتمل جدولی با سه سطر و سه ستون نمايش جدول روبرو توسط مرورگر

<tr> <td> 1، سلول1رديف </td> <td> 2، سلول1رديف </td> <td> 3، سلول1رديف </td> </tr> <tr> <td> 1، سلول2رديف </td> <td> 2، سلول2رديف </td> <td> 3، سلول2رديف </td> </tr> </table>

استفادهth ازtdهمانطوريکه مشاهده ميکنيد سر ستونها مانند سلولهای معمولی جداول تعريف ميشوند و فقط به جای

. يا توپر نمايش داده خواهند شدboldشده و لی در نمايش محتوای سر ستونها

خالی در جداولخانه های -4-9اگر محتوای خانه ای از يک جدول خالی باشد چه چيزی بايد نمايش داده شود؟ بسته به مرورگری که استفاده ميکنيد نتيجه

: نمايش متفاوت است و مثال در مثال زير خانه خالی جدول بدون مرز نمايش داده خواهد شدکد اچتمل جدولی با دو سطر و دو ستون رو توسط مرورگرنمايش جدول روب

<table border="1" dir="rtl"> <tr> <td> 1، سلول1رديف </td> <td> 2، سلول1رديف </td> </tr> <tr> <td> 1، سلول2رديف </td> <td></td> </tr> </table>

2، سلول1رديف1، سلول1رديف

1، سلول2رديف

يا همان نويسه و کاراکترnon-breaking space (&nbsp;)در اينگونه موارد برای رفع مشکل کافی است که از: فاصله و بالنک استفاده شود و در مورد مثال ذکر شده مرورگر جدول را به شکل زير نمايش خواهد دادکد اچتمل جدولی با دو سطر و دو ستون نمايش جدول روبرو توسط مرورگر

<table border="1" dir="rtl"> <tr> <td> 1سلول،1رديف </td> <td> 2، سلول1رديف </td> </tr> <tr> <td> 1، سلول2رديف </td>

2، سلول1رديف1، سلول1رديف

1، سلول2رديف

12صفحه بر وب برنامه نویسی مبتنی

کد اچتمل جدولی با دو سطر و دو ستون نمايش جدول روبرو توسط مرورگر

<td>&nbsp;</td> </tr> </table>

. توجه داشته باشيد که اينبار مرزهای خانه خالی جدول بدرستی ترسيم گرديده اند

تگهای جداول

کاربرد تگ

<table> تعريف جدول

<th> تعريف سرستون در جداول

<tr> تعريف رديف ها در جداول

<td> تعريف سلول يا خانه های يک جدول

) Lists( فهرستها-10

نامرتبordered) (اين درس شما را با نحوه نمايش انواع فهرستها شامل فهرستهای مرتب ،) (unorderedو

. آشنا خواهد کردdd وli، ol ،ul ،dl ،dtو تگ های مربوطه يعنی) definition lists(فهرستهای تعريفی

)unordered list( فهرستهای نامرتب-1-10يک. ايش داده ميشوندفهرستهائی هستند از يک يا چند قلم اطالعات که معموال با دايرهای کوچک و سياه رنگ در شروع نم

. مشخص ميگردد> li<شروع شده و هر رقم اطالعات با تگ> ul<فهرست از نوع نامرتب با تگ

HTML نمايش توسط مرورگرکد

<ul type="disc" ><li>Red</li><li>Blue</li></ul>

• Red • Blue

</li><ul dir="rtl" >

<li>قهوه</li>شيرچای<li>

</ul>

قهوه•رشي•

در مثالdirبه شناسه. ، تصاوير و حتي فهرستهای ديگر استفاده کنيدbrميتوانيد از پاراگرافها، تگهای> li<داخل تگهای . باال توجه کنيد، امکان تعيين سمت و جهت نمايش متون در تمامی تگهای مربوط به فهرستها ممکن ميباشد

)ordered list( فهرستهای مرتب-2-10هرست بسيار شبيه فهرستهای نامرتب بوده و فقط مرورگر به هنگام نمايش اقالم اطالعاتی از اعداد به جای دايرهاين نوع ف

شروع شده و همانند فهرستهای نامرتب هر> ol<يک فهرست از نوع مرتب با تگ. های کوچک سياه رنگ استفاده ميکند

. مشخص ميگردد> li<رقم اطالعات با تگ

13صفحه بر وب برنامه نویسی مبتنی

HTML وسط مرورگرنمايش ت کد

<ol ><li>Red</li><li>Blue</li></ol>

1. Red 2. Blue

</li><ol dir="rtl" >

<li>قهوه</li>شير<li>

</ol>

قهوه.1شير.2

در مثالdirبه شناسه. ، تصاوير و حتي فهرستهای ديگر استفاده کنيدbrميتوانيد از پاراگرافها، تگهای> li<داخل تگهای . ، امکان تعيين سمت و جهت نمايش متون در تمامی تگهای مربوط به فهرستها ممکن ميباشدباال توجه کنيد

)definition list( فهرستهای تعريفی-3-10 . فهرست تعريفی فهرستی است از اصطالح ها و تشريح و توصيف آنها

. تعريف ميشوند> dd<و> dt<ایشروع شده و هر زوج اصطالح و تعريف مربوط به آن با تگه> dl<فهرستهای تعريفی با

HTML codeنمايش توسط مرورگر

<dl><dt>HTTP</dt><dd>Hypertext Transfer Protocol</dd><dt>FTP</dt><dd>File Transfer Protocol</dd><dt>IP</dt><dd>Internet Protocol</dd></dl>

HTTP Hypertext Transfer Protocol FTP File Transfer Protocol IP Internet Protocol

تگهای فهرستتگ کاربرد

<ol> تعريف فهرستهای مرتب

<ul> های نامرتبتعريف فهرست

<li> تعريف يک آيتم و قلم از يک فهرست

<dl> تعريف فهرستهای تعريفی

<dt> تعريف اصطالح در فهرستهای تعريفی

<dd> تعريف معنی و شرح اصطالح در فهرستهای تعريفی

) Forms( فرمها-11

و چند تگ مرتبط قادر به دريافت اطالعات از بازديدکنندگان صفحات و يا تبادل اطالعاتform> <راز طريق استفاده از عنص

،text fields) (با کمک اين گروه از تگ ها قادر به نمايش باکسهای ورود اطالعات متن. بين صفحات مختلف خواهيد شد

شده و همچنين امکان گذاشتن دکمه های. ..و) radio-buttons(، راديو باتونها) check-boxes(چک باکسها

14صفحه بر وب برنامه نویسی مبتنی

پ

حذف) submit button(ارسال form. را خواهيد داشتreset) (و يا ... inputواين فصل با شرح تگ های بهو . چگونگی ايجاد ارتباط با بازديدکنندگان و گرفتن اطالعات از آنها بصورت التين و يا فارسی خواهد پرداخت

،ASP،perl،PHP از قبيلcgiرای پردازش اطالعات دريافتی از کاربر بايد با يکی از زبانهایتوجه داشته باشيد که ب

CFM ،JSPيا Javaآشنائی داشته باشيد .

) Forms( فرمها-1-11

ميگيرند/> form<وform> <تمامی تگهای مربوط به فرمها بايد درون تگهای . قرار

text( تگهای مختلف قابل استفاده هستند از قبيل عناصر ورود متن يک سطریدرون تگ فرم گروه زيادی از عناصر وfields(عناصر ورود متنهای چند سطری ،)Textarea(منوهای ،drop-downوradio buttonsو ...

Input تگ-2-11بردinput> <به عنوان پر مصرف ترين تگ مربوط به ورود اطالعات بايد از تگ بهtype شناسه ای به نامدر اين تگ. نام

: مقادير ممکن برای اين شناسه به قرار زيرند. تعيين نوع اطالعات ورودی اختصاص دارد

text , checkbox , radio , password , hidden , submit , reset , button , file , image

: های کاربردی خواهيم پرداختtypeدر ادامه به شرح بعضی از

Text Fields) (وروديهای متن -1-2-11

. استفاده ميشودtext" "را وارد کند از شناسه ای با مقدار... اگر ميخواهيد که بازديدکننده اطالعاتی از قبيل متن، اعداد ونمايش توسط مرورگرکد اچتمل

<form> USERNAME: <input type="text" name="user"><br> PASSWORD: <input type="password" name="pass"> </form>

USERNAME:

PASSWORD:

چيزی را به نمايش نخواهد گذاشت بلکه تگهای درون آن توسط مرورگر نمايش دادهform> <توجه داشته باشيد که تگ

. آن توجه داشته باشيدrtl و مقدارdir شناسهدر مثال فارسی باال به. خواهند شد

کاراکتر را در نظر ميگيرند و اگر20الزم به يادآوری است که اغلب مرورگرها در حالت پيش فرض برای وروديهای متن اندازه

. استفاده کنيدsizeميخواهيد که اندازه پيش فرض وروديهای متن را تغيير دهيد بايد از شناسه ای به نام

Radio Buttonsوروديهای -2-2-11

typeبرای شناسهradio" "اگر ميخواهيد که بازديدکننده گزينه ای را از بين چند گزينه محدود انتخاب کند، از مقدار : استفاده کنيد

نمايش توسط مرورگرکد اچتمل

<form dir="rtl"> <input type="radio" name="gender" value="male"> مرد <br> <input type="radio" name="gender" value="female"> زن </form>

مرد

زن

. همانطور که مشاهده ميشود فقط امکان يکی از گزينه ها برای کاربر ميسر است

15صفحه بر وب برنامه نویسی مبتنی

Checkboxesایوروديه-3-2-11

برای شناسهcheckbox" "اگر ميخواهيد که بازديدکننده يک يا چند گزينه را از بين چند گزينه محدود انتخاب کند، از مقدار

typeاستفاده کنيد : نمايش توسط مرورگر کد اچتمل

<form dir="rtl"> <input type="checkbox" name="bike"> دوچرخه دارم<br> <input type="checkbox" name="car"> ماشين دارم</form>

دوچرخه دارم

ماشين دارم

ساخت ليست های انتخاب-4-2-11

<form > <select name=”state” > <option value=”1” > Tehran </option> <option value=”2” > Yazd </option> <option value=”3” > Fars </option> </select> </form>

دکمهActionشناسه-5-2-11 فرمهاSubmit و در

استفاده ميشود و در اثر کليکSubmit Buttonدر فرمها برای ارسال اطالعات کسب شده از دکمه ای به نام ارسال يا

برای تعيين مقصد ارسال اطالعات. ، اطالعات درون فرم به فايلی ديگر ارسال خواهند شدSubmit" "کاربر بروی اين دکمه

فايلی است کهurl آدرس ياactionمقدار شناسه. استفاده کنيدaction از شناسه ای به نامformبايد درون تگ

برنامه ها و اسکريپت هائیactionمعموال فايلهای بخش. پرداختبه دريافت و سپس پردازش اطالعات دريافتی خواهد

... ASP،Perl ،PHP مانندcgiنوشته شده با ربانهای بوده و وظيفه آنها دريافت اطالعات فرمها و سپس پردازش آنهاو . ميباشد

. يد يا ارسال خواهد گردSubmit سبب نمايش دکمهtypeبرای شناسهsubmit" "تعيين مقدارنمايش توسط مرورگرکد اچتمل

<form name="input" action="form_action.php">Username: <input type="text" name="user"><input type="submit" value="Submit"></form>

Username: Submit

مرورگر به محض کليک دکمه ارسال،. ورودی متن، کلمه ای را وارد کرده و دکمه ارسال را کليک کنيد جعبهدر مثال باال در

تعيين شده است ارسالactionاطالعات درون فرم را که در اين مثال متنی ساده است به سمت فايلی که در شناسه

نامPHP برنامه ای به زبانکرده و در اين مثال در سمت سرور به ذخيره و سپس نمايش متنیform_action.php با . خبری خواهد پرداخت

16صفحه بر وب برنامه نویسی مبتنی

Start Tag کاربرد

<form> تعريف فرم ورود اطالعات

<input> Inputتعريف ورودی از نوع<textarea> text-areaتعريف ورودی متن چند سطری يا

<label> labelتعريف برچسب يا<fieldset> fieldsetتعريف<legend> ها fieldsetتعريف عنوان برای

<select> drop-down boxتعريف فهرستهای انتخابی يا<option> هاdrop-down boxتعريف گزينه ای از

<button> inputتگbuttonتعريف دکمه فشاری، متفاوت با

) Images( تصاوير-12

img شناسهدر اين درس با تگ ، srcو altتگهای ، MapوAreaو چگونگی نمايش تصاوير و همچنين تنظيم محل . آنها در سندهای اچتمل آشنا خواهيد شد

img تگ-1-12از نوع تگهای خالی است، بدين معنا که فقطimg> <تگ. تعريف ميکنندimg> <در زبان اچتمل تصاوير را با کمک تگ

نيست. /> img< انتهائی يادارای يک يا چند شناسه بوده و دارای تگ

تصاويری که. تصوير ميباشدURL نام دارد و مقدار اين شناسه آدرس ياsrcمهمترين شناسه برای درج و تعريف يک تصويرمرورگر در يک صفحه وب نمايش ميدهد ميتوانند در همان دايرکتوری صفحه اچتمل، در ديگر دايرکتوريهای همان سايت و يا در

. وب قرار داشته باشندفضای بيکران

: شکل ساده درج يک تصوير

<img src="url">

آدرس اينترنتی تصوير ميباشد و مثال اگر تصويری که قرار است که در صفحه درج شود در همان دايرکتوری قرار داردurlمقدار

اگر تصوير در سايتی ديکر را بنويسيد وme.jpg فقط نام تصوير يعنیurl ، کافی است که به جایme.jpgو نامش

. کامل آنرا بنويسيدurlقرار دارد

ی برابرurl دارایgoogle.com مثال تصوير لوگو سايت

http://www.google.com/images/logo.gifاين.است بوده، در دايرکتوریlogo.gif نام تصويرurlدر

imagesقرار داشته و روی وب سايت google.comقرار دارد .

widthشن . تعيين عرض و ارتفاع نمايش تصوير استheightواسه های

height="110" ><img src="http://www.google.com/images/logo.gif" width="276"

width قيد کنيد، اينکار سبب کمک به مرورگر درheightوتوصيه ميشود که حتما ابعاد تصوير را با کمک شناسه های .ش صفحه خواهد شدتسريع شروع نماي

اگر مرورگر به هر دليلی نتواند که يک تصوير را نمايش دهد و يا مرورگر از نوع مرورگرهائی باشد که فقط متن را نمايش

. تعيين شده است نمايش داده خواهد شدalt ی که با کمک شناسهtextميدهند، متن و

17صفحه بر وب برنامه نویسی مبتنی

<img src="images/madresehweb_88_31.jpg" alt="The web school!" >

چند نکته مهم-3-1210خود صفحه به عالوه.( فايل را لود کند11تصوير استفاده شده باشد، مرورگر بايد10اگر در يک صفحه اچتمل از•

) تصويربا احتياط از تصاوير استفاده کنيد و به اندازه و حجم.استفاده از تصاوير، سرعت لود شدن صفحات را پايين می آورد•

. ير توجه داشته باشيدتصو

ثانيه15استفاده ميکند حداقل28kbps برای کسی که از مودمی با سرعت کيلوبايت50لود تصويری با حجم• . طول خواهد کشيد

کرذه و سپس در بخشRight clickبرای ديدن مشخصات تصاوير در وب کافی است که روی تصوير•

properitiesببينيد آدرس،ابعاد و ظرفيت تصوير را .

Save picture" کرذه و سپس در بخشRight clickبرای ذخيره تصاوير در وب کافی است که روی تصوير•as "آنرا ذخيره کنيد .

)Background( پس زمينه-13

پس زمينه صفحات اچتمل رنگ و يا يک. دارای دو شناسه مهم برای تعيين رنگ و تصوير پس زمينه ميباشدbody> <تگ . ميتواند باشدتصوير

red(مقدار رنگ پس زمينه ميتواند نام رنگ. رنگ پس زمينه را تعيين ميکندbgcolorشناسه ، مقدار آنblue ) يامثل

. باشد) Hexadecimal( و يا حتی مقدار هگزادسيمالRGBبر اساس استاندارد

<body bgcolor="#000000"> <body bgcolor="rgb(0,0,0)"> <body bgcolor="black">

مقدار. استفاده ميشودbackgroundبرای تعيين تصويری که به عنوان پس زمينه صفحه نمايش داده ميشود از شناسه

اگر ابعاد تصوير کوچکتر از ابعاد صفحه مرورگر باشد، تصوير زمينه تکثير.ميباشدimage) ( يا آدر س تصويرURLاين شناسه . نمايش از تصوير زمينه پوشانده شودخواهد شد تا حدی که تمام صفحه

<body background="bg.gif"> <body background="http://www.astovan.com/images/bg.gif">

يا آدرس تصوير استفاده شده و در واقع در اين مثال فايلURLبرای تعيينrelative) (در مثال اول از آدرس دهی نسبی

برایabsolute) (در مقابل مثال دوم از آدرس دهی مطلق. يک دايرکتوری قرار گيرند بايد درbg.gifاچتمل و تصوير . تعيين آدرس تصوير استفاده شده است و همانطور که ميدانيد آدرس تصوير در هر نقطه از فضای وب ميتواند باشد

نکات مهم-2-13 : زير توجه کنيداگر از تصاوير پس زمينه در صفحات اچتمل استفاده ميکنيد به نکات

. قابل استفاده به عنوان تصوير زمينه ميباشدjpg و ياgifهرتصويری با فرمت•از تصاوير بزرگتر از ده کيلوبايت ظرفيت به هيچ وجه استفاده نکنيد، در غير اين صورت سرعت لود صفحه بشدت پايين•

. خواهد آمد . کنيداز تصاوير زمينه هماهنگ با ديگرتصاوير صفحه استفاده• . از تصاوير زمينه هماهنگ با متون صفحه استفاده کنيد• . در رزولوشنهای مختلف به ديدن و آزمايش تصاوير پس زمينه بپردازيد• . پر مصرف ترين رنگهای زمينه وب سايتها، رنگهای سفيد، سياه و خاکستری ميباشند• !اغلب سايتهای وب از تصاوير پس زمينه استفاده نمی کنند•

)HTML Fonts( لم ها ق-14

18صفحه بر وب برنامه نویسی مبتنی

برای تعيين نام و نوع قلم، رنگ و اندازه متون استفاده ميکنند ولیfont> <با وجودی که هنوز بعضی از اچتمل کاران از تگ

تگXHTMLو همچنين) 4نسخه(در استاندارد جدید اچتمل Styleپشتيبانی نميشود و استفاده ازfont> < ازSheetمعرفی شده است ها به عنوان جایگزین .

در این. برای تعيين نام قلم، رنگ و اندازه متون استفاده ميشودfont> < و قبلی تر زبان اچتمل از تگ3.2در نسخه های

مثالهای زیر کاربرد تگ. معرف رنگ متن خواهد بودcolor انداره قلم و شناسهsize نام قلم ، شناسهfaceتگ شناسه

> <fontرا نشان ميدهند :

<font face=”نام قلم” size=”اندازه” color=”رنگ” > محتوی

</font>

) Style Sheets( استایل شيتها-15

در این نسخه. اچتمل امکان جداسازی کامل فرمت دهی از ساختار صفحات اچتمل فراهم شده است4/0) (در نسخه جدیدبخشی از. ی به فایلهائی مجزا از صفحه اچتمل منتقل شوندتوصيه ميشود که تمامی اطالعات مربوط به نمایش و ترازبند

شده و معموالهناميدStyle Sheet" "صقحات اچتمل که مربوط به نمایش، ترازبندی و فرمت دهی است، استایل شيت یا

در این درس به صورت بسيار خالصه با. صفحات اچتمل معرفی ميگردندhead> <به صورت فایلی مجزا درون بخش . های مختلف استفاده از استایل شيتها در صفحات اچتمل آشنا خواهيد شدروش

)Cascade Style Sheet ( چگونگی استفاده از استایل شيتها-1-15مرورگرها از روی استيلهای تعریف شده توسط استایل شيتها به فرمت دهی و نمایش اطالعات درون صفحه اچتمل

: یل ها در صفحات اچتمل به سه روش مختلف ممکن ميباشدتعریف و استفاده از استا. ميپردازند

) external style sheet(استایل شيتهای خارجی)1یلها و تعاریف نمایشی درون فایلی جداگانه قرار گرفته و بسيار مناسب حالتهائی است که قرارادر این روش تمامی است

یت این روش سهولت در تغيير ظاهر صفحات یک وب سایتمز. است که استایلی به بيش از یک صفحه اچتمل اعمال شودميباشد و برای یک تغيير کلی در سایت کافی است که فایل استایل شيت کل سایت که معموال یک فایل واحد است تغيير

.) باید توجه داشت که در این حالت تمامی صفحات سایت باید به یک فایل استایل شيت واحد لينک شده باشند. (داده شود

. صفحات اچتمل قرار ميگيرد، معرفی ميشوندheadکه درون بخشlink> <استایل شيتهای خارجی توسط تگ

تگ href تایلهای تعریف شده تعيين فایل در برگيرنده اسurl نام و در حالت کلیlink ازدر مثال زیر با کمک شناسه

CSS .هستند فایل های استایل شيت دارای پسوند. ميگردد

<head> <link rel="stylesheet" type="text/css" href="mystyle.css"> </head>

) Internal Style Sheet(استایل شيتهای داخلی)2یهاکاربرد این روش در حالت

<styleی است که صفحه اچتمل نيازمند تعریف استایلی منحصر به فرد و مجزا بوده و استایل طراحی

و<در این حالت باید کدهای حاوی تعریف استایل درون تگ های. شده فقط بدرد آن صفحه خواهد خورد

> < style/قرار گرفته و معموال نتيجه درون بخشheadمثال. صفحه اچتمل گذاشته ميشود :

<head> <style type="text/css"> body {background-color: red} p {margin-left: 20px}

19صفحه بر وب برنامه نویسی مبتنی

</style> </head>

) Inline Styles(تهای درجااستایل شي)3در این حالت باید از شناسه. خاص استایلی اعمال شود) یا گروهی(کاربرد این روش در مواردی است که باید برای یک المان

: مثال. که تقریبا در تمامی تگها قابل اعمال است استفاده شودstyleای به نام

<p style="color: red; margin-left: 20px"> This is a paragraph </p>

انواع انتخاب کننده های استایل شيت-2-15

یک} قبل از عالمت. قرار می گيرند{ و} شيت های داخلی و خارجی در داخل عالمت هایهر مجموعه از تنظيمات استایل . کلمه نوشته می شود

منام در کل صفحه بصورت خودکار اعمالاگر این کلمه نام یک تگ باشد، تنظيمات تعيين شده به تمام تگ های ه• .خواهد شد

TD{ Color:red; Border : 1px dashed #545454; }

تنظيمات تعيين یک کالس استایل شيت ایجاد کرده ایم واگر این کلمه نامی غير از تگ ها با عالمت نقطه باشد،•

: این کالس مقداردهی شود آنها بهclassشده تنها به تگ هایی اعمال خواهد شد که شناسه

.myclass{ Color:red; Border : 1px dashed #545454; } <td class=”myclass”> .. </td> <p class=”myclass”> .. </p>

تنظيمات تعيين یک شناسه استایل شيت ایجاد کرده ایم و باشد،#اگر این کلمه نامی غير از تگ ها با عالمت•

: آنها به این شناسه مقداردهی شود idیی اعمال خواهد شد که شناسهشده تنها به تگ ها

#ali{ Color:red; Border : 1px dashed #545454; } <td id=”ali”> .. </td> <p id=”ali”> .. </p>

20صفحه : بر وب برنامه نویسی مبتنی

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

. باید نام تگ نوشته شود#عالمت نقطه یا

td#ali{ Color:red; Border : 1px dashed #545454; } <td id=”ali”> .. </td> <p id=”ali”> .. </p>

)PHP (برنامه نویسی سمت سرویس دهنده: دوم خشب

PHP معرفی-1PHPدهنده است یک زبان برنامه نویسی سمت سرویس

آنچه شما باید از قبل بدانيد

را شروع کنيد باید با موارد زیر آشنایی داشته باشيدPHPقبل از اینکه یادگيری

نرم افزاری است که بصورت دائمی بر روی کامپيوتر سرویس دهنده در حال اجرا):Web Server(سرویس دهنده وب

به آن پاسخ می) مرورگر وب" مثال(ریافت درخواست از سرویس گيرندهگوش داده و با دHTTPبوده به درخواست های وب سرورهای مهم عبارتند از. دهد

•IISیا Internet Information Services: یکی از سرویس های ویندوز است و می توان در برنامه

Control panelآنرا نصب و فعال کرد .

• : Apacheرایگان و دارای نسخه های مختلفی برای استفاده در محيطیک وب سرور قدرتمند ، اوپن سورس و .ویندوز، لينوکس و غيره می باشد

Application Server :(PHP(سرویس دهنده کاربردی نيازدر صورت استفاده از یک زبان اسکریپت نویسی مثل :ن های برنامه نویسی مهم عبارتند از زبا.به مفسر یا امکانات نرم افزاری دیگری برای تفسير و اجرای دستورات می باشد

ASPیا)Active Server Pages : (یک زبان با گرامر شبيهVB

JSPیا )Java Server Pages :(یک زبان مبتنی بر تکنولوژی جاوا

: ASP.NETیک زبان مبتنی بر تکنولوژی دات نت

PHPو ...

یاDBMS اطالعاتی در برنامه ها نياز به یک نرم افزاردر صورت نياز به بانک ):Data Server(سرویس دهنده دادهاین سرویس دهنده. بخشی از آن است که امکان مدیریت بانک اطالعاتی و دسترسی برنامه ها به آن را فراهم می کند

21صفحه : بر وب برنامه نویسی مبتنی

Access،SQLاسخ آنرا به برنامه بر می گرداند، این نرم افزار می تواند گرفته و پSQLدرخواست ها را به زبانی مثلServer،Oracle،MySQLو غيره باشد.

:رابطه بين اجزای مختلف

به وب سرور رسيد، نوع فایل)Request(وقتی درخواستهميشه سرویس گيرنده، شروع کننده ارتباط است ، : درخواستی بررسی می شود

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

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

.به سرویس گيرنده فرستاده می شودResponse) (نتيجه هر چه باشدبعنوان پاسخما در این درس از. برای شروع یک پروژه برنامه نویسی مبتنی بر وب باید تکنولوژی مورد نظر و مناسب را انتخاب کرد

اوپنکامال" AMPتکنولوژی . Windows-Apache-MySQL-PHPیعنی. استفاده می کنيمWAMPتکنولوژی .استفاده شود... سورس است و می تواند در سيستم عامل های ویندوز ، لينوکس و

PHP چيست؟

•PHPاشاره دارد به :PHPPerformanceHypertextPreprocessor

•PHPیک زبان برنامه نویسی سمت سرور مشابه ASP است

رور اجرا می شوند بر روی سPHPاسکریپت های•

•PHPاز سيستم های بانک اطالعاتی مختلفی پشتيبانی می کند نظير )MySQL, Informix ,Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc (.

•PHPیک نرم افزار با کد منبع باز است

•PHPبرای دانلود و استفاده رایگان است

چيست؟ PHPفایل

•PHP . و اسکریپت باشندHTMLتوانند حاوی متن ساده ،میفایل های

. ساده برگردانده می شوندHTML به مرورگرها شبيه فایل هایPHPفایل های•

Client Server

Web Browser Web Server

App. Server

Data Server

URL

HTML HTML

PHP

DB

22صفحه بر وب برنامه نویسی مبتنی

. داشته باشندphtmlوphp ،php3 می توانند پسوندهایPHPفایل های•

MySQLچيست؟

•MySQLیک سرویس دهنده بانک اطالعاتی است

•MySQLنامه های کوچک و بزرگ کاربرد دارد برای استفاده در بر .

•MySQLاستانداردSQLرا پشتيبانی می کند .

•MySQLبر روی چندین پلتفرم قابل استفاده است .

•MySQLبرای دانلود و استفاده رایگان است .

PHP + MySQL

•PHPوMySQLوسعه داده و بر رویشما می توانيد برنامه هایتان را در محيط ویندوز ت( مستقل از پلتفرم هستند

) اجرا کنيدUNIXسيستم های

؟ PHPچرا

•PHPبر روی پلتفرم های مختلف اجرا می شود )Windows, Linux, Unix, etc (.

•PHPبا اغلب سرورهایی که امروزه معمول هستند قابل استفاده است ) ,Apache, IIS (.etc•PHPرایگان است

•PHPورت کارا روی سرور اجرا می شود برای برای یادگيری راحت است و بص چگونه شروع کنيم؟

برای این،داریدPHP و نصب مفسرApache و یاIIS نياز به راه اندازی سرویس دهندهPHPبرای اجرای برنامه های :کار می توانيد یکی از بسته های زیر را دانلود و نصب کنيد

• EasyPHP• WAMP

قواعد برنامه نویسی-2

. به مرورگر ارسال می شودHTMLبر روی سرویس دهنده اجرا شده و نتيجه آنها بصورتPHPکدهای

PHP<? شروع شده و باphp?> هميشه باPHPیک بلوک برنامه نویسی مییک بلوک برنامه نویسی. پایان می یاد .تواند در هرجای صفحه قرارگيرد

<?php باPHPکدبر روی بعضی سرور ها می توانيد به جای ولی توصيه می شود برای سازگاری. شروع کنيد?> را

.استفاده نمائيدphp?> بيشتر هميشه از همان

<?php ?>

و در بعضی جاهای آن کدهای برنامه نویسی قرارHTML است مثل یک فایلHTML حاوی تگ هایPHPیک فایل .گرفته اند

. را به مرورگر می فرستدHello World است که متن ساده نشان داده شدهPHPدر زیر مثالی از یک فایل

<html> <body>

23صفحه بر وب برنامه نویسی مبتنی

<?php echo "Hello World"; ?> </body> </html>

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

داردوجPHPدو دستور برای خروجی در Hello برای خروجی متنecho در مثال فوق از دستورprintو: echoودWorldاستفاده شد .

. دارای پسوندphp" باید حتماPHPفایل: توجه . تعيين کنيد اجرا نخواهد شدhtmlاگر پسوند آنراباشد

PHP توضيحات درPHP // در .ت یک بلوک بزرگ از توضيحات استفاده می کنيمبرای ساخ*/ و/* برای ایجاد یک خط توضيح و ازاز

<html> <body> <?php //This is a comment /* This is a comment block */ ?> </body> </html>

PHP متغيرها در-3 .متغير برای نگهداری اطالعات استفاده می شود

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

PHP عالمتنام همه متغيرها در .شروع می شود$ با

PHP : روش صحيح تعریف متغير در

$var_name = value; .متغيرها فراموش می کنند و این باعث می شود که برنامه کارنکندرا در ابتدای$ اغلب عالمتPHPبرنامه نویسان مبتدی

:اجازه دهيد یک متغير برای نگهداری رشته و یک متغير برای نگهدار اعداد تعریف کنيم

24صفحه : بر وب برنامه نویسی مبتنی

<?php $txt="Hello World!"; $x=16; ?>

PHPیک زبان برنامه نویسی با نوع داده ضعيف است

.تعریف شود" د متغير و قبل از مقداردهی ، نوع داده آنها صریحا الزم نيست در زمان ایجاPHPدر

. گفته نشده چه نوع داده هایی را نگهداری کندPHPدر مثال فوق می بينيد که به

. بطور خودکار نوع داده متعير را بسته به مقدار تخصيص داده شده به آن بطور مناسب تغيير می دهدPHPبلکه

.نوع داده متغير را مشخص کنيد" باید صریحاCی با تعيين نوع داده قوی مثلدر زبان های برنامه نویس

. متغير در صورت مقداردهی خود به خود ایجاد شده و نوع داده آن تعيين می گرددPHPولی در

قواعد نامگذاری برای متغيرها

.شروع می شود)underline(_ نام یک متغير هميشه با یک حرف الفبا و یا عالمت• . باشد_ نام یک متغير می تواند شامل حروف الفبا، ارقام و عالمت•

•space _ اگر نام متغير شامل چند کلمه باشد برای جداکردن کلمات باید ازباشد. نام متغير نمی تواد شامل

MyString$). (و یا کلمات به هم بچسبندmy_string$) (استفاده شود

PHP متغيرهای رشته ای در-4 .رهای رشته ای برای ذخيره کردن مقادیری که شامل کاراکترها باشند استفاده می شوندمتغي

PHP در این بخش نگاهی خواهيم داشت به توابع مهم و عملگرهای مورد استفاده بر روی رشته ها دراستفاده شده و یا در متغيربا توابع رشته ای" یک رشته می واند مستقيما. رشته ایجاد کرده و با آن کار خواهيم کرد" بعدا

.رشته ای ذخيره شود

.استHello World " "را نشان می دهد که حاوی رشته$ txtقطبرنامه زیر متغير رشته ای

<?php $txt="Hello World"; echo $txt; ?>

:خروجی کد باال به صورت زیر است

Hello World .ته ای بپردازیمحال اجازه دهيد به عملکرد چند تابع و عملگر رش

عملگر الحاق رشته ها

است که دو رشته را به هم می) نقطه. ( وجود دارد و آنهم عملگر الحاق رشته ها یعنیPHPتنهه یک عملگر رشته ای در .چسباند

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

<?php $txt1="Hello World!";

25صفحه بر وب برنامه نویسی مبتنی

$txt2="What a nice day!"; echo $txt1 . " " . $txt2; ?>

.خروجی کد باال به صورت زیر خواهد بود

Hello World! What a nice day! در کد باال دو بار از عملگر الحاق استفاده شده و سه رشته به هم چسبيده اند و برای جداکردن دو کلمه از یکدیگر با فاصله

.استفاده کرده ایم

strlen ()عتاب . برای برگرداندن طول رشته استفاده می شود()strlenتابع

:بصورت زیر

<?php echo strlen("Hello world!"); ?>

.خروجی کد فوق به شکل زیر خواهد بود

12 .طول یک رشته اغلب برای ایجاد حلقه های تکرار یا توابع رشته ای دیگر اگر دانشتن پایان رشته مهم باشد کاربرد دارد

strpos ()تابع . برای جستجوی یک رشته در یک متن استفاده می شود()stropsتابع

برگشت دادهfalse گرداند و اگر پيدا نشد مقداراگر کاراکتر در رشته پيدا شد، این تابع موقعيت آن در اولين انطباق را برمی .می شود

.را یک رشته دیگر جستجو کنيمWorld" "اجازه دهيد رشته

<?php echo strpos("Hello world!","world"); ?>

:خروجی کد فوق بصورت زیر است

6 است که موقعيت اولين کاراکتر در رشتهاین) 7نه( است6دليل اینکه. است6در رشته ما مکانWorld" "موقعيت رشته

.1است نه0ها

PHP عملگرها در-5 عملگرهای محاسباتی

نتيجهمثال شرح عملگر x=2 جمع +

x+2 4

x=2 تفریق -5-x

3

x=4 20 ضرب *

26صفحه بر وب برنامه نویسی مبتنی

x*5 15/5 تقسيم /

5/2 3

2.5 2%5 باقيمانده %

10%8 10%2

1 2 0

x=5 افزایش ++x++

x=6

x=5 کاهش --x--

x=4

عملگرهای تخصيص عبارت معادل مثال عملگر

= x=y x=y += x+=y x=x+y -= x-=y x=x-y *= x*=y x=x*y /= x/=y x=x/y .= x.=y x=x.y %= x%=y x=x%y

عملگرهای مقایسه مثال شرح عملگر returns false 8==5 مساوی == returns true 8=!5 نا مساوی =!ساوینا م <> 5<>8 returns true returns false 8<5 بزرگتر < returns true 8>5 کوچکتر >

returns false 8=<5 بزرگتر یا مساوی =< returns true 8=>5 کوچکتر یا مساوی =>

27صفحه بر وب تهیه وتدوینبرنامه نویسی مبتنی

عملگرهای منطقی مثال شرح عملگر&& and x=6

y=3 (x < 10 && y > 1)

returns true || or x=6

y=3 (x==5 || y==5)

returns false ! not x=6

y=3 !(x==y) returns true

ساختارهای شرطی-6 .دستورات شرطی برای انجام عمليات مختلف با توجه به شرایط مختلف استفاده می شوند

. برای انتخاب یکی از چند بلوک کد برای اجرا استفاده می شودswitchدستور گرامر

switch (n) { case label1: code to be executed if n=label1; break; case label2: code to be executed if n=label2; break; default: code to be executed if n is different from both label1 and label2;}

مقدار. ، که یکبار ارزیابی می شود) متغيراغلب یک( داریمexpresion nابتدا یک عبارت: کدفوق چگونه عمل می کند

اگر با آن مساوی بود ، بلوک کد قرارگرفته در ان. مقایسه می شودcaseعبارت سپس با مقادیر هر کدام از ساختارهای

28صفحه: بر وب برنامه نویسی مبتنی

دستورالعمل. بعدی استفاده می گرددcase برای جلوگيری از ادامه اجرای کدها در بلوکbreakاز. اجرا می شود

defaultدر صورتی اجرا می شود که مقدار عبارت با هيچکدام از caseها مطابقت نداشته باشد . مثال

<html> <body>

<?php switch ($x) { case 1: echo "Number 1"; break; case 2: echo "Number 2"; break; case 3: echo "Number 3"; break; default: echo "No number between 1 and 3"; } ?>

</body> </html>

حلقه های تکرار-7 .حلقه های تکرار یک بلوک از دستورات را به تعداد دفعات معين یا تا زمان برقرار بودن شرط خاصی تکرار می کنند

کردن چندین کپیبجای اضافه. اغلب وقتی کدنویسی می کنيم، مایل هستيم بلوک هایی از کد بيشتر از یک بار اجرا شوند .از دستورات بصورت پشت سرهم از حلقه های تکرار برای اجام این کار استفاده می کنيم

: چندین دستور العمل برای تکرار داریمPHPدر

•while-تکرار یک بلوک از کد تا زمان برقرار بودن یک شرط

•do...while-رقرار بودن یک شرط اجرای بلوک کد برای یکبار و سپس تکرار آن در صورت ب

•for-تکرار یک بلوک کد برای تعداد دفعات مشخصی

•foreach-تکرار یک مجموعه کد بازای تمام عناصر آرایه

29صفحه بر وب برنامه نویسی مبتنی

while حلقه تکرار . تا زمان درست بودن نتيجه یک شرط دستورات را تکرار می کندwhileحلقه تکرار

گرامر

while (condition) { code to be executed; }

مثال

. باشد تکرار می کند5کوچکتر یا مساویi$ شروع شده و تا زمانی کهi=1$مثال زیر حلقه ای را نشان می دهد که با

. یک واحد اضافه می شودi$در هر بار تکرار به

<html> <body>

<?php $i=1; while($i<=5) { echo "The number is " . $i . "<br />"; $i++; } ?>

</body> </html>

:خروجی

The number is 1 The number is 2 The number is 3 The number is 4 The number is 5

do ... while دستورالعمل هميشه بلوک دستورات را یکبار اجرا می کند و سپس شرطی را بررسی می کند و دستورات راdo...whileدستورالعمل

.صورتی که شرط درست بود تکرار می کنددر گرامر

30صفحه بر وب برنامه نویسی مبتنی

do { code to be executed; }while (condition);

مثال

را یک واحد افزایش می دهد و خروجی راi$سپس. شروع می کندi=1$در مثال زیر یک حلقه تکرار تعریف شده که با

. باشد حلقه ادامه پيدا می کند5کوچکتر یا مساویi$سپس شرط را بررسی می کند و تا زمانی که. چاپ می کند

<html> <body>

<?php $i=1; do { $i++; echo "The number is " . $i . "<br />"; } while ($i<=5); ?> </body> </html>

:خروجی

The number is 2 The number is 3 The number is 4 The number is 5 The number is 6

.د شدهبخش بعدی بررسی خوادرforeach وforحلقه های

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

forحلقه تکرار

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

for (init; condition; increment) { code to be executed; }

31صفحه بر وب برنامه نویسی مبتنی

پارامترها

• :initولی می تواند شامل هر تعداد دستور باشد که(اغلب برای مقدار اوليه دادن به شمارنده استفاده می شود ) در شروع اجرای حلقه اجرا خواهند شد

• :conditionاگر حاصل آن.. ی می شودبرای هر تکرار حلقه بررسTRUEاگر. باشد حلقه ادامه پيدا می کند

. باشد حلقه پایان می یابدFALSEمقدار آن

• :incrementولی می تواند شامل هر مجموعه دستوری. (اغلب برای افزایش شمارنده استفاده می شود ) باشد که در انتهای حلقه تکرار می شوند

).جدا شده با ویرگول(یا می تواند بيش از یک دستور باشد, ی فوق می تواند خالی باشدهر کدام از پارامترها: نکته مثال

. باشد تکرار می کند5کوچکتر یا مساویi$ شروع شده و تا زمانی کهi=1$مثال زیر حلقه ای را نشان می دهد که با

. یک واحد اضافه می شودi$در هر بار تکرار به

<html> <body>

<?php for ($i=1; $i<=5; $i++) { echo "The number is " . $i . "<br />"; } ?></body> </html> :خروجی

The number is 1 The number is 2 The number is 3 The number is 4 The number is 5

توابع-8

.وجود دارد)built-in(ش ساخته تابع پي700بيش ازPHPدر. از توابع آن مي آيدPHPقدرت واقعي

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

.يك تابع در صورتي اجرا مي شود آه فراخواني گردد .اي صفحه فراخواني آنيدشما مي توانيد يك تابع را از هر ج

PHP ايجاد يك تابع در .يك تابع توسط يك فراخواني تابع اجرا خواهد شد

32صفحه بر وب برنامه نویسی مبتنی

گرامر

function functionName() { code to be executed; }

:دونكته در مورد توابع . براي تابع نامي را انتخاب آنيد آه نمايش دهنده آار آن باشد

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

:يك تابع ساده آه وقتي فراخواني شود نام من را چاپ مي آند

<html> <body>

<?php function writeName() { echo "S.M. Mohammad"; } echo "My name is "; writeName(); ?> </body> </html>

:خروجي

My name is S.M. Mohammadi

اضافه آردن پارامترها-PHPتوابع .پارامتر به سادگي يك متغير است.براي افزايش آارآيي و آاربرد يك تابع، مي توانيم پارامترهايي به آن اضافه آنيم

.پارامترها بعد از نام تابع و داخل پرانتز نوشته مي شوند 1مثال

:مثال زير نام هاي مختلفي و فاميل هاي يكساني را چاپ خواهد آرد

<html> <body> <?php function writeName($fname) { echo $fname . "Akbari.<br />"; }

33صفحه : بر وب برنامه نویسی مبتنی

echo "My name is "; writeName("Ali"); echo "My sister's name is "; writeName("Sara"); echo "My brother's name is "; writeName("Saeed"); ?> </body> </html>

:خروجي

My name is Ali Akbari. My sister's name is Sara Akbari. My brother's name is Saeed Akbari.

2مثال :تابع زير دو پارامتر دارد

<html> <body>

<?php function writeName($fname,$punctuation) { echo $fname . "Akbari" . $punctuation . "<br />"; }

echo "My name is "; writeName("Ali","."); echo "My sister's name is "; writeName("Sara","!"); echo "My brother's name is "; writeName("Saeed","?"); ?>

</body> </html>

:خروجی

34صفحه : بر وب برنامه نویسی مبتنی

My name is Ali Akbari. My sister's name is Sara Akbari! My brother's name is Saeed Akbar?

برگرداندن مقادير-PHPتوابع

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

<html> <body> <?php function add($x,$y) { $total=$x+$y; return $total; } echo "1 + 16 = " . add(1,16);

Global متغير به صورت استفاده از-7-6 زير مثال در مثال.تعريف شده بيرون يک تابع ،داخل تابع در دسترس نيستمتغيرهايبطور پيش فرض

<?php $life = 42; function meaningOfLife() { print "The meaning of life is $life<br>"; } meaningOfLife(); ?>

ما نياز به استفاده از متغيرهاي بيرون تابعدر برخي موارد. چاپ نخواهد کردرا life$ خروجي خالي چاپ مي شود و مقدار

مي توانيد براي اين منظور کد به طور مثال.استفاده کنيم Global براي اين کار کافيه که از دستور. تابع داريمداخل يک

: باال را به صورت زير بازنويسي کنيد

<?php $life=42;

35صفحه : بر وب برنامه نویسی مبتنی

function meaningOfLife() { global $life; print "The meaning of life is $life<br>"; } meaningOfLife();?>

دستور 10 در خط تعريف شده7در خطکه بيرون تابع و life$ در اين حالت مقدار. استفاده کرديم ;global $life از

.چاپ خواهد شد The meaning of life is 42 در داخل تابع قابل دسترس مي شود و خروجي اين کدو همچنين در هر تابعي که. استفاده کنيد از اين دستور استفاده کنيدما بايد براي هر متغيري که مي خواهيد ازش در تابعش

.متغيري خارج از آن تابع استفاده کند بايد از اين دستور استفاده شودمي خواهيد از

ک life$ داخل تابع تغيير دهيد مقدار life$ کنيد که اگهدقت: مهم .شودل برنامه عوض ميدر ضميمه کردن فایل ها-9

فایل هاضميمه کردن

برای این کار از. را در فایل دیگری درج کنيد قبل از اینکه سرویس دهنده آنرا اجرا کندPHPشما می توانيد محتوای یک فایل

. استفاده می کنيد()requireیا()includeتوابع .ی خطا با هم یکسان هستنددو تابع از هر نظر بجز دستکار

•include()توليدwarningکرده ولی اجرای اسکریپت ادامه می یابد ,

•require()و اجرای اسکریپت متوقف می شود, پوشی توليد می کند خطای غيرقابل چشم . .دارند استفاده می شوندهر دوی این توابع برای ایجاد توابع،هدرها ، فوترها یا عناصری که در چندین صفحه استفاده مجدد

بدین معنی که می توانيم یک. باعث راحت شدن طراحی سایت و تغييرات بعدی و صرفه جویی در وقت می شونداین کارهروقت نياز به تغيير هدر بود کافی. فایل هدر ، فوتر یا منوی استاندارد ایجاد کرده و آنرا در همه صفحات وب استفاده کنيم

به جای(اصالح کنيم یا هرگاه صفحه جدیدی به سایت اضافه شد کافی است فایل حاوی منو تغيير کنداست فایل هدر را )تغيير گزینه ها در تک تک صفحات وب سایت

include ()تابع . تمام محتوای فایل تعيين شده را در فایل جاری درج می کندinclude()تابع

. توليد کرده و اجرای اسکریپت قطع نخواهد شدwarningیکinclude()اگر خطایی اتفاق افتد، تابع

1مثال

در صفحه تابعheaderبرای ضميمه کردن فایل. در نظر بگيریدheader.php استاندارد به نامheaderیک فایل

()includeرا بصورت زیر استفاده می کنيم :

<html> <body>

<?php include("header.php"); ?> <h1>Welcome to my home page!</h1>

36صفحه بر وب برنامه نویسی مبتنی

<p>Some text.</p>

</body> </html>

2مثال

: داریم، که باید در همه صفحات استفاده شودmenu.phpفرض کنيد یک فایل منوی استاندارد به نام

<a href="/default.php">Home</a> <a href="/tutorials.php">Tutorials</a> <a href="/references.php">References</a> <a href="/examples.php">Examples</a> <a href="/about.php">About Us</a> <a href="/contact.php">Contact Us</a>

:همه صفحات موجود در وب سایت باید فایل منو را ضميمه کنند بصورت زیر

<html> <body>

<div class="leftmenu"> <?php include("menu.php"); ?> </div>

<h1>Welcome to my home page.</h1> <p>Some text.</p>

</body> </html>

.اگر نگاهی به کد منبع صفحه نشان داده در مرورگر بيندازید تگ های زیر را خواهيد دید

<html> <body>

<div class="leftmenu"> <a href="/default.php">Home</a> <a href="/tutorials.php">Tutorials</a> <a href="/references.php">References</a> <a href="/examples.php">Examples</a>

37صفحه : بر وب برنامه نویسی مبتنی

<a href="/about.php">About Us</a> <a href="/contact.php">Contact Us</a> </div>

<h1>Welcome to my home page!</h1> <p>Some text.</p>

</body> </html>

()require تابع است بجز در روش برخورد با خطاهاinclude()شبيهrequire() تابع

توليدrequire کرده و اجرا ادامه پيدا می کند ولی تابعwarningتوليدinclude()اگر خطایی اتفاق بيفتد تابع .خطای غيرقابل چشم پوشی کرده و اجرای اسکریپت متوقف می شود

include ()مثالی از بروز خطا در تابع<html> <body>

<?php include("wrongFile.php"); echo "Hello World!"; ?>

</body> </html>

:پيغام خطا

Warning: include(wrongFile.php) [function.include]: failed to open stream: No such file or directory in C:\home\website\test.php on line 5

Warning: ()include [function.include]: Failed opening 'wrongFile.php' for inclusion (include_path='.;C:\php5\pear') in C:\home\website\test.php on line 5

38صفحه : بر وب برنامه نویسی مبتنی

Hello World! .ست اجرای اسکریپت را متوقف نکرده اwarningیعنی توليد! اجرا شده استechoتوجه داشته باشيد که دستور

()require مثالی از بروز خطا در تابع . اجرا کنيم()requireاکنون اجازه دهيد مثال مشابهی را با تابع

<html> <body>

<?php require("wrongFile.php"); echo "Hello World!"; ?>

</body> </html>

:پيغام خطا

Warning: require(wrongFile.php) [function.require]: failed to open stream: No such file or directory in C:\home\website\test.php on line 5

Fatal error: require() [function.require]: Failed opening required 'wrongFile.php' (include_path='.;C:\php5\pear') in C:\home\website\test.php on line 5

echo .ا نشده استو زیرا اجرای اسکریپت پس از وقع خطا متوقف شده استاجردستور

جای()requireتوصيه می شود از هميشه از تابع استفاده کنيد تا اجرای اسکریپت پس از وقع خطاinclude() به .ادامه پيدا نکند

آرایه ها-10 . یک آرایه چندین مقدار را در یک متغير ذخيره می کند

؟آرایه چيستمسئله اصلی این است که یک متغير. یک متغير یک ناحيه ذخيره سازی است که یک مقدار عددی یا متنی را نگه می دارد

. تنها یک مقدار را نگداری می کند . یک آرایه متغير مخصوصی است که می تواند چندین مقدار را در یک متغير ذخيره کند

، ذخيره کردن ماشين ها در متغيرها بصورت تکی) یک ليست از اسامی ماشين هامثًال(اگر ليستی از اقالم داشته باشيد : شبيه زیر خواهد بود

$cars1="Saab"; $cars2="Volvo";

39صفحه : بر وب برنامه نویسی مبتنی

$cars3="BMW"; 3با وجود این برای نوشتن حلقه های تکرار و پيدا کردن یک ماشين از بين ماشين ها چه خواهيد کرد؟ حاال اگر به جای

ماشين داشته باشيد چه؟300ماشين ! بهترین راه حل استفاده از یک آرایه است

. یک آرایه می تواند همه مقادیر را تحت یک نام ذخيره کرده و برای مراجعه به هر مقدار از همان نام متغير استفاده می کنيد . هر عنصر در آرایه اندیس خودش را دارد و براحتی می تواند مورد دسترسی قرار گيرد

: ، سه نوع آرایه وجود داردPHPدر آرایه ای با اندیس های عددی-آرایه شمارشی•

. به هر مقدار تخصيص داده می شودID key) ( آرایه ای که یک کليد شناسایی-آرایه انجمنی• . آرایه ای که شامل یک یا چند آرایه است-آرایه چند بعدی•

آرایه های شمارشی . عنصر آرایه را با یک اندیس عددی ذخيره می کندیک آرایه شمارشی هر

. دو روش برای ایجاد ۀرليه شمارشی وجود دارد ) : اندیس ها از صف شروع خواهند شد( در مثال زیر اندیس ها بصورت خودکار به عناصر داده خواهد شده. 1

$cars=array("Saab","Volvo","BMW","Toyota"); : ا خود ما بصورت دستی تعيين کرده ایمدر مثال زیر اندیس ها ر. 2

$cars[0]="Saab"; $cars[1]="Volvo"; $cars[2]="BMW"; $cars[3]="Toyota";

مثال : در مثال زیر به مقادیر متغير با استفاده از نام آرایه و اندیس دسترسی پيدا می کنيم

<?php $cars[0]="Saab"; $cars[1]="Volvo"; $cars[2]="BMW"; $cars[3]="Toyota"; echo $cars[0] . " and " . $cars[1] . " are Swedish cars."; ?>

: خروجی کد فوق بصورت زیر است

Saab and Volvo are Swedish cars.

آرایه های انجمنی

. ، یک کليد یکتا به هر مقدار تخصيص داده شده استassociative) (در یک آرایه انجمنیبا استفاده از آرایه های. یی در مورد اسامی خاصی ذخيره می شود، آرایه شمارشی روشی خوبی نيستوقتی داده ها

. انجمنی می توانيم از اسامس به عنوان کليد استفاده کرده و مقادیر را به آنها نسبت دهيم : 1مثال

: در این مثال از یک ارایه برای نگهداری سن افراد مختلف استفاده شده است

$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);

40صفحه بر وب برنامه نویسی مبتنی

: 2مثال : است ، ولی روش دیگری برای ایجاد آرایه نشان می دهد1این مثال مشابه مثال

$ages['Peter'] = "32"; $ages['Quagmire'] = "30"; $ages['Joe'] = "34";

: کليدهای یکتا می توانند در اسکریپت استفاده شوند

<?php $ages['Peter'] = "32"; $ages['Quagmire'] = "30"; $ages['Joe'] = "34";

echo "Peter is " . $ages['Peter'] . " years old."; ?>

: خروجی کد فوق عبارت است از

Peter is 32 years old.

آرایه های چندبعدیآرایه نيز می تواند یک آرایه-و هر عنصر در زیر. خودش یک آرایه باشددر آرایه چندبعدی، هر عنصر در آرایه اصلی می تواند

. باشد و به همين ترتيب 1مثال

:در این مثال یک آرایه چندبعدی ایجاد کرده ایم

$families = array ("Griffin" =>array ( "Peter", "Lois", "Megan" ), "Quagmire"=>array ( "Glenn" ), "Brown" =>array ( "Cleveland", "Loretta", "Junior" ) );

: آرایه فوق را می توان بصورت زیر در نظر گرفت

Array ( [Griffin] => Array ( [0] => Peter [1] => Lois [2] => Megan ) [Quagmire] => Array (

41صفحه : بر وب برنامه نویسی مبتنی

[0] => Glenn ) [Brown] => Array ( [0] => Cleveland [1] => Loretta [2] => Junior ) )

2مثال : اجازه دهيد یکی از مقادیر آرایه فوق را نمایش دهيم

echo "Is " . $families['Griffin'][2] . " a part of the Griffin family?";

The code above will output:

Is Megan a part of the Griffin family?

foreach حلقه تکرار . برای تکرار بر اساس آرایه ها استفاده می شودforeachحلقه تکرار

گرامر

foreach ($array as $value) { code to be executed; }

ه جلو حرکت میو اشاره گر آرایه یک خانه ب( نسبت داده می شودvalue$در هر بار اجرای حلقه مقدار جاری از آرایه به .بنابراین در تکرار بعدی عنصر بعدی آرایه بدست خواهد آمد). کند مثال

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

<html> <body>

<?php $x=array("one","two","three"); foreach ($x as $value) { echo $value . "<br />";

42صفحه بر وب برنامه نویسی مبتنی

} ?>

</body> </html>

:خروجی

one two three

کار با فرم ها-11

برای بازیابی اطالعات از فرم ها استفاده می شوند، مشابه ورودی کاربرPOST_$ وGET_$متغيرهای

HTML HTMLیم ، هر عنصر در صفحهPHP سرو کار داروچيزی که خيلی مهم است این است که وقتی با فرم های ) به اسکریپت ارسال خواهد شد. ( در دسترس خواهد بودPHPودکار در اسکریپتخبطور مثال

: برای ارسال فرم را نشان می دهدsubmit با دو فيلد ورودی و یک دکمهHTMLمثال زیر یک فرم

<html> <body>

<form action="welcome.php" method="post"> Name: <input type="text" name="fname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form>

</body> </html>

نام کليک کرد، اطالعات فرم به فایلsubmitهر وقت کاربر فرم باال را پر کرده و روی دکمه PHPبا "welcome.php " :ارسال خواهد شد

. بصورت زیر خواهد بودwelcome.php" "فایل

<html> <body>

Welcome <?php echo $_POST["fname"]; ?>!<br /> You are <?php echo $_POST["age"]; ?> years old.

43صفحه بر وب برنامه نویسی مبتنی

</body> </html>

: خروجی می تواند بصورت زیر نمایش داده شود

Welcome John!You are 28 years old.

. در ادامه توضيح داده شده استPOST_$ وGET_$عملکرد متغيرهای

اعتبارسنجی فرمبا استفاده از برنامه نویسی(ورودی های کاربر باید از نظر درستی بررسی شوند، این کار می تواند توسط مرورگر انجام شود

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

در این صورت در همان صفحه. بهترین کار برای اعتبارسنجی ، ارسال فرم به خود همان صفحه است تا صفحه دیگری.شود .فرم می توان پيغام های خطا را نمایش داد

GET م به روش ارسال فر-12 . استفاده می شودGET برای جمع آوری اطالعات فرم ارسال شده با متدGET_$آرایه

این اطالعات در نوار آدرس مرورگر نشان داده.( برای هر کسی قابل رویت هستندGETاطالعات ارسال شده از فرم با متد

) اکترکار100حداکثر(و طول اطالعات ارسالی محدود است, ) می شوند مثال

<form action="welcome.php" method="get"> Name: <input type="text" name="fname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form>

ادامهمتغيرهای فرم در( بصورت زیر به سرویس دهنده فرستاده خواهد شدURL کليک شودsubmitوقتی روی دکمه ):آدرس صفحه قرار خواهند گرفت

http://www.w3schools.com/welcome.php?fname=Peter&age=37 فيلدهای فرم. ( برای جمع آوری اطالعات فرم استفاده کندGET_$ اکنون می تواند از آرایهwelcome.phpفایل

): خواهند شدGET_$بصورت خودکار تبدیل به کليدهای آرایه

Welcome <?php echo $_GET["fname"]; ?>.<br /> You are <?php echo $_GET["age"]; ?> years old!

استفاده می کنيم؟GETچه موقع از متد

. نمایش داده می شودURL استفاده می کنيم همه متغيرها و مقادیر آنها درHTML در فرم هایGETوقتی از متد .ات حساسی مثل کلمه عبور استفاده شوداین متد نمی تواند برای اطالع:نکته

.با وجود این چون اطالعات در نوار آدرس نشان داده می شود می تواند در عالمت گذاری صفحات و مرور آنها استفاده شود کاراکتر تجاوز کند100این متد نمی تواند برای ارسال اطالعات بلند استفاده شود و طول اطالعات نباید از:نکته

44صفحه بر وب برنامه نویسی مبتنی

POST رسال فرم با روش ا-13 . استفاده می شودpostبرای جمع آوری مقادیر فرم ارسال شده با شيوهPOST_$ آرایه پيش ساخته

. بصورت مخفی ارسال شده و می توانند دارای طول نامحدود باشندpostاطالعات ارسال شده از فرم با متد

فایلpost_max_sizeمگابایت است ولی با تنظيم متغير8حداکثرpost طول داده های ارسال شده با متد:نکته در

. قابل تغيير استphp.iniپيکربندی مثال

<form action="welcome.php" method="post"> Name: <input type="text" name="fname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form>

: زیر درخواست می شودURL کليد کندsubmit روی دکمهوقتی کاربر

http://www.w3schools.com/welcome.php نام فيلدهای فرم بصورت(برای جمع آوری اطالعات فرم استفاده کندPOST_$ می تواند از آرایهwelcome.phpفایل

):خواهند شدPOST_$ خودکار تبدیل به کليدهای آرایه

Welcome <?php echo $_POST["fname"]; ?>!<br /> You are <?php echo $_POST["age"]; ?> years old.

: استفاده می کنيمmethod=postچه موقع از .اطالعاتی که نباید به دیگران نشان داده شده و یا دارای طول زیادی هستند با این شيوه ارسال می شوند

.اده نمی شوند برای تشخيص و عالمتگذاری صفحات مناسب نخواهد بود نشان دURLبا وجود این چون متغيرها در

_$ REQUESTآرایه

باشدCOOKIE_$ وPOST،$_GET_$ شامل محتوای هرREQUEST_$ آرایه پيش ساخته .می

REQUESTGET_$ آرایه . استفاده شودPOSTونيز می تواند برای جمع آوری اطالعات ارسال شده با متدهای مثال

Welcome <?php echo $_REQUEST["fname"]; ?>!<br /> You are <?php echo $_REQUEST["age"]; ?> years old.

آپلود فایل ها-14

. امکان آپلود فایل ها به سرویس دهنده وجود داردPHPبا استفاده از

ایجاد فرم برای آپلود فایل .برای آپلود فایل ها از فرم ها استفاده می شود

: زیر برای آپلود فایل دقت کنيدHTMLبه فرم

<html>

45صفحه: بر وب برنامه نویسی مبتنی

<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form>

</body> </html>

. در مورد فرم فوق به نکات زیر توجه کنيد

" multipart/form-data. " فرم تعيين می کند که چه نوع اطالعاتی باید ارسال شودenctypeخاصيت• . وقتی استفاده می شود که فرم برای آپلود فایل استفاده شود

تگخاصيت• "type="fileاز> <inputبعنوان مثال وقتی فرم. تعيين می کند که ورودی باید بصورت فایل باشد

. برای انتخاب فایل نشان داده خواهد شدbrowse" "فوق در مرورگر نمایش داده شود یک دکمهمطمئن اجازهتنها به کاربران شناخته شده و. اجازه دادن به کاربر برای ارسال فایل یک ریسک امنيتی بزرگی است: توجه

.این کار را بدهيد

ایجاد اسکریپت آپلود

:دستوراتی برای آپلود فایل دارا می باشدupload_file.php""فایل

<?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?>

. های ارسال شده به سرویس دهنده را آپلود کرد می توان فایلFILES_$با استفاده از آرایه سراسری

46صفحه بر وب برنامه نویسی مبتنی

، "name"،"type"اولين پارامتر در این آرایه نام ورودی فرم است و دومين اندیس می تواند یکی از اندیس های

"size"، ""tmp_nameباشد. "یا "errorمشابه زیر :

توصيف متغير

$_FILES["file"]["name"] نام فایل آپلود شده

$_FILES["file"]["size"] اندازه فایل آپلود شده بر حسب بایت

$_FILES["file"]["type"] نوع فایل آپلود شده

$_FILES["file"][" tmp_name "]

نام کپی موقتی فایل که بر روی سرویس دهنده ذخيره شده است

$_FILES["file"]["error"] کد خطای توليد شده در حين آپلود فایل

به دالیل امنيتی باید محدودیت هایی تعيين شود و. وق یک روش ساده و ابتدایی برای آپلود فایل را نشان می دهدمثال ف .کاربر را برای آپلود فایل های خاصی محدود کنيم

محدودیت ها برای آپلود

و با اندازهjpeg. تاgif.ل هایکاربر تنها می تواند فای. در اسکریپت زیر محدودیت هایی برای آپلود فایل تعيين شده است

: کيلوبایت را آپلود کند20کمتر از

<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else {

47صفحه بر وب برنامه نویسی مبتنی

echo "Invalid file"; } ?>

jpeg. بایدFireFox نوشته شود ، برای مرورگرpjpeg نوع آن بایدjpg. برای تشخيص فایل هایIEدر مرورگر:توجه

ره کردن فایل آپلود شدهذخي

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

: مکان دیگری کپی کنيم

<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

48صفحه بر وب برنامه نویسی مبتنی

} } } else { echo "Invalid file"; } ?>

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

. کپی می کندupload" "این مثال فایل را در پوشه جدیدی بنام: جهتو

اتصال به بانک اطالعاتی-15

خيلی معمول استPHPدرMySQLاستفاده از بانک اطالعاتی

ایجاد کنيدMySQLیک اتصال برای ارتباط با بانک اطالعاتی . سی پيدا کنيد، باید یک اتصال به بانک اطالعاتی ایجاد کنيدقبل از اینکه بتوانيد به داده های بانک اطالعاتی دستر

. انجام می شود()mysql_connect، این کار با تابعPHPدر گرامر

mysql_connect(servername,username,password);

کاربردپارامتر

servername "localhost:3306"

اختياری است نام سرویس دهنده بانک اطالعاتی است و پيشفرض آن

است

username جاری استفادهاختياری است، نام کاربر بانک اطالعاتی است و بطور پيش فرض نام کاربرکننده از سرور است

password است"" اختياری است، کلمه عبور کاربر است، پيش فرض آن. . بيشتری داردپارامترهای بيشتری برای آن وجود دارد، ولی موارد فوق اهميت:توجه مثال

درdie" "بخش. ذخيره می کندcon$در زیر مثالی ارائه شده است که اتصال را برای استفاده های بعدی در متغير :صورتی اجرا می شود که ایجاد ارتباط با مشکل مواجه گردد

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); }

49صفحه بر وب برنامه نویسی مبتنی

// some code ?>

. برای آن در ایجاد می شود"" با کلمه عبورroot بطور پيشفرض کاربرMySQLبا نصب

$con = mysql_connect("localhost","root","");

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

: استفاده می کنيم()mysql_closeاز تابع

<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); }

// some code

mysql_close($con); ?>

دسترسی به رکوردهای بانک اطالعاتی-16

. برای انتخاب داده ها از بانک اطالعاتی استفاده می شودSELECTدستور

انتخاب داده ها از جدول بانک اطالعاتی

. برای انتخاب داده های جدول از بانک اطالعاتی استفاده می شودSELECTدستور گرامر

SELECT column_name(s)FROM table_name

این تابع برای ارسال پرس و. استفاده کنيم()mysql_query به اجرای دستور فوق باید از تابعPHPبرای وادار کردن

. استفاده می گرددMySQLجو یا دستور به یک اتصال مثال

:را انتخاب می کندPersons" "مثال زیر همه داده های ذخيره شده در جدول

<?php $con = mysql_connect("localhost","root",""); if (!$con)

50صفحه بر وب برنامه نویسی مبتنی

{ die('Could not connect: ' . mysql_error()); }

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM Persons");

while($row = mysql_fetch_assoc ($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br />"; }

mysql_close($con); ?>

متغير()mysql_queryبرگشت داده شده از تابعدر مثال فوق داده های . ذخيره شده استresult$ در

بصورت یک استفاده می کنيم تا اولين سطر از مجموعه رکورد بازیابی شده راmysql_fetch_assocسپس، از تابع

یک حلقه. ، سطر بعدی از رکورد ست را به ما می دهد()mysql_fetch_assocهربار فراخوانی. آرایه بدست آوریم

row$برای چاپ مقادیر هر سطر، از متغير آرایه. می تواند همه رکوردهای رکورد ست را را استخراج کندwhileتکرار . استفاده می کنيم... وrow['FirstName'] ،$row['LastName']$بصورت

:خروجی کد فوق بصورت زیر خواهد بود

Peter GriffinGlenn Quagmire

HTML نمایش نتيجه در یک جدول : نشان خواهد دادHTMLمثال زیر داده هایی مشابه مثال فوق انتخاب می کند، ولی داده ها را در یک جدول

<?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); }

51صفحه بر وب برنامه نویسی مبتنی

mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM Persons"); echo "<table border='1' align='center' > <tr> <th>Firstname</th> <th>Lastname</th> </tr>";

while($row = mysql_fetch_assoc ($result)) { echo "<tr>"; echo "<td>" . $row['FirstName'] . "</td>"; echo "<td>" . $row['LastName'] . "</td>"; echo "</tr>"; } echo "</table>";

mysql_close($con); ?>

: خروجی اسکریپت فوق بصورت زیر خواهد بود

FirstnameLastname

Glenn Quagmire

Peter Griffin

دستوربخش Whereدر Select . زمانی استفاده می شود که قصر داریم تنها رکورد های دارای شرط یا شرایط مورد نظر را بازیابی کنيمWHEREبخش گرامر

SELECT column_name(s) FROM table_name WHERE column_name operator value

مثال

'FirstName='Peter" . است"انتخاب شده اند که برای آنهاPersons" "در مثال زیر تمام سطرهایی از جدول<?php

52صفحه بر وب برنامه نویسی مبتنی

$con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); }

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM Persons WHERE FirstName='Peter'");

while($row = mysql_fetch_assoc($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br />"; } ?>

درج رکورد در بانک اطالعاتی-17

. کورد های جدید در جدول استفاده می شود برای درج رINSERT INTOدستور

داده های جدیدی در جدول بانک اطالعاتی درج کنيد

. برای درج رکورد های جدید در جدول بانک اطالعاتی استفاده می شودINSERT INTOدستور گرامر

. دو روش وجود داردINSERT INTOبرای نوشتن دستور : ای آنها داده درج می کنيم را ذکر نمی کنيم، و تنها مقادر را می نویسيمدر اولين فرم، نام ستون هایی که بر

INSERT INTO table_name VALUES (value1, value2, value3,...)

: در فرم دوم هم نام ستونها و هم مقادیر آنها نوشته می شود

INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)

این تابع برای ارسال پرس و. استفاده کنيم()mysql_query به اجرای دستور فوق باید از تابعPHPبرای وادار کردن

. استفاده می گرددMySQLجو یا دستور به یک اتصال

53صفحه بر وب برنامه نویسی مبتنی

مثال

. داشته باشيمFirstName","LastName", " "Age"با سه ستونPersonsd" "فرض می کنيم ، جدولی به نام

:اضافه می کنيمPersons" "در مثال زیر دو رکورد جدید به جدول

<?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); }

mysql_select_db("my_db", $con);

mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Peter', 'Griffin', '35')");

mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Glenn', 'Quagmire', '33')");

mysql_close($con); ?>

درج اطالعات از یک فرم در بانک اطالعاتی

.مورد استفاده قرار گيردPersons" " ایجاد می کنيم که برای درج رکورد جدید در جدولHTMLاکنون یک فرم

داریمدر زیر فرم HTMLرا :

<html> <body>

<form action="insert.php" method="post"> Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form>

54صفحه بر وب برنامه نویسی مبتنی

</body> </html>

فرم"وقتی کاربر روی دکمه "submitدرHTMLفوق کليک کند، فرم یه برنامه " "insert.phpارسال خواهد شد .

بدستPOST_$ فرم را با استفاده از متغيرهایبه بانک اطالعاتی اتصال پيدا می کند، و مقادیرinsert.php" "فایل . می آورد

Persons" " را اجرا می کند، و یک رکورد جدید به جدولINSERT INTOدستور()mysql_queryسپس، تابع . اضافه خواهد شد

: را می بينيدinsert.php""در زیر صفحه

<?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); }

mysql_select_db("my_db", $con);

$sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "1 record added";

mysql_close($con) ?>

اصالح رکوردهای بانک اطالعاتی-18

. براي اصالح داده هاي يك جدول استفاده مي شودUPDATEدستور

اصالح داده هاي يك بانك اطالعاتي

.اده مي شود براي بروزرساني رآوردهاي موجود در يك جدول استفUPDATEدستور

55صفحه بر وب برنامه نویسی مبتنی

گرامر

UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value

تعيين مي آند آه چه رآورد ياWHEREبخش. توجه آنيدUPDATE در گرامر دستورWHEREبه بخش:توجه !ا بروز خواهند شداگر اين بخش نوشته نشود آليه رآورده. رآوردهايي بايد اصالح شوند

این تابع برای ارسال پرس و جو. استفاده کنيم()mysql_query به اجرای دستور فوق باید از تابعPHPبرای وادار کردن

. استفاده می گرددMySQLیا دستور به یک اتصال

مثال

:زير باشدفرض آنيد اين جدول داراي رآوردهاي. شنا شديدPersons""در قسمتهاي قبلي با جدول

FirstName LastName Age Peter Griffin 35 Glenn Quagmire 33

.را بروز مي آندPersons""مثال زير بعضي از رآوردهاي جدول

<?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); }

mysql_select_db("my_db", $con);

mysql_query("UPDATE Persons SET Age = '36' WHERE FirstName = 'Peter' AND LastName = 'Griffin'");

mysql_close($con); ?>

.بصورت زير خواهد شدPersons" "بعد از اجراي برنامه فوق رآوردهاي جدول

FirstName LastName Age Peter Griffin 36 Glenn Quagmire 33

56صفحه بر وب برنامه نویسی مبتنی

جلسات-19

. برای نگهداری اطالعات درباره کاربر و یا تغيير تنظيمات جلسه کاربر استفاده می شودPHPدرsessionیک متغير

. اطالعاتی در مورد یک کاربر نگهداری کرده و در همه صفحات یک برنامه در دسترس هستندsessionمتغيرهای

PHP درsessionمتغيرهایبه این. وقتی شما با یک برنامه کاربردی کار می کنيد، آنرا را باز می کنيد، یکسری تغييرات انجام داده و سپس آنرا می بندید

همچنين می داند که چه وقت. کامپيوتر می داند که شما کی هستيد. یا جلسه کاری می گویندsessionفرآیند یکوب سرور نمی داند شما کی هستيد و: ولی در اینترنت یک مشکل وجود دارد. اده ایدبرنامه را شروع کرده و چه وقت پایان د

-stateبصورتHTTP حال را نگه نمی دارند ، در واقع پروتکلHTTPچون آدرس های. چه می خواهيد انجام دهيدlessعمل می کند .

در sessionها PHPالعاتی را برای استفاه های بعدی ذخيره مشکل را حل می کنند و به شما اجازه می دهند تا اط

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

. ذخيره کنيد

sessionها با ایجاد یک شناسه یکتا ) (UIDبرای هر مراجعه کننده و ذخيره متغيرها بر اساسUIDکار می کند .UID . جابجا می شودURLخودش در یک کوکی ذخيره شده و یا با

PHP درSessionشروع بکار . د، باید آنرا شروع کنيدتان اطالعاتی ذخيره کنيsession قبل از اینکه بتوانيد در

گيرد< باید قبل از تگ()session_startتابع: توجه <htmlقرار :

<?php session_start(); ?>

<html> <body>

</body> </html>

کنيد و مربوط به کاربر را در سرور ثبت نام خواهد کرد، به شما اجازه خواهد داد تا اطالعات کاربر را ذخيرهsessionکد فوق

UID . کاربر اتخصيص خواهد دادsessionبهیک

session ذخيره سازی متغيرهای : استSESSION_$ استفاده از متغيرsessionروش صحيح برای ذخيره و بازیابی متغيرهای

<?php session_start(); // store session data

57صفحه بر وب برنامه نویسی مبتنی

$_SESSION['views']=1; ?>

<html> <body>

<?php //retrieve session data echo "Pageviews=". $_SESSION['views']; ?>

</body> </html>

:خروجی

Pageviews=1 views" " بررسی می کند که متغير()issetتابع. در مثال زیر یک شمانده تعداد مراجعات به صفحه ساده ایجاد کرده ایم

ز قبل وجود داشته باشد، آنرا یک واحد اضافه کرده و گرنه یک متغيراviews" "اگر. از قبل وجود دارد و ست شده است

" "viewsمی دهد1ایجاد کرده و آنرا مقدار .

<?php session_start();

if(isset($_SESSION['views'])) $_SESSION['views']=$_SESSION['views']+1; else $_SESSION['views']=1; echo "Views=". $_SESSION['views']; ?>

session از بين بردنتابع()unset می توان از تابعsessionبرای از بين بردن بعضی ار داده های استفاده()session_destroy یا

. کرد

: استفاده می شودsession برای از بين بردن متغيرهای مشخصی از()unsetتابع

<?php unset($_SESSION['views']);

58صفحه بر وب برنامه نویسی مبتنی

?> : را فراخوانی کنيد()session_destroyتابعsession توانيد برای از بين بردن کاملمی

<?php session_destroy(); ?>

ازsession شما را ریست کرده و همه داده های ذخيره شده درsessionکل()session_destroy: توجه را . دست خواهيد داد

کوکی ها-20 . ايي آاربر استفاده مي شودآوآي معموًال براي شناس

آوآي چيست؟يك آوآي فايل آوچكي است آه سرور آنرا بر روي آامپيوتر آاربر قرار. آوآي اغلب براي شناسایی آاربر استفاده مي شود

اب. هر وقت همان آامپيوتر از طريق مرورگر درخواستي را به سرور فرستاد، آوآي را نيز همراه آن خواهد فرستاد. مي دهد

. مي توانيد مقادير آوآي ها را ذخيره و يا بازيابي آنيدPHPاستفاده از

چطور آوآي را ايجاد آنيم؟

. براي تنظيم يك آوآي استفاده مي شود()setcookieتابع

.قرار داشته باشدhtml> < بايد هميشه قبل از تگ()setcookie تابع:توجه گرامر

setcookie(name, value, expire, path, domain); 1مثال

ما همچنين. را به آن نسبت دهيم"AlexPorter"ايجاد آنيم و مقدار"user"در مثال زير، مي خواهيم يك آوآي با نام :مشخص آرده ايم آه آوآي پس از گذشت يك ساعت از بين برود

<?php setcookie("user", "Alex Porter", time()+3600); ?>

<html> ....

، و هنگام دريافت بصورت خودآار)URLencoded(مقدار آوآي هنگام ارسال آن بصورت خودآار آدگذاري شده: جهتو .آدگشايي مي گردد

2مثال .شما همچنين مي توانيد يك زمان انقضاي آوآي را به صورت ديگري محاسبه آرده و برحسب ثانيه بدهيد

<?php $expire=time()+60*60*24*30; setcookie("user", "Alex Porter", $expire); ?>

59صفحه بر وب برنامه نویسی مبتنی

<html> .....

) ثانيه30*24*60*60يك ماه مساوي است با(در مثال فوق زمان انقضاي آوآي به يك ماه تنظيم شده است

؟دار يك آوآي را بازيابي آنيمقچطور م

PHP متغيردر . برای بازیابی مقدار یک کوکی استفاده می شودCOOHIE_$ از

. را بازیابی کرده و آنرا در یک صفحه نمایش می دهدuser" " مثال زیر، یک مقدار از کوکی به نامدر

<?php // Print a cookie echo $_COOKIE["user"];

// A way to view all cookies print_r($_COOKIE); ?>

. ا خير استفاده کرده ایم برای تشخيص اینکه یک کوکی تنظيم شده ی()issetدر مثال زیر از تابع

<html> <body>

<?php if (isset($_COOKIE["user"])) echo "Welcome " . $_COOHIE["user"] . "!<br />"; else echo "Welcome guest!<br />"; ?>

</body> </html>

چگونه یک کوکی را حذف کنيم؟ . ه گذشته تغيير دهيدبرای حذف یک کوکی، باید تاریخ انقضای آنرا ب

: مثال حذف

<?php // set the expiration date to one hour ago setcookie("user", "", time()-3600); ?>

60صفحه بر وب برنامه نویسی مبتنی

اگر مرورگر کوکی ها را پشتيبانی نکند چه باید کرد؟ باید از روشی غير از کوکی برایاگر برنامه کاربردی شما با مرورگرهایی سروکار دارد که کوکی ها را پشتيبانی نمی کنند،

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

فرستيم" welcome.php"کليک شود، به صفحهsubmit" "در زیر ما ورودی کاربر را هر وقت روی دکمه . می

<html> <body>

<form action="welcome.php" method="post"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form>

</body> </html>

: بصورت زیر بدست می آیند" welcome.php"مقادیر در صفحه

<html> <body>

Welcome <?php echo $_POST["name"]; ?>.<br /> You are <?php echo $_POST["age"]; ?> years old.

</body> </html>

ارسال نامه الکترونيکی-21

PHPبه شما اجازه مي دهد تا e-mailهايتان را مستقيمًا از يك اسكريپت ارسال آنيد .

PHP در()mailتابعmail() . از داخل يك اسكريپت استفاده مي شودبراي ارسال نامه هاي الكترونيكيPHPدرتابع

گرامر

mail(to,subject,message,headers,parameters)

شرحپارامتر

to گيرندگان نامه را مشخص ميكند/گيرنده. الزم.

61صفحه بر وب برنامه نویسی مبتنی

subject اين آاراآتر نيايد حاوي: توجه. موضوع ايميل را مشخص مي آند. الزم

.باشد (new line) خط جديدmessage خطوط مي. پيغامي را آه بايد ارسال شود، مشخص مي آند. زمال

ازLF(\n) توانند با هم جدا شوند و تعداد آاراآترهاي هر خط نبايدر

. تجاوز آند70ازheaders هدرهاي اضافي را مشخص مي آند مثل. اختياري from, Cc,

Bcc . توانند باهدرهاي اضافي مي CRLF (\r\n) از هم جدا

.شوندparameters پارامترهاي اضافي مثل نام برنامه ارسال. اختياري emailرا

.مشخص مي آندداردemail به نصب و بكارگيري يك سيستمPHP در دسترس قراربگيرند،mailبراي اينكه توابع: توجه برنامه. نياز

. تعيين شده باشدphp.iniاستفاده شده براي اين آار بايد در فايل تنظيمات

ساده E-mailيك

email . ارسال يك نامه متني استPHPباساده ترين روش براي ارسال يك

، سپس از)to,$subject,$message,$from,$headers$(در مثال زير، ابتدا متغيرهايي تعريف مي آنيم

: براي ارسال ايميل استفاده مي آنيم()mailمتغيرها در تابع

<?php $to = "[email protected]"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = "[email protected]"; $headers = "From: $from"; mail($to,$subject,$message,$headers); echo "Mail Sent."; ?>

Email فرم ارسالمثال زير يك پيغام متني به آدرس پست. يك فرم داراي فيدبك براي سايت ايجاد آنيد، مي توانيدPHPبا استفاده از

:الکترونيکی تعيين شده ارسال مي آند

<html> <body>

<?php

62صفحه بر وب برنامه نویسی مبتنی

if (isset($_REQUEST['email'])) //if "email" is filled out, send email { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail( "[email protected]", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } else //if "email" is not filled out, display the form { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?>

</body> </html>

:مثال فوق بصورت زير عمل مي آند

. پرشده باشدemailابتدا، بررسي مي آند آه فيلد ورودي•

. دوباره نشان داده خواهد شدHTMLتعيين نشده بود، فرمemailاگر مقداري براي• . اگر فيلد مقدار داشت ، ايميلي ارسال خواهد شد•

. فشرده شود، صفحه دوباره فراخواني شده و نامه ارسال خواهد شدsubmitوقتي آه بعداز پرشدن فرم، دآمه• مثال فوق ساده ترين روش براي ارسال ايميل را نشان مي دهد، ولي امنيت خوبي ندارد:توجه

63صفحه بر وب برنامه نویسی مبتنی

کاربا فایل ها-22

. استفاده مي شودPHP براي باز آردن فايل در()fopenتابع

بازآردن فايل

. استفاده مي شودPHP براي باز آردن فايل در()fopenتابع :اولين پارامتر از اين تابع شامل نام فايلي است آه بايد باز شود و دومين پارامتر تعيين مي آند آه فايل با چه مدي باز شود

<html> <body>

<?php $file=fopen("welcome.txt","r"); ?>

</body> </html>

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

r فقط خواندني. r+ نوشتني/خواندني.w باز شده و تمام محتويات قبلي فايل پاك مي شود، اگر.فقط نوشتني

.نداشته باشد ، ايجاد مي گرددفايل از قبل وجودw+ پاك مي شود، اگرباز شده و تمام محتويات قبلي فايل.فقط نوشتني

.وجود نداشته باشد ، ايجاد مي گرددفايل از قبلa باز شده واطالعات جديد به انتهاي فايل اضافه مي.اضافه شدني

.قبل وجود نداشته باشد ، ايجاد مي گرددشود، اگر فايل از

a+ محتواي فايل خواندهني شود و اطالعات.اضافه شدني/خواندنيآن اضافه آردهايجديد مي توان به انت

x اگر فايل از قبل موجود.فايل جديدي ايجاد مي آند. فقط نوشتني

.برمي گرداند FALSE باشد مقدارx+ اگر فايل از قبل موجود.فايل جديدي ايجاد مي آند. نوشتني/خواندني

.برمي گرداند FALSE باشد مقدار . را برمی گرداندfalse) (شده نباشد، صفر قادر به بازکدن فایل تعيين()fopenاگر تابع: توجه مثال

. نتوانست فایل تعيين شده را بازکند، یک پيغام نمایش می دهد()fopenمثال زیر اگر تابع

<html> <body>

64صفحه بر وب برنامه نویسی مبتنی

<?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); ?>

</body> </html>

بستن فایل

: برای بستن یک فایل باز استفاده می شود()fcloseتابع

<?php $file = fopen("test.txt","r");

//some code to be executed

fclose($file); ?>

بررسی انتهای فایل

. بررسی می کند که اشاره گر به انتهای فایل رسيده ا ست یا خير()feofتابع

. اری که داده های به طول نامعلوم را می خوانند، مناسب است برای حلقه های تکر()feofتابع

"! x"خوانده شود، نه شيوه" w"باید از فایل باز شده با شيوه: توجه

if (feof($file)) echo "End of file";

خواندن فایل بصورت خط به خط

. برای خواندن تنها یک خط از فایل استفاده می شود()fgetsتابع . بعد از هر بار فراخوانی این تابع، اشاره گر فایل به خط بعدی منتقل خواهد شد: جهتو

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

<?php $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?>

65صفحه بر وب برنامه نویسی مبتنی

خواندن فایل بصورت کاراکتر به کاراکتر

. برای خواند تنها یک کاراکتر از یک فایل استفاده می شود()fgetcتابع . بعد از فراخوانی این تابع اشاره گر فایل به کاراکتر بعدی حرکت خواهد کرد:توجه مثال : زیر یک فایل را بصورت کاراکتر به کاراکتر می خواند ، تا زمانی که به انتهای فایل برسدمثال

<?php $file=fopen("welcome.txt","r") or exit("Unable to open file!"); while (!feof($file)) { echo fgetc($file); } fclose($file); ?>