دفتر مشق

روزهای زندگی

روزهای زندگی

دفتر مشق

* بسم الله الرحمن الرحیم
* دفتر مشق روزهای زندگـی
* نویسنده: مهندس سید ابوالفضل هاشمی
* شروع بلاگری از 18 آبان 1391 پنج شنبه

آخرین نظرات
کتاب «مرجع زبان برنامه نویسی PHP5» نوشته محمد مصدری (استاد دانشگاه) از جمله کتاب های آموزشی زبان برنامه نویسی PHP می باشد. این کتاب در دو جلد نوشته شده است. در این مطلب به چکیده ای از نکات ارائه شده در جلد لول کتاب می پردازیم. نویسنده در جلد اول به موضوعات زیر پرداخته است:Image
- نصب و راه اندازی PHP نسخه 5
- مقدمات برنامه نویسی در PHP
- دستورات شرطی و حلقه ها
- آرایه ها
- فرم ها
- اشکال زدایی و کار با خطاهای برنامه نویسی
- رشته ها
- توابع
- فایل ها و دایرکتوری ها
- برنامه نویسی شی گرا
- توابع کاربردی PHP
- پیوست: کدهای HTML

همچنین به پیوست این کتاب، یک CD نیز می باشد که حاوی بسته های نصب کننده PHP و 36 کتاب الکترونیکی آموزش PHP و ویرایشگر های PHP است.

مشخصات مطالعه         
نام کتاب: مرجع کامل زبان برنامه نویسی PHP5 (جلد اول)
نویسنده: محمد مصدری (استاد دانشگاه)
ناشر: ناقوس اندیشه
چاپ: سوم - 1387
قیمت: 7500 تومان
تعداد صفحات: 358
بازه زمانی مطالعه: از 1 دی 93 الی - تهران

   
چکیده مطالب:  
فصل اول: نصب و راه اندازی PHP نسخه 5       
- بانک های اطلاعاتی اصلی که هم اکنون توسط PHP پشتیبانی می شوند: dBase , mSQL, Informix, MySQL, Ingres, Oracle, Sybase, Microsoft SQL Server , PostgreSQL می باشد. (ص26)

-آموزش نصب PHP در ویندوز (از ص 26 الی 46) و لینوکس (از ص47 الی

-دستور ;()phpinfo اطلاعات کامپایلر را منتشر می کند.

- php.ini فایل پیکر بندی PHP است و هر بار که PHP راه اندازی و اجرا می شود این فایل بررسی می گردد. (ص53). در این فایل خطوطی که دارای سمی کولن نیستند به طور فعال در پیکر بندی PHP شرکت می کنند و تغییر آنها بر روی تمامی اسکریپت ها تاثیر خواهد گذاشت. به طور کلی اگر تغییراتی در این فایل بدهید باید سروس www را مجددا راه اندازی کنید.(ص53) برای راه اندازی مجدد سرویس دهنده وب در خط فرمان پوسته دستور service را به صورت زیر اجرا کنید: service httpd restart # (ص52)

-پروتکل های لایه کاربردی (ص54)

-پروتکل های لایه اینترنت (ص56)

- پروتکل HTTP و پیام های HTTP Request و HTTP Response (ص56 الی 59)

-متدهای قابل استفاده در خط درخواست: GET (بیشتر درخواست ها در اینترنت به صورت GET می باشند)، HEAD و POST. (ص57)

-کدهای قابل استفاده در خط پاسخ: 100 تا 199: اطلاعاتی نشان می دهد که درخواست هم اکنون در حال پردازش است. 200 تا 299: نشان دهنده موفقیت است. 300 تا 399: نشان می دهد که چون اطلاعات مورد نیاز انتقال یافته است درخواست پردازش نشده است. 400 تا 499: مشخص کننده خطای سرویس گیرنده است. به طور مثال درخواست ناقص، غیر صحیح یا غیر ممکن بوده است. 500 تا 599: مشخص کننده خطای سرویس دهنده است. یعنی درخواست صحیح می باشد ولی سرویس دهنده نتوانسته است تا این درخواست را پردازش کند. (ص58 تا 59)


فصل دوم(مقدمات برنامه نویسی PHP)            
- به سه روش می توان کد های PHP را نوشت(ص62)

- با دستور echo که در جلوی آن متغیر یا رشته (در داخل علامت نقل قول برای متن رشته ای) می توان آن را نمایش داد و چاپ کرد.

-از تگ های ASP می توان برای نوشتن کدهای PHP استفاده کرد. (ص63)

-در زبان PHP همچون زبان C می بایست در انتهای یک دستورالعمل از کاراکتر سمی کولن استفاده کنیم. ولی در یک بلاک از دستورالعمل، دستور العمل آخر نیازی به سمی کولن ندارد. (ص63)

- در PHP از کاراکتر // برای نوشتن توضیحات تک خطی و همچنین از کاراکتر # برای نوشتن توضیحات تک خطی استفاده کرد. از کاراکتر /* */ نیز برای توضیحات چند خطی استفاده کرد. (ص63)

-در PHP متغیر ها با کاراکتر $ شروع می شوند و بعد از کاراکتر $ باید از یک حرف یا یک آندرلاین _ استفاده کرد (نباید از رقم یا space استفاده کرد).همچنین می توان از کلمات کلیدی برای نامگذاری متغیرها و ثوابت استفاده کرد زیرا در ابتدای نام متغیرها کاراکتر $ قرار می گیرد. (ص64)

-زبان PHP یک زبان Loosely Typed است و نیازی به تعریف متغیرها و تعیین نوع داده ی آنها نیست. در این زبان تغییر نوع های داده به طور خودکار و بر حسب نیاز توسط خود زبان برنامه نویسی انجام می شود. (ص64)

-دستور unset برای حذف متغیر ها استفاده می شود. با این دستور می توان به طور همزمان چندین متغیر را حذف کرد. (ص65)

-علاوه بر حذف متغیرها می توانیم داده های موجود در متغیرها را نیز حذف نماییم. به همین منظور باید قبل از حذف متغیر، به متغیر مقدار __ یا دو کاراکتر underline را بدهیم. (ص 65)

-مقدار یک ثابت در طول اجرای اسریپت قابل تغییر نیست. ثابت با کلمه کلیدی define تعریف می شود. نام ثابت با یک حرف یا کاراکتر _ شروع می شود و سپس در ادامه می توانید حروف، ارقام و کاراکتر _ را به کار ببرید. به طور کلی ثابت ها محدوده سراسری دارند و در همه جای یک اسکریپت قابل استفاده می باشند. در PHP برای تعریف ثابت ها از تابع define استفاده می شود و تنها می توانید از ثابت ها داده هایی از نوع boolean، integer، float، string را قرار دهید. بر خلاف متغیر ها برای دسترسی به ثابت ها کافی است که نام آنها را ذکر کنید و نیازی به کاراکتر $ نمی باشد. (طرز بکارگیری: ص65)

-PHP دارای تعداد زیادی از ثابت های از پیش تعریف شده می باشد که در همه ی اسکریپت ها در دسترس می باشند. بیشتر این ثابت ها توسط extension ها به وجود می آیند و لذا زمانی قابل استفاده خواهند بود که extension مربوطه در دسترس باشد. PHP دارای نوع خاصی از ثابت ها می باشد که ثابت جادویی نام دارند و مقدار آنها بر اساس مکان مورد استفاده تغییر می کند. نام این ثابت ها با دو کاراکتر _ شروع می شود و با دو کاراکتر _ پایان می یابد و حساس به حروف بزرگ و کوچک نمی باشد. این ثابت های جادویی عبارتند از:
__LINE__ :خط فعلی از فایل
__FILE__ :نام فایل و مسیر کامل فایل
__FUNCTION__ :نام تابع
__CLASS__ :نام کلاس
__METHOD__ :نام متد کلاس (ص66)

-PHP از هشت نوع داده اصلی پشتیبانی می کند: اسکالر (Boolean , integer , float , string) و ترکیبی (array , object) و داده مخصوص (resource , NULL). (توضیحات بیشتر در ص 67)

- در PHP نوع داده یک متغیر توسط برنامه نویس تعیین نمی شود بلکه در زمان اجرا توسط PHP مشخص می شود. در صورتی که بخواهید مقدار و نوع داده ی یک متغیر را بررسی کنید تابع var_dump() را می توانید به کار ببرید. البته تابع gettype() هم نوع داده یک متغیر را مشخص می سازد. (ص67)

-در صورتی که بخواهیم بررسی کنیم متغیر ما از نوع خاصی می باشد یا خیر از توابع زیر استفاده می کنیم: is_bool() و is_null() و is_float() و is_string() و is_object() و is_array() . نتیجه این تابع یک مقدار Boolean می باشد. (ص68)

-PHP موارد زیر را به عنوان False در نظر می گیرد: عدد صفر، عدد 0.0، رشته تهی و نیز رشته"0" ، یک آرایه با صفر عنصر، یک شیء بدون متغیر عضو، مقدار ویژه NULL. (ص68 و 69)

-PHP برای تغییر متغیر یا مقدار به توع Boolean باید قبل از آن از عبارت (bool) استفاده کنیم. (ص69)

-توضیحات درباره مطالب زیر را در صفحاتشان بخوانید:
تابع: is_bool (ص69)، تابع round() (ص 71)،

-در PHP سه روش برای ایجاد رشته ها به کار می رود: با کاراکتر نقل قول تکی، با کاراکتر نقل قول جفتی، به روش heredoc.
ساده ترین روش نیز استفاده از نقل قول تکی است. اگر بخواهیم کاراکتر نقل قول تکی را در رشته به کار ببریم باید قبل از آن یک کاراکتر \ را بنویسیم. البته در این روش نمی توانیم از متغیر درون متغیر استفاده کنیم.
یکی از راه های پرطرفدار نیز استفاده از کاراکتر نقل قول جفتی است. کدهای ویژه ای برای استفاده در این حالت وجود دارند. مثل: \n , \r , \t , \\ , \$ , \” و موارد متعدد دیگر . زمانی که از کاراکترهای نقل قول جفتی استفاده می کنیم در داخل رشته ها می توانیم از متغیرهای مختلف استفاده کنیم.
روش هردوک نیز در کتاب مطالعه شود. (ص71 الی 75)

-قوانین تبدیل رشته ها به اعداد (ص75 و 76)

-برای دسترسی به کاراکتر های یک رشته، ابتدا آن را در داخل یک متغیر مثل $mst قرار می دهیم و سپس با [] یا {} کاراکتر چندم آرایه متغیر را انتخاب می کنیم مثلا $mst[0] و به همین شکل الخ. (ص76)

-عملگرهای حسابی و عملگرهای انتساب در زبان PHP برای کار با متغیرها (ص76 و 77)

-عملگرهای دستکاری بیتی و عملگرهای مقایسه و عملگرهای یک واحد کاهش و افزایش و عملگرهای منطقی. (ص77 الی 81)

-دستور print() نیز برای چاپ کردن متغیر یا عبارت در صفحه نمایش به کار می رود. (ص82)

-تقدم عملگرها (ص82 الی 84)

-برای تبدیل یک متغیر یا عبارت کافی است که قبل از آن متغیر، نام نوع داده مورد نظر را در بین دو پرانتز بنویسیم. دستورات لازم برای تبدیل به نوع ها به این شرح است: (int) , (integer) , (bool) , (Boolean) , (float) , (double) , (real) , (string) , (array) , (object) . طر بکارگیری هم به این شکل است: از چپ به راست ابتدا مثلا می نویسیم (string) و با یک فاصله پس از آن نام تابع را یا رشته را می نویسیم. (ص84 و 85)

-تابع settype نیز برای تغییر نوع داده استفاده می شود و به این صورت است:
Bool settype (name_moteghayyer, noe_dade) که نوع داده در ص 85 آمده است.

-NULL مشخص می کند که یک متغیر دارای مقدار نمی باشد. یک متغیر در صورتی NULL به حساب می آید که یکی از شرایط زیر را دارا باشد: مقدار NULL به آن اختصاص داده شده باشد، هیچ مقداری به آن اختصاص نیافته باشد، تابع unset() بر روی آن اعمال شده باشد. (ص86)



فصل سوم: دستورات شرطی و حلقه ها                 
-PHP از دو نوع دستور شرطی استفاده می کند: if و switch . دستور if بر اساس شرط خاصی، مجموعه ای از دستورات را اجرا می کند. در صورتی که بخواهید مقدار یک عبارت را با چند مقدار مقایسه کرده و بر اساس این مقایسه مجموعه ای از دستورالعمل ها را اجرا کنید باید از دستور switch استفاده کنید. (ص88)

-ساختار دستور if به این صورت است:
If(shart)
Dastoor; که می تواند بلوکی از دستورات باشد. همچنین می توان از else و elseif نیز استفاده کرد. (ص88 تا 90)

-با کمک حلقه while می توانیم مجموعه ای از دستورات را به دفعات مشخص تا برقراری شرط خاصی اجرا نماییم. و بدین صورت: while(shart) {Dastoorat;}. البته می توانیم از آکولاد نیز استفاده نکنیم ولی باید در انتهای دستور وایل حتما از دستور endwhile; استفاده کنیم. (ص92 و 93)

-حلقه do-while مشابه حلقه while می باشد البته با این تفاوت که شرط حلقه در انتهای بدنه حلقه چک می شود. بدین ترتیب حداقل یکبار حلقه اجرا می شود. (ص94 و 95)

- از حلقه for بیشتر زمانی استفاده می کنیم که تعداد دفعات تکرار را بدانیم. این حلقه دارای سه قسمت است: مقدار دهی، شرط، گام حلقه. البته لازم به ذکر است که که هر کدام از این قسمت ها اختیاری می باشند و در صورت نیاز می توانیم آنها را ننویسیم و به جای آنها جای خالی قرار دهیم. ولی اگرشرط حلقه را ننویسید حلقه به بی نهایت تبدیل خواهد شد. (ص95 تا 97) ساختار:
For(meghdar_e_avval; shart; gam_halgheh)
Dastoor;

-دستور foreach فقط برای کار با آرایه ها استفاده می شود. (ص97 و 98)

-از دستور break برای خاتمه دادن به اجرای حلقه های for، foreach، while، do-while و دستورات switch به کار می رود. (ص99)

- از دستور continue در حلقه های تکرار استفاده می شود و زمانی که اجرا می شود PHP از بقیه دستورات حلقه صرف نظر می کند و کنترل برنامه را به ابتدای حلقه منتقل می کند. (ص 101)

-دستور switch نیز برای زمانی کاربرد دارد که ما می خواهیم تا تساوی مقدار یک متغیر را با مجموعه ای از مقادیر متفاوت بررسی کنیم و در صورت تساوی با مقدار متغیر با هر یک از این مقدارها مجموعه ای از دستورات را اجرا کنیم. فقط فراموش نکنید پس از هر case و دستور آن از دستور break استفاده نمایید. (ص100 الی 104)




فصل چهارم: آرایه ها            
-در PHP هر آرایه ها به دو دسته آرایه های ایندکس دار و آرایه های انجمنی تقسیم می شوند. در آرایه های ایندکس دار هر یک از عناصر آرایه، بر اساس ایندکس مورد دسترسی قرار می گیرند و به طور پیش فرض ایندکس آنها از نوع صحیح بوده و اولین عنصر آرایه، ایندکس صفر را دارد.
آرایه های انجمنی در PHP مجموعه ای مرتب از تعدادی نگاشت می باشند. در یک نگاشت برای دسترسی به هر یک از مقادیر ذخیره شده در آرایه یک کلید انتساب داده می شود. از این نوع آرایه می توان برای ایجاد آرایه عادی، جدول هش، لغت نامه، پشته، صف و حتی رکورد استفاده نمود. همچنین به دلیل اینکه هر یک از مقادیر استفاده شده در تابع array() خود می تواند آرایه دیگری باشد می توان ساختار درخت را نیز شبیه سازی کرد. (ص105)

-ساده ترین نوع آرایه در زبان PHP آرایه ایندکس دار است. نحوه ایجاد ارایه مثلا به این صورت است: $salam[] = “iran”; و روش های دیگری نیز هست(ص106).
- از تابع count برای بدست آوردن تعداد عناصر پر یک متغیر آرایه ای مثلا: count($salam); . (ص107)

- یک روش نیز برای ایجاد آرایه، استفاده از تابع array() برای مقدار دهی به متغیر است. مثلا $salam_2 = array(“abolfazl”, “Mohsen”); می باشد. که می توان مقادیر ایندکس را نیز مشخص کرد.(ص107 و 108)

-توابع مفید برای کار با آرایه ها:
تابع end(): با استفاده از این تابع می توانید آرایه ها را پیمایش کنید و مقدار و کلید عنصر جاری را به دست آورید. این تابع باعث می شود تا اشاره گر عنصر جاری آرایه، به آخرین عنصر آرایه اشاره نماید. مقدار بازگشتی این تابع نیز همان عنصر نهایی آرایه است. (ص108 و 109)
تابع each(): این تابع به عنوان آرگومنت یک ارایه را دریافت می نماید و کلید و مقدار عنصر جاری را بر می گرداند و نشانگر عنصر جاری را افزایش می دهد. (ص 109 و 110)
تابع list(): تعدادی متغیر را به عنوان ارگومنت دریافت می کند و عناصر آرایه را به انها اختصاص می دهد. (ص110 و 111)

-از حلقه ها می توان برای کار و چاپ کردن آرایه ها کمک گرفت(ص111 الی 116)

-برای بدست آوردن عنصر فعلی آرایه باید از تابع current() و برای بدست آوردن ایندکس عنصر فعلی آرایه از تابع key() باید استفاده نمود. همچنین PHP برای پیمایش آرایه ها دو تابع next() و perv() را ارائه می دهد. (ص113)

-تابع array_walk(): این تابع برای ما امکان پیمایش عناصر یک آرایه را فراهم می آورد با استفاده از آن دیگر نیازی به حلقه های مختلف نمی باشد. این تابع دو آرگومنت را دریافت می کند. آرگومنت اول آن، نام آرایه و ارگومنت دوم هم تابعی را مشخص می سازد تا بر روی تک تک عناصر آرایه اعمال شود. مثلا: array_walk($name, println) از (ص116).

-کلیدهای مورد استفاده در آرایه های انجمنی، ممکن است یک عدد صحیح یا رشته باشند. ارایه های انجمنی را نیز با تابع array() می توان ایجاد نمود. این تابع تعدادی آرگومنت به صورت مقدار <= کلید را دریافت می کند و یک آرایه را بر می گرداند. (ص117 و 118)

-در صورتی که بخواهید کلیه عناصر یک آرایه را از بین ببرید باید نام آرایه را برابر تابع array() قرار دهید. در صورتی که بخواهید کلا آرایه را از بین ببرید باید از دستور unset استفاده نمایید. (ص119)

-مرتب سازی آرایه ها: PHP توابع متعددی برای مرتب سازی آرایه ها دارد.
تابع sort(): این تابع عناصر آرایه را بر اساس ترتیب عدد و حروفی و به صورت صعودی مرتب می کند. بعد از مرتب سازی، ابتدا اعداد سپس علامت های نقطه گذاری و در نهایت حروف قرار می گیرند. این تابع بعد از مرتب سازی ایندکس های جدید را به عناصر اختصاص می دهد تا مرتب سازی تکمیل شود. (ص120 الی 122)
تابع asort(): این تابع عملیات مرتب سازی عناصر را بدون تغییر ایندکس ها و به طور صعودی انجام می دهد. (ص 121)
تابع rsort() عملیاتی مشابه تابع sort() و تابع arsort() عملیاتی مشابه assort() را انجام می دهند. البته این توابع آرایه ها را به طور نزولی مرتب می نمایند. تابع دیگری نیز به نام ksort() وجود دارد که آرایه ها را بر اساس کلیدهای عناصر و به صورت صعودی مرتب می نماید. (ص 121)

-PHP تابعی را برای مرتب سازی آرایه بر ساسا کلیدها به طور نزولی ارائه نمی دهد. به همین منظور، ابتدا باید تابع ksort() و سپس arsort() را باید به کار برید. (ص122)

-PHP تابع دیگری به نام usort() را نیز برای عملیات مرتب سازی آرایه ها ارائه می دهد. این تابع پیچیده تر از توابع قبلی می باشد و دو آرگومنت را دریافت می کند. آرگومنت اول آرایه ای است که باید مرتب شود و آرگومنت دوم «تابعی» است که برای usort() مشخص می کند چگونه عملیات مرتب سازی را انجام دهد. (ص122 و 123)

-تابع strlen() طول رشته را بر می گرداند. (ص122)

-تابع uksort() همانند تابع usort() می باشد ولی عملیات خود را بر روی کلیدهای عناصر آرایه انجام می دهد. (ص123)
- PHP توابعی هم برای نامرتب کردن عناصر آرایه می دهد. تابع shuffle() با استفاده از تولید کننده اعداد شبه تصادفی عناصر آرایه را به صورت غیر مرتب می چیند. (ص123)

-تابع range() دو عدد را دریافت می کند و آرایه ای را بین این دو آرگومنت بر می گرداند. البته لازم به ذکر است که آرگومنت اول باید از آرگومنت دوم کمتر باشد. (ص123 و 124)

-اگر بخواهیم با چندین نام به یک آرایه رجوع کنیم باید از عملگر ارجاع & استفاده کنیم. مثلا اول متغیر آرایه ای $salam_3 را تعریف می کنیم و سپس متغیر جدید را به این صورت تعریف می کنیم: $salam_4 = &$salam_3 . به همین سادگی! (ص 125)

-تابع is_array متغیری را بررسی می کند که آیا آرایه هست یا خیر؟ خروجی این تابع یک Boolean است. (ص125 و 126)

-تابع array_combine() دو آرایه دریافت کرده و سپس یک آرایه را ایجاد می نماید. این تابع آرایه اول را به عنوان کلیدهای آرایه جدید و آرایه دوم را به عنوان مقادیر آرایه جدید استفاده می کند. اگر تعداد عناصر آرایه با هم یکسان نباشد یا خانه خالی داشته باشد آنگاه این آرایه مقدار false باز می گرداند. (ص126)

-تابع array_key_exists() کلیدها و ایندکس های آرایه را برای وجود کلید خاصی بررسی می کند. اگر مقدار مورد نظر را بیابد مقدار true را بر می گرداند. (ص126 و 127)

-تابع array_keys() برای بدست آوردن کلیدها یا ایندکس های آرایه ها استفاده می شود. (ص127)

-تابع array_search() را برای وجود مقدار خاصی جستجو می نماید. اگر این مقدار در آرایه وجود داشته باشد آنگاه کلید آن را بر می گرداند. متغیر اول نامی است که می خواهیم جستجو کنیم و متغیر دوم متغیر آرایه است که می خواهیم در آن بگردد و بیابد. (ص127 و 128)

-تابع array_values(): این تابع آرایه ای را دریافت می کند و سپس تمامی مقادیر آرایه را بر می گرداند. اغلب برای تبدیل آرایه های انجمنی به ارایه های ایندکس دار به کار می رود. (ص128)

-ساختار کلی آرایه های چند بعدی ایندکس به این شکل است: $name [index1] [index2] … [indexN]; . نحوه مقدار دهی و دسترسی در ص 128 و 129 مطالعه شود. (ص128 و 129)

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

-عملگرهای آرایه: بررسی اجتماع، تساوی، اشتراک و ... (ص131)

-تابع array_pop(): این تابع برای حذف آخرین عنصر آرایه به کار می رود. آرگومنت دریافتی این تابع آرایه مورد نظر می باشد. مقدار بازگشتی این تابع هم مقدار آخرین عنصر آرایه است. در صورتی که آرایه دریافتی این تابع خالی باشد آنگاه این تابع مقدار NULL را بر می گرداند. (ص132)




فصل پنجم: فرم ها             
-به طور کلی همه فرم ها عملیات یکسانی را انجام می دهند و با دریافت داده های کاربر، آنها را به اسکریپتی در سرویس دهنده وب ارسال می نمایند. هر وقت که شما یک کلید submit را کلیک می کنید علاوه بر اطلاعات فرم، اطلاعات متعددی درباره سیستم و مرورگر وب شما به سرویس دهنده ارسال می گردد. همچنین سرویس دهنده نیز به هنگام ارسال پاسخ اطلاعاتی درباره سیستم خود برای ما می فرستد. PHP قابلیت دریافت این اطلاعات را دارا می باشد. (ص133)

-PHP به طور خودکار تعدادی از متغیرها را ایجاد می نماید که در همه جای برنامه قابل دسترس هستند. این متغیرها، متغیرهای از پیش تعریف شده نام دارند و در حقیقت آرایه می باشند. نام دیگر آنها «متغیرهای فوق سراسری» نیز می باشد. (ص134)

-متغیرهای از پیش تعیف شده بدون توجه به محدوده و بدون استفاده از کلمه کلیدی global در همه جای برنامه قابل دسترس هستند. متغیرهای از پیش تعریف شده در زبان PHP عبارتند از: $GLOBALS و $_SERVER و $_GET و $_POST و $_COOKIE و $_FILES و $_ENV و $_REQUEST و $_SESSIO. (ص135)

-متغیر $GLOBALS و نحوه نمایش آن (ص135 و 136)

-متغیر سراسری $_SERVER: تمامی داده هایی که سرویس دهنده در یک پیام پاسخ HTTP به سرویس گیرنده ارسال می کند در این آرایه قرار می گیرند. این اطلاعات عبارتند از: نام اسکریپت در حال اجرا، نام سرویس دهنده، نسخه HTTP، آدرس IP راه دور. (ص136 و 137)

-متغیر سراسری $_GET: یکی از روش های ارسال داده های فرم به اسکریپت سرویس دهنده می باشد. زمانی که یک فرم، داده های خود را به متد GET ارسال نماید. آنگاه این داده ها، در اسکریپت مقصد با آرایه $_GET قابل دسترس خواهند بود. (ص137)

-متغیر سراسری $_POST: یکی دیگر از روش های ارسال داده های فرم به اسکریپت سرویس دهنده می باشد. زمانی که یک فرم، داده های خود را به متد POST به مقصد ارسال می نماید آنگاه این داده ها، در اسکریپت مقصد با آرایه $_POST قابل دسترس خواهئد بود. (ص137)

-متغیر سراسری $_COOKIE: این آرایه تمامی کوکی هایی است که توسط مرورگر وب به سرویس دهنده وب ارسال شده است. در اسکریپت مقصد برای خواندن کوکی ها از این آرایه استفاده می شود. برای نوشتن کوکی ها بر روی سیستم کاربران تابع setcookie() به کار می رود. (ص137)

-متغیر سراسری $_FILES: شامل فایل هایی است که کاربران به سرویس دهنده آپلود (ارسال) می کنند. (ص137)

-متغیر سراسری $_ENV: شامل اطلاعاتی درباره سرویس دهنده و PHP می باشد. اطلاعاتی همانند نام کامپیوتر، سیستم عامل و درایو سیستم در این آرایه قرار می گیرند. (ص138)

-متغیر سراسری $_REQUEST: این آرایه شامل عناصر آرایه های $_GET و $_POST و $_COOKIE می باشد. (ص138)

-متغیر سراسری $_SESSION: شامل تمامی متغیرهایی است که هم اکنون به عنوان متغیر جلسه ثبت شده اند. جلسه یا session یکی از روش هایی است که سرویس دهنده وب برای تشخیص کاربران در مراجعات مختلف به کار می برد. (ص138)

-پروتکل های قابل استفاده در آدرس URL عبارتند از: http، file، ftp، gopher، mailto، telnet، news، nntp. (ص139)

-Query String ها رشته هایی هستند که به انتهای آدرس های URL افزوده می شوند و اغلب توسط فرم های HTML ایجاد می گردند. این رشته ها شامل تعدادی عبارت به صورت مقدار = نام می باشند و برای ارسال داده های فرم به اسکریپتی بر روی سرویس دهنده به کار می روند. PHP هم قابلیت پردازش Query String را دارد. (ص139)

-ساختار قرار گیری کوئری استرینگ به این شکل است که پس از آدرس URL یک علامت سوال قرار می گیرد و سپس نام و سپس علامت مساوی و سپس مقدار و سپس علامت & و دوباره این روند تکرار می شود و «مقدار = نام» به تناوب تکرار می شود. (ص140)

-مقدار های بکار رفته در یک Query String را می توانیم از یک بانک اطلاعات خوانده و یا با استفاده از فرم های HTML، آنها را از کاربر به صورت online دریافت کنیم. (ص140)

-به دو روش می توانیم امکان ارتباط کاربر با سرویس دهنده وب را فراهم سازیم. این روش عبارتند از: 1-کلیک کردن یک لینک 2-submit کردن یا ارسال یک فرم (ص140)

-عناصر فرم های HTML (حتما صفحات 141 الی 143 خوانده شود):
دستور <form> </form> : کنترل های دیگر مثل text box و check box و radio button ها بین این دو تگ قرار می گیرند.به هنگام submit کردن یک فرم، اطلاعات این کنترل ها به سرویس دهنده وب ارسال خواهند شد.
در PHP نام «کنترل های فرم» بسیار مهم است زیرا PHP برای دسترسی به داده های ارسالی فرم، به طور خودکار متغیرهایی به نام کنترل های فرم ایجاد می کند. یعنی مثلا اگر نام کنترلی فرمی first_name باشد به طور خودکار متغیر $first_name ایجاد می شود. در حقیقت متناسب با متد ارسال فرم به سرویس دهنده این متغیر قسمتی از آرایه $_GET و یا $_POST خواهد بود. (ص141 و 142)

-نکاتی مهم درباره فرم ها:
یک صفحه وب می تواند دارای چند فرم باشد و هر فرم می تواند به صفحه ای مستقل ارسال شود.
مقدارهای ارسال شده از سوی فرم ها همیشه از نوع رشته هستند ولی زمانی که شما آنها را دریافت می کنید می توانید به نوع های مورد نظر خود تبدیل کنید.
نام فرم ها اهمیتی ندارد مگر اینکه با جاوا اسکریپت بخواهید با یکی از آنها کار کنید و یا یکی از آنها را submit کنید. (ص142)

-دو خاصیت دیگر تگ form، accept-char و enctype برای فرم ها هستند که به ترتیب character set و mime-type داده های فرم را مشخص می سازند. دستور <form> خاصیتی به نام target دارد که مشخص می کند کدام فریم یک صفحه وب، پاسخ سرویس دهنده به ارسال فرم را باید نشان دهد. (ص143)

-خاصیت متد در تگ form: این خاصیت روش ارسال اطلاعات به سرویس دهنده را کنترل می کند. برای این خاصیت اغلب یکی از دو مقدار GET و یا POST اختصاص داده می شود. خاصیت پیش فرض این متد GET است. البته به غیر از این دو مقدار، مقادیر دیگری نیز برای این خاصیت وجود دارند همانند HEAD، PUT، LINK، UNLINK، OPTIONS، DELETE، TRACE، CONNECT. (ص 143)

-متد GET در تگ form باعث می شود تا برنامه مرورگر، اطلاعات وارد شده در فرم را به صورت یک Query String به انتهای آدرس URL مشخص شده در خاصیت action بیافزاید. برای این کار ابتدا یک علامت سوال به انتهای این آدرس می افزاید و سپس اطلاعات فرم را به صورت مقدار=نام در ادامه قرار می دهد. (ص143) البته اگر بخواهید URL مربوطه مطابق با XHTML باشد باید به جای & از کاراکتر &amp; استفاده کنید. همچنین اگر در آدرس URL فاصله داشته باشیم باید به جای فاصله از علامت + استفاده کنیم. (ص144)

-کدگذاری آدرس های URL: مخصوص استفاده در آدرس های URL و Query String (ص144)

-مرورگر وب به جای فاصله (space) همواره از کد 20% استفاده می کند. (ص145)

-متد POST در تگ form: در صورتی که نخواهید اطلاعات خود را در آدرس URL بفرستید باید از متد POST استفاده کنید. در این روش اطلاعات در بدنه پیام HTTP request فرستاده می شود. بدین ترتیب دیگر کسی اطلاعات ارسالی را نخواهید دید. در روش POST می توان داده بیشتری را ارسال نمود در حالی که محدود بودن طول یک آدرس URL، محدودیتی بر روی میزان داده های ارسالی در روش GET قرار می دهد. در روش POST می توان داده بیشتری را ارسال نمود در حالی که محدود بودن طول یک آدرس URL، محدودیتی بر روی میزان داده های ارسالی در روش GET قرار می دهد. صفحاتی که داده های خود را به صورت POST دریافت می کنند قابل refresh کردن نیستند و نمی توان آنها را به صورت offline اجرا نمود و برای اجرای مجدد این صفحات باید اطلاعات به صورت POST مجددا ارسال شوند. (ص145)

-وقتی با متد GET داده را ارسال می کنید مرورگر به صورت خودکار کوئری را ساخته و به URL اضافه می کند. نام متغیر، همان نام کنترل (مثلا نام کنترل Text Box) است. مثلا اگر نام کنترل ارسالی Author باشد برای دسترسی به داده ارسالی به اسکریپت از $_GET(‘Author’) استفاده شده است. (ص147)

-کنترل Text Area و نحوه HTML آن و نوشتن مقادری پیش فرض در فیلد آن و نحوه دسترسی به آن در فایل PHP گیرنده (ص148 تا 150)

-در کنترل های check Box که در صفحه HTML مربعی به حالت انتخاب نمایش داده می شود در سمت گیرنده در فایل PHP دو مقدار از این تحویل گرفته می شود: on یا off. اگر تیک خورده باشد on و اگر نخورده باشد مقدار off به سمت سرور فایل php فرستاده می شود. (ص150 الی 154)

-در کنترل های Radio Button نباید فراموش کرد که مقدار هر گزینه نیز در کدنویسی HTML لحاظ شود. (ص154 الی 156)

-کنترل List box یا لیست های پایین افتادنی کنترل هایی هستند که معمولا چندین گزینه را در یک لیست نشان می دهند و کاربر می تواند از این لیست گزینه ای را انتخاب کند. List box ها توسط دو دستور <select> و <option> ایجاد می شوند. در صورتی که در کد HTML دستور List box از multiple استفاده شود کاربر قابلیت چند انتخاب را خواهد داشت. طرز استفاده و بکارگیری داده های ارسالی از List box ها به صورت آرایه ای بوده و مثلا به این شکل است: $_POST[‘name_cotrol’][0] . (ص156 الی 159)

-در کد طرف سرویس گیرنده PHP کد List box از تابع isset() استفاده شده است و مقدار آن نیز همان متغیر سراسری $_POST می باشد. (ص158)

-آموزش و طرز بکارگیری فیلدهای پنهان در صفحه 159 آمده است. در استفاده از فیلدهای پنهان توجه داشته باشید که اگر داده های فرم را به متد GET ارسال کنید اطلاعات این فیلد به صورت متن عادی در Query String نشان داده خواهد شد. (ص163)

-آموزش استفاده و بکارگیری از متغیر های php در طراحی صفحات html در صفحه 162 آمده است. (ص162)

-فیلدهای رمز عبور: فیلدهای رمز عبور در واقع یک نوع Text Box هستند که اطلاعات تایپ شده در خود را به صورت ستاره نشان می دهند. به طور کلی هیچ تفاوتی در پردازش اطلاعات یک Text Box و یک فیلد رمز عبور وجود ندارد.
نحوه ایجاد فرم HTML رمز عبور (ص162)
برای ایجاد امنیت لازم برای اطلاعات مهمی همانند رمز های عبور، باید از پروتکل امنیتی SSL استفاده کنید. (ص163)

-یک فرم و پردازش مقدماتی آن بدون ذخیره کردن اطلاعات در سرور (ص163 الی 167)

-به وسیله تابع exit() اجرای اسکریپت خاتمه می یابد. دستور die() نام دیگر این تابع است و به جای exit() یمتوان به کار برد. آرگومنت دریافتی تابع exit() پیامی است که باید نمایش یابد. اگر عددی به صورت عدد صحیح به این تابع بدهیم آنگاه این عدد به عنوان وضعیت خروج استفاده خواهد شد. وضعیت خروج باید بین 0 تا 254 باشد. وضعیت خروج 255 برای PHP رزرو شده است و نباید آن را بکار برد. وضعیت صفر پایان موفقیت آمیز برنامه را نشان می دهد. (ص167 و 168)

-برنامه ای نرم افزاری که با استفاده همزمان از یک تابع، فرم را تحلیل و بررسی می کند تا اگر صحت سنجی آن دچار تردید است دوباره اطلاعات از نو توسط کاربر وارد شود. (ص168 الی 190)

-انواع خطاهای PHP: PHP در حدود 11 نوع خطای مختلف را تولید می کند. (ص176 و 177)

-تنظیمات گزارش خطاها در فایل پیکربندی php.ini (ص177 و 178)

-با تابع error_reporting() می توانید تنظیمات مربوط به گزارش خطاها را در فایل php.ini تغییر دهید. این تابع یک آرگومنت را دریافت می کند که ممکن است یک رشته یا عدد باشد. در صورتی که شما بخواهید اصلا گزارش نشود می توانید تابع error_reporting() را با آرگومنت صفر فراخوانی کنید. این کار باعث می شود پیام های E_WARNING و E_NOTICE نمایش داده نشود. (ص178 الی 180)

-Fatal Error به معنی «خطای مهلک» است (ص179). برای جلوگیری از گزارش یک پیام خطای جدی (یعنی Fatal Error) تابع error_reporting را به صورت زیر فراخوانی می کنیم: error_reporting(~E_ERROR); البته باید توجه داشت که عدم گزارش خطا به معنای عدم وقوع آن نیست بلکه خطا اتفاق می افتد و اسکریپت نیز به همین خاطر متوقف می شود ولی هیچ پیامی نمایش داده نمی شود. (ص 179 و 180)

-display_errors: علاوه بر مسائل مطرح شده، گزینه های دیگری در فایل php.ini وجود دارد که از نمایش پیام های خطا بر روی مرورگر وب کاربران جلوگیری می نماید. این تنظیمات توسط گزینه display_errors موجود در فایل php.ini ایجاد می شوند. در صورتی که بخواهید اصلا پیام ها برای کاربر نشان داده نشود باید به این گزینه مقدار صفر بدهید. البته به هنگام برنامه نویسی و ایجاد یک وب سایت هم باید به این گزینه مقدار 1 یا on را بدهید. همچنین PHP با تابع ini_set() این امکان را نیز فراهم می سازد تا شما تنظیمات فایل php.ini را تنها برای یک فایل یا اسکریپت جاری تغییر دهید.
اگر شما در فایل php.ini با گزینه display_errors از نمایش پیام های خطا جلوگیری بکنید و بخواهید تا اسکریپت جاری را اشکال زدایی نمایید می توانید عبارت زیر را در ابتدای اسکریپت خود قرار دهید: ini_set(“display_errors”, 1); که این دستور معادل display_errors = on . البته توجه داشته باشید که در حالت فوق اگر اسکریپت شما باخطایی مواجه شود که از اجرای اسکریپت جلوگیری کند، آنگاه PHP از تنظیمات فایل پیکربندی php.ini استفاده خواهد کرد. (ص180)

-تنظیمات php.ini برای خطاها و تست برنامه ها(ص180 و 181)
بعد از اینکه سایت خود را به طور کامل ایجاد کردید و بر روی اینترنت قرار دهید بهتر است که با دستور زیر از نمایش پیام های خطا جلوگیری کنید: display_errors = 0. (ص 180)

-در PHP می توان خطاهای ایجاد شده به هنگام اجرای اسکریپت ها را ثبت نمود. تابع error_log() تعدادی آرگومنت را دریافت می کند و عملیات ثبت وقایع را انجام می دهد. تعداد آرگومنت های مورد نیاز بر اساس نوع عملیات ثبت وقایع متفاوت می باشد.
Error_log($message, $message_type, $destination, $extra_headers);
مقادیر قایل استفاده در در $message_type یا آرگومنت دوم در جدول ص 182 آمده است. مقدار 0 به یک مکانیزم خاص ثبت وقایع یا به یک فایل فرستاده می شود(مثلا در فایل ثبت وقایع خطاهای سرویس دهنده وب آپاچی ثبت خواهد شد)، مقدار 1 به یک آدرس ایمیل مشخص شده در آرگومنت سوم فرستاده می شود، مقدار 2 به سرویس اتصال اشکال زدایی PHP (که یک شماره پورت و آی پی مثل 192.168.0.1:2020) می باشد فرستاده می شود، مقدار 3 هم در فایلی مثل file.txt نوشته می شود. (ص181 و 182)

-شبه دستور های مربوط به خطاها در php.ini: شبه دستور های بیان شده عبارتند از log_errors,
log_errors_max_len,
ignore_repeated_errors,
ignore_repeated_source,
track_errors,
html_errors,
error_prepend_string,
error_append_string,
error_log (ص183)

-PHP برای برنامه نویسان این امکان را به وجود آورده است که پردازشگرهای خطایی را بر اساس نیازهای خود نموده و برای خطاهای خاص تدابیر مورد نظر خود را اعمال نمایند. در PHP تابع set_error_handler امکان استفاده از پردازشگر خطای مورد نظر برنامه نویس را فراهم می آورد. جزئیات بیشتر: (ص 184).

-زمانی که خطایی رخ می دهد، PHP آرگومنت تابع set_error_handler() را فراخوانی می کند و اطلاعات زیر را به عنوان آرگومنت به این تابع می فرستد: شماره خطا (یکی از شماره مشخص شده در جدول ص 176)، متن خطا، نام و مسیر فایلی که خطا در آن رخ داده، شماره خطی که در آن خطا رخ داده، اطلاعات متن در زمان وقوع خطا. (ص 184و 185)

-ایجاد خطا با تابع trigger_error() به شکل زیر:
trigger_error($error_message, $error_type)
که آرگومنت اول رشته ای به عنوان متن خطا است و آرگومنت دوم نیز نوع خطایی که می خواهید ایجاد شود. این آرگومنت یکی از سه مقدار E_USER_ERROR و E_USER_WARNING و E_USER_NOTICE می باشد. (ص 185 ایل 187)

-برخی خطاها در زمان تست کشف می شوند و برخی نیز در زمان اجرا و بکارگیری. یک برنامه نویس باید کدهایی را برای کشف خطاهای احتمالی زمان اجرا و برخورد مناسب با آنها را بنویسد. PHP برای برنامه نویسان امکان اشکال زدایی و پردازش خطاها را فراهم می نماید و به طور مثال برنامه نویس می تواند در صورت بروز خطای خاص، پیام خطای مربوطه را نشان دهد. مورد دیگری که درباره خطاها باید ذکر بکنیم این است که خطاها انواع مختلفی دارند و با هر نوع خطا باید به طور جداگانه ای باید برخورد نمود. (ص188)

-انواع خطاها: 1- خطاهای نحوی (خطاهای زمان کامپایل) 2- خطاهای معنایی (خطاهای زمان اجرا) 3- خطاهای منطقی 4-خطاهای محیطی(تحت عوامل غیر قابل کنترل توسط برنامه نویس) (ص188)

-خطاهای نحوی: زمانی به وجود می آیند که برنامه نویس، قوانین زبان برنامه نویسی را به طور عمدی یا سهوی رعایت نکرده است. (ص188 و 189)
خطاهای معنایی: این نوع خطاها زمانی به وجود می آیند که برنامه از لحاظ نحوی کاملا صحیح می باشد و برنامه در حال اجرا می باشد. (ص 190)
خطاهای منطقی: زمانی که کد نوشته شده عملیات مورد نظر برنامه نویس را انجام ندهد برنامه دارای خطاهای منطقی است. (ص190 و 191)

-PHP از یک عملگر کنترل خطا @ پشتیبانی می کند. در صورتی که این عملگر را قبل از دستورالعملی بکار ببریم و در این دستور خطاهایی رخ دهد، آنگاه PHP از پیام های خطای این دستور صرف نظر خواهد کرد. در صورتی که خاصیت track_errors فعال باشد، آنگاه تمامی پیام های خطای تولید شده در دستور مورد نظر در متغیر $php_errormsg ذخیره خواهد شد. به طور پیش فرض خاصیت track_errors در فایل php.ini مقدار off را دارد. برای فعال سازی این خاصیت باید به آن مقدار on بدهیم.
لازم به تذکر است عملگر @ را تنها می توانید با عبارات بکار ببرید. (ص191)



فصل هفتم: رشته ها       
-بیشتر داده هایی که در برنامه های کاربردی وب به کار می روند به صورت رشته هستند. (ص193)

-طرز استفاده از تابع printf()، آرگومنت های آن و کدهای ویژه (ص194). لازم به ذکر است کدهای ویژه این دستور عبارتند از d , b , c , f , o , s , x , X که در آرگومنت اول و پس از یک علامت % قرار می گیرند. مثل %d (ص194)

-زمانی که در HTML بخواهیم رنگ کنترل های مختلف را مشخص نماییم. باید سه عدد صحیح هگزا دسمیال بین 00 تا FF را مشخص کنیم. این سه عدد رنگ های قرمز، سبز و آبی را تعیین می کنند. با دستور printf می توانیم این مقدار ها را به صورت عدد دسیمال تعیین کنیم و این دستور معادل باینری آنها را ایجاد می کند. مثلا به در نهایت تابع مذکور به این صورت در می آید: printf(“#%x%x%x”, $red, $green, $blue); (ص195)

-در صورتی که بعد از کاراکتر % عددی را مشخص نمایید. این عدد به عنوان بازه ای برای چاپ آرگومنت متناظر عمل خواهد کرد. البته باید هر سه عدد که در پشت سه متغیر قرار می گیرند یکی باشد.

-در تابع printf()، همچنین در صورتی که بخواهید در بازه مورد نظر به جز آرگومنت از عدد صفر هم استفاده شود باید 0% را به کار برید. همچنین برای تبدیل یک عدد دسیمال به هگزادسیمال باید از عبارت %x و یا %X استفاده نمایید. برای چاپ رشته ها نیز از %s استفاده می شود. در صورتی که بخواهید رشته مورد نظر در بازه خاصی چاپ گردد باید بین s و % عددی را تعیین کنید. اگر این عدد مثبت باشد آنگاه فضاهای خالی قبل از رشته ایجاد می شود. برای چاپ اعداد اعشاری باید از کد %f استفاده کنید بازه اعداد اعشاری از دو قسمت صحیح و اعشاری تشکیل می شود. قسمت صحیح، طول کل عدد اعشاری را مشخص می نماید و اختیاری است. قسمت اعشاری هم تعداد ارقام قسمت اعشاری را تعیین می کند. (ص196 و 197)

-زمانی که بخواهید متنی را در یک صفحه وب نمایش دهید آنگاه خواهید دید که کاراکترهای خط جدید که با \n ایجاد شده اند، نمایش داده نمی شوند. برای حل این مشکل می توانید متن دارای کاراکترهای \n را در بین تگ های <pre></pre> قرار دهید. می توانید از تابع nl2br() استفاده کنید. این تابع کاراکترهای \n را به دستور <br /> زبان XHTML تبدیل می کند. (ص198)

-تابع str_repeat تابعی برای تکرار یک رشته به تعداد مورد نظر است. ارگومنت اول رشته مورد نظر و آرگومنت دوم هم تعداد آن رشته را مشخص می کند. (ص199)
string str_repeat (string input, int multiplier)

-تابع printf() متن فرمت دهی شده را برای نمایش به مرورگر وب می فرستد. بعضی اوقات ما میخواهیم تا متن فرمت دهی شده را در متغیری ذخیره کنیم و در مراحل بعدی به کار بریم. در این حالت باید از تابع sprintf() را استفاده کنیم. این تابع عملکردی مشابه تابع printf() دارد ولی به جای چاپ کردن یک رشته، آن را بر می گرداند. آرگومنت های این تابع از کتاب دیده شود. (ص 199)

-طول یک رشته از جمله اطلاعات مهمی است که اغلب در کار با رشته ها استفاده می شود. برای محاسبه طول یک رشته باید تابع strlen را به کار برد. (ص199)
int strlen ($var)

-بعضی اوقات در یک رشته طولانی ممکن است نیاز به تعداد کلمات یک رشته داشته باشیم در این مواقع می توانیم تابع str_word_count را به کار بریم. این تابع با دریافت یک رشته، اطلاعاتی را درباره آن بر می گرداند. تابع str_word_count سه آرگومنت را دریافت می کند، آرگومنت اول رشته مورد نظر است و آرگومنت دوم نیز عملیات تابع را مشخص می سازد. (ص199 و 200)

-جستجو و جایگزینی رشته ها:
PHP توابع زیادی زیادی برای جستجو در اختیار قرار داده است که برخی از آنها عبارتند از: strops, strstr, substr_count, strrpos, strrchr, str_replace
توضیحات این توابع را از کتاب بخوانید. (ص200 الی 202)

-بعضی اوقات برای اصلاح یک متن نیاز داریم تا کلمه خاصی با یکی از کلمات موجود در متن جایگزین کنیم. در این حالت باید از تابع str_replace استفاده کنیم. (ص202)

-بر اساس استاندارد کد اسکی، به تمامی کاراکتر ها عددی نسبت داده می شود. PHP دارای توابعی برای کار با کدهای اسکی است. مثلا تابع ord رشته ای را می گیرد و کد اسکی اولین کاراکتر یک رشته را به دست می آورد. یا تابع chr نیز برعکس تابع ord عمل می کند و با دریافت یک کد اسکی، کاراکتر معادل با آن کد اسکی را بر می گرداند. (ص203)

-PHP توابعی را برای ایجاد و تغییر رشته ها ارائه می دهد. به عنوان مثال تابع implode برای ایجاد یک رشته از عناصر یک آرایه به کار می رود. تابع implode دارای دو پارامتر است. پارامتر اول آن آرایه مورد نظر و پارامتر دوم نیز رشته ای را تعیین می کند تا بین هریک از عناصر آرایه قرار گیرد.
همچنین تابع str_shuffle نیز برای درهم سازی یک رشته بکار می رود.
با تابع strrev نیز می توان معکوس یک رشته را ایجاد کرد. (ص 203 و 204)

-در PHP توابعی برای تجزیه رشته های وجود دارد مثل تابع explode. شرح کامل در کتاب (ص204 الی 206)

-تابع دیگری که برای تجزیه رشته ها به کار می رود، تابع str_split می باشد. آرگومنت اول این تابع رشته مورد نظر است. اگر آرگومنت دوم را مشخص نکنید آنگاه هر یک از کاراکترهای رشته، یکی از عناصر آرایه بازگشتی تابع خواهند بود. اگر در آرگومنت دوم عددی را بنویسید، آنگاه آرگومنت اول به قطعاتی به طول آرگومنت دوم تقسیم خواهد شد. در صورتی که این عدد از طول رشته بیشتر باشد آنگاه کل رشته به عنوان اولین عنصر آرایه قرار خواهد گرفت. (ص 206)

-تابع substr هم برای به دست آوردن زیر رشته ای از یک رشته به کار می رود. آرگومنت اول این تابع، رشته مورد نظر، آرگومنت دوم ابتدای زیر رشته و آرگومنت سوم هم طول زیر رشته می باشد. (ص207)

-در PHP توابع متعددی بای حذف کاراکترهای خاص از رشته ها وجود دارد. تابع trim از جمله توابعی است که برای اصلاح رشته ها استفاده می شود و کاراکترهای مشخص را از ابتدا و انتهای رشته حذف می کند. این تابع دو آرگومنت دریافت می کند، آرگومنت اول رشته مورد نظر و آرگومنت دوم هم کاراکترهایی است که باید از رشته حدف شوند. اگر آرگومنت دوم مشخص نشود این تابع کاراکترهای زیر را از ابتدا و انتهای رشته ها حذف می نماید: \n , \t , \r , \0 , \x0B و فاصله. (ص208)
در بیشتر مواقع ما باید از پردازش یک رشته باید کاراکترهای فاصله را ابتدا و انتهای رشته حذف کنیم. برای حذف فاصله ها کافی است که همانند مثال زیر به آرگومنت دوم مقدار " " را بدهیم. (ص208)
درصورتی که تنها بخواهید کاراکترهای مورد نظر را از ابتدای (سمت چپ) رشته حذف کنید باید تابع ltrim را فراخوانی کنید. این تابع هم دو ارگومنت را دریافت می کند. آرگومنت اول رشته مورد نظر و آرگومنت دوم هم کاراکترهایی هستند که باید از ابتدای رشته حذف شوند. اگر آرگومنت دوم مشخص نشود این تابع کاراکترهای زیر را از ابتدای رشته ها حذف می نماید: \n , \t , \r , \0 , \x0B و فاصله. (ص 209)
تابع rtrim هم کاراکترهای تعیین شده را از انتهای (سمت راست) یک رشته حذف می کند. (ص 209 و 210)

-در صورتی که بخواهیم همه کاراکترهای رشته را کوچک و بزرگ کنیم آنگاه باید از توابع strtolower و نیز strtoupper استفاده کنیم. (ص210 و 211)

-تابع ucfirst هم اولین کاراکترهای یک رشته را به حروف بزرگ تبدیل می کند. (ص211)

-تابع ucwords هم اولین کاراکتر تمامی کلمات موجود در رشته را به حروف بزرگ تبدیل می کند. (ص211 و 212)

-PHP توابعی را نیز برای عملیات رمز نگاری ارائه می دهد، این توابع داده ها را از حالت اصلی خود خارج می کنند و برای عملیاتی همانند صحت داده ها، احراز هویت و امنیت داده ها به کار می روند. مثل تابع crc32 و تابع crypt. (ص212 و 213)



فصل هشتم: توابع (ص215 الی 243)             
-به طور عادی یک تابع تعدادی آرگومنت را دریافت کرده و بعد از پردازش این داده ها نتایج به دست آمده را بر می گرداند. (ص216)

-در PHP توابع با دستورالعمل function تعریف می شوند. در اولین خط تعریف یک تابع ابتدا عبارت function و سپس نام و سپس لیست پارامترهای تابع (در داخل پرانتز) قرار می گیرند. لیست پارامترهای تابع با کاما، از هم جدا می شوند و داده های دریافتی تابع می باشند. بدنه تابع هم در میان آکولادها قرار می گیرد. (ص216)

-برای اینکه تابع مقداری را برگرداند باید دستور return را به کار بریم. (ص216)

-از PHP نسخه 4 به بعد این امکان فراهم شد تا قبل از تعریف تابع هم آن را فراخوانی کنیم. برای فراخوانی یک تابع باید نام آن را بنویسیم و سپس پرانتزی باز کرده، آرگومنت های تابع را نوشته و پرانتز را ببندیم. (ص217)

-به طور کلی یک تابع ممکن است مقداری را برنگرداند. در این حالت مسلما در بدنه تابع از دستور return استفاده نخواهد شد. در اغلب موارد این نوع از توابع، نتایج به دست آورده را چاپ می کنند. همچنین از دستور return برای خاتمه اجرای یک تابع هم می توان استفاده کرد. (ص217)

-آرگومنت ها روشی برای ارسال داده های مورد نظر به توابع هستند.
به طور کلی آرگومنت ها را به دو روش می توان به توابع ارسال نمود: فراخوانی با مقدار و فراخوانی با ارجاع. (ص218)

-در PHP به طور پیش فرض آرگومنت ها به صورت فراخوانی با مقدار به تابع ارسال می شوند. در این روش، مقدار آرگومنت تابع در داخل پارامتر متناظر کپی می شود و بدین ترتیب تابع می تواند از مقدار مورد نظر استفاده کند با این حال تغییرات انجام شده در پارامترهای تابع، تغییری در آرگومنت های تابع ایجاد نخواهد نمود. (ص218). مثال در صفحه 219.

-در فراخوانی با ارجاع به جای اینکه مقدار آرگومنت ها به تابع ارسال شود آدرس آرگومنت تابع به تابع فرستاده می شود و در داخل پارامتر تابع، آدرس آرگومنت قرار می گیرد. بدین ترتیب در داخل و خارج تابع به یک متغیر رجوع می گردد. لذا اگر تابع هر گونه تغییری در پارامترهای خود بدهد. این تغییر در آرگومنت های تابع هم اعمال می شود. برای اینکه فراخوانی با ارجاع انجام شود باید به هنگام تعریف تابع، در لیست پارامترهای تابع قبل از نام پارامتر یک کاراکتر & را قرار بدهیم. (ص219)

-در PHP نیز همانند سایر زبان های برنامه سازی، توابع می توانند آرگومنت هایی از نوع آرایه را دریافت نمایند. ارسال آرایه ها به توابع مشابه سایر متغیرهاست ولی نحوه استفاده از مقادیر آرایه در داخل تابع با متغیر های معمولی متفاوت است. مثال در ص 221. (ص221)

-در PHP هر یک از پارامترهای تابع می توانند یک مقدار اولیه را دریافت نمایند. بدین ترتیب آرگومنت های متناظر با پارامترهایی که مقداردهی اولیه شده اند اختیاری می شوند و در فراخوانی تابع می توانیم این آرگومنت ها را ذکر نکنیم. (ص222). همچنین در تعریف تابع ابتدا باید پارامترهای بدون مقدار اولیه و سپس پارامترهای دارای مقدار اولیه را ذکر کنیم. در صورتی که این قانون را رعایت نکنیم و در ابتدا پارامترهای دارای مقدار اولیه را ذکر کنیم آنگاه PHP یک پیام خطا نشان خواهد داد. لذا باید پارامتری که مقدار دهی اولیه شده است را در سمت راست پارامترهای بدون مقدار اولیه بنویسیم. (ص223) مثال در ص 222 و 223

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

-محدوده یک متغیر، قسمتی از برنامه است که متغیر در آن قابل دسترس می باشد. متغیرهایی که در داخل یک تابع تعریف می شوند متغیر محلی هستند و فقط در داخل آن تابع دسترس هستند. یک متغیر ممکن است در تابع تعریف شده باشد و علاوه بر آن، محدوده خارج از تابع نیز داشته باشد در اینصورت برای دسترسی به همین متغیر در خارج از تابع باید از دستور global استفاده کنیم. دستور global به PHP می گوید که متغیر جدیدی را به صورت محلی ایجاد نکند و از متغیری سراسری متناظر استفاده کند. مثلا دستور global $posotion; موجود در داخل تابع به PHP می گوید که متغیر محلی $position را ایجاد نکرده و از متغیری سراسری $position استفاده کند. البته برای رجوع به متغیر سراسری از آرایه $GLOBALS هم می توان استفاده نمود. مثلا زیر دستور $GLOBALS[“position”]=”b”; به متغیر سراسری $positions رجوع می کند و همانگونه که می بینید از کاراکتر $ استفاده نشده است. (ص225 و 226)

-اگر متغیر محلی از توع استاتیک تعریف کنیم آنگاه این متغیر بعد از اتمام اجرای تابع از بین نمی رود و متغیر مقدار خود را در بین فراخوانی های تابع حفظ می نماید. برای تعریف یک متغیر از نوع استاتیک باید از کلمه کلیدی static استفاده کنیم. (ص226)

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

-M_PI از ثابت های داخلی PHP هست و نیازی نیست که آن را تعریف کنید. (ص228)

-زمانی که یک تابع خودش را فراخوانی کند تابع به تابع بازگشتی تبدیل می شود. (ص228) در تابع بازگشتی باید مشخص کنیم که تابع، عمل فراخوانی خود را در یک مرحله پایان دهد. این عمل اغلب با یک دستور if انجام می شود. اگر شرطی برای پایان عمل فراخوانی مطرح نشود عمل فراخوانی تا بی نهایت انجام خواهد شد و هیچ نتیجه ای حاصل نخواهد شد. در PHP سعی کنید تا عمل فراخوانی بیشتر از 100 تا 200 بار انجام نشود زیرا باعث سرریز پشته و اتمام غیرعادی اسکریپت می شود. (ص229)

-یکی از قابلیت های پیشرفته ای که PHP برای برنامه نویسان فراهم می آورد امکان فراخوانی توابع به صورت پویا می باشد. بدین ترتیب ما در زمان اجرای برنامه بر اساس شرایط خاصی می توانیم تابع مورد نظر خود را فراخوانی کنیم. در این روش به متغیرها نام توابع را انتساب می دهیم و برای فراخوانی تابع بعد از نام متغیر پرانتز باز و بسته می نویسیم. آرگومنت های تابع را هم باید در بین پرانتزها قرار دهیم. (ص229 و 230)

-بعضی اوقات ما می خواهیم چندین مقدار را از یک تابع برگردانیم. برای انجام این کار باید مقدارهای بازگشتی را در یک آرایه قرار دهیم و آرایه را با دستور return برگردانیم. (ص230)

-در PHP می توان به طور پویا توابع مورد نظر خود را ایجاد نمود. این توابع بی نام هستند و در متغیری ذخیره می شوند. توابع بی نام را می توان به سایر توابع عادی نیز ارسال کرد. PHP برای ایجاد این نوع توابع تابع create_function() را ارائه می دهد. این تابع دو آرگومنت را دریافت می کند، آرگومنت اول آن لیست آرگومنت های تابع بی نام و آرگومنت دوم هم بدنه تابع بی نام می باشد. (ص231)

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

-برای اینکه در اسکریپت جاری بتوانیم از داده ها، کد ها و توابع موجود در صفحات PHP دیگر استفاده کنیم باید دستور include یا require را بکار ببریم. البته توجه داشته باشید که با اجرای یک دستور include یا require کلیه محتویات صفحه مورد نظر اجرا می شود و در اسکریپت جاری نشان داده می شود. (ص231) طرز بکارگیری فایل html در تابع با دستور include در صفحه 231 و 232 آموزش داده شده است که حائز توجه است. (ص232)

-با اینکه دستورهای include یا require را در هر قسمت از اسکریپت می توان به کار برد، با اینحال بهتر است که آنها را در ابتدای اسکریپت بنویسیم تا ووضح برنامه ها بیشتر شود و درک بهتری از عملکرد برنامه ها را داشته باشیم. یکی از مزایای include کردن توابع این است که اگر بخواهید تابعی را تغییر دهید فقط اسکریپت نگهدارنده تابع کافی خواهد بود و اسکریپت های دیگر فراخوانی کننده تابع اصلا هیچ تغییری نخواهند کرد. (ص232)

-طرز استفاده و بکارگیری از توابع یک صفحه php در یک صفحه دیگر (ص233)

-تفاوتی که دستور include و require دارند در نحوه برخورد آنها با خطای پیدا نشدن صفحه وب مورد نظر می باشد. در صورتی که دستور include فایل مشخص شده را پیدا نکند یک پیام اخطار صادر می کند ولی اجرای اسکریپت ادامه می یابد. عملکرد دستور require بدین شکل است که اگر این دستور فایل مورد نظر را پیدا نکند یک پیغام خطای جدی صادر کرده و سپس از اجرای اسکریپت جلوگیری می کند. (ص233)

-بعضی اوقات ما می خواهیم که یک فایل خاصی تنها یکبار include شود. برای جلوگیری از این مورد باید توابع include_once و require_once را بکار برد. زمانی که یک فایلی با این توابع بکار رود این دستورها بررسی می کنند که آیا فایل مورد نظر قبلا imclude شده است یا نه؟ در صورتی که یکبار این عمل انجام شده باشد دیگر برای بار دوم این عمل انجام نمی شود.

-برای include کردن اسکریپت ها، بهتر است که یک دایرکتوری را برای این اسکریپت ها تعیین کرده و سپس اسکریپت های include شده را در آن قرار دهید. به همین منظور در فایل پیکربندی php.ini شبه دستور include_path را یافته و سمی کولن را از ابتدای آن حذف کنید. سپس برای آن مقدار مسیر دایرکتوری مورد نظر را قرار بدهید. مثال از نحوه بکار بستن این کد در سیستم ویندوز و لینوکس در ص 234 و 235. در صورتی که شما به فایل php.ini دسترسی نداشته باشید آنگاه با دستور زیر می توانید شبه دستور مورد نظر را در این فایل بنویسید.
Ini_set(“include_path”, “d:\hidden”);
همچنین در صورتی که اسکریپت ما در مکان دیگری بجز دایرکتوری اسکریپت های فایل include شده باشد آنگاه باید شما مسیر کامل اسکریپت را بنویسید، به همراه مثال در ص 235 (ص234 و 235)

-برای تعیین تعداد آرگومنت های یک تابع تعریف شده توسط کاربر باید دستور func_num_args را به کار برد. (ص235). همچنین در PHP نسخه های 4 و 5 اگر بخواهیم آرگومنت های تابع را بدست آوریم باید از دستور func_get_arg استفاده کنیم. (ص235). دستور func_get_args هم برای دریافت آرایه ای از آرگومنت های یک تابع به کار می رود، مثال در ص 236. (ص235 و 236)

-در صورتی که بخواهید وجود تابعی را بررسی کنید می توانید تابع function_exits را به کار برید. این تابع نام تابع مورد جستجو را به عنوان آرگومنت دریافت کرده و در صورتی تابع مورد نظر ما وجود داشته باشد مقدار TRUE را بر می گرداند. (ص236)

-تابع get_defined_functions نیز یکی از توابع ارائه شده توسط PHP است و آرایه ای چند بعدی از توابع موجود را برمی داند. آرایه بازگشتی شامل توابع داخلی (internal) و نیز توابع تعریف شده توسط کاربر (user) می باشد. (ص236 و 237)

-در اسکریپت های PHP می توانیم لیست متغیرهای تعریف شده را بدست آوریم. به همین منظور باید تابع get_defined_vars() را فراخوانی کنیم، مقدار بازگشتی این تابع آرایه ای چندبعدی شامل متغیرهای تعریف شده توسط برنامه نویس و نیز آرایه های فوق سراسری همانند $_GET و $_POST و ... می باشد. (ص238 و 239)

-با تابع get_defined_constants() می توانید لیست ثابت های قابل دسترسی در اسکریپت های PHP را بدست آورید. مقدار بازگشتی این تابع یک آرایه ای انجمنی می باشد. (ص239 و 240). البته این تابع ثابت های تعریف شده توسط برنامه نویس و با دستور define() را نیز بر می گرداند. (ص240 و 241)

-مثال هایی از تمارین برنامه نویسی (ص242 و 243)



فصل نهم: فایل ها و دایرکتوری ها (ص245 الی 296)     





موافقین ۲ مخالفین ۰ ۹۳/۱۰/۱۰
سید ابوالفضل هاشمی

PHP

برنامه نویسی

ناقص

نظرات  (۱)

سلام میشه تنظیمات کلی  پی اچ پی را هم بر روی ویندوز سون و یا ایت هم اجرا کرد اگه میشه راهنمایی کنید

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی