مقدمات برنامهنویسی PHP
زبان PHP یک زبان سمت کارگزار (Server) میباشد و برای توسعه برنامههای تحت وب ایجاد شدهاست; یعنی کدهای آن در کارگزار اجرا میشوند و این مساله بر خلاف کدهای زبان جاوا اسکریپت است که در سمت کارخواه (Client) اجرا میشوند. البته از PHP به عنوان زبان همه منظوره نیز میتوان استفاده کرد. PHP مخفف کلمات PHP: Hypertext Preprocessor است. (البته قبلا مخفف Personal Home Page بودهاست.)
همانطور که گفته شد زبان PHP برای اجرا به یک سرور نیاز دارد. کارگزار, کدهای PHP را اجرا کرده و خروجی حاصل را به صورت یک صفحه وب نمایش میدهد. در حالی که برای نمایش و اجرای کدهای HTML تنها یک مرورگر کافی بود و نیازی به وجود کارگزار نبود و شما به راحتی آن را بر روی کامپیوتر خود اجرا میکردید.
معماری کارخواه-کارگزار
به طور مفهومی وب سرور را میتوان نرمافزاری دانست که در آن یک برنامه به پورت ۸۰ (۴۴۳ برای https) گوش میدهد تا در صورتی که درخواستی را دریافت کرد به آن پاسخ دهد. وب سرور Apache یکی از این نرمافزارها میباشد. با نصب نرمافزار WAMP Server علاوه بر نصب وبسرور Apache موارد شکل زیر نیز نصب خواهند شد.
از طریق لینک زیر میتوانید این نرمافزار را دانلود کنید.
نصب این نرمافزار به سادگی کلیک کردن بر روی تعدادی! دکمه Next است. بعد از نصب, پوشهای با نام www در مسیر نصب ایجاد میشود. فایلهای مربوط به وبسایت خودتان را باید در این پوشه قرار دهید. برای مشاهده وبسایت آدرسی شبیه آدرس زیر را باید در مرورگر خود وارد کنید.
localhost/YOUR FILE
دستورات کد PHP
فایلهای حاوی کد PHP با پسوند .php ذخیره میشوند. کدهای PHP در چنین بلاکی قرار میگیرد:
<?php ?>
یک فایل php میتواند شامل تگهای html نیز باشد اما توجه داشته باشید که در هر صورت فایلهای حاوی کد php به تنهایی و یا ترکیبی از php و html باید با پسوند .php ذخیره شوند.
هر دستور در php با یک ; به پایان میرسد.
همانند زبانهای برنامهنویسی چون C, C++ و جاوا, خطوط با $$ و یا $/* */$ غیر فعال شده و برای comment گذاری از این روشها استفاده میشود. برای نمایش یک عبارت در خروجی از دستورهای echo و print استفاده میشود. کارکرد این دستورها را در ادامه خواهید دید. در زبان php برای تعریف متغیر از علامت $ استفاده میشود مثلا: \$name ="myname"; \$num = 1; همانطور که میبینید در این زبان برای متغیرها نوع خاصی تعیین نمیکنیم. بلکه نوع آن با توجه به محتوایی که در آن تغلق میگیرد تعیین میشود حتی شما میتوانید متغیری را که با عنوان $name تعریف کردید و در آن یک string قرار دادهاید در بخش دیگری از برنامه برابر با یک عدد قرار دهید: $name=2; عملگرهای ریاضی و منطقی همانند زبانهایی چون C و java در اینجا نیز کاربرد دارند و به همان صورت عمل میکنند. منبع مثالها: http://www.w3schools.com ==== مثال از عملگرها ==== <?php $x=10; $y=6; echo ($x + $y); outputs 16
echo ($x - $y); // outputs 4 echo ($x * $y); // outputs 60 echo ($x / $y); // outputs 1.6666666666667 echo ($x % $y); // outputs 4 ?>
همچنین در آن میتوان بلاکهای شرطی مانند if, if else, if elseif, switch case داشت. همچنین قابلیت تعریف function در آن وجود دارد.
ساختار عبارت شرطی
if (condition) { code to be executed if condition is true; } else { code to be executed if condition is false; }
<?php $t=date("H"); if ($t<"20") { echo "Have a good day!"; } else { echo "Have a good night!"; } ?>
ساختار حلقهها
for (init counter; test counter; increment counter) { code to be executed; }
<?php for ($x=0; $x<=10; $x++) { echo "The number is: $x <br>"; } ?>
ساختار توابع
function functionName() { code to be executed; }
<?php function writeMsg() { echo "Hello world!"; } writeMsg(); // call the function ?>
ساختار توابع(با آرگومانهای ورودی)
<?php function familyName($fname,$year) { echo "$fname Refsnes. Born in $year <br>"; } familyName("Hege","1975"); familyName("Ståle","1978"); familyName("Kai Jim","1983"); ?>
مثالی از آرایهها
<?php $cars=array("Volvo","BMW","Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; ?>
نمایش محتوای آرایه
<?php $cars=array("Volvo","BMW","Toyota"); $arrlength=count($cars); for($x=0;$x<$arrlength;$x++) { echo $cars[$x]; echo "<br>"; } ?>
نمایش محتوای آرایه با دستور foreach
<?php $colors = array("red","green","blue","yellow"); foreach ($colors as $value) { echo "$value" . "<br>"; } ?>
*برای الحاق دو رشته در زبان PHP از کاراکتر نقطه $(.)$ استفاده میشود.
<?php $firstname = "MyFirstName"; $lastname = "MyLastName"; Echo $firstname . " " . $lastname; ?>
تعریف آرایه انجمنی
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); echo "Peter is " . $age['Peter'] . " years old."; ?>
ذخیره اطلاعات در فایل
<?php $file = fopen("test.txt","w"); echo fwrite($file,"Hello World. Testing!"); fclose($file); ?>
یکی از کارکردهای PHP ایجاد صفحات تعاملی در وب است. هنگامی که شما یک فرم را در یک صفحه وب پر میکنید لازم است از طریق زبان PHP اطلاعات درج شده در فرم دریافت شده و پردازشهای مورد نیاز بر روی آنها انجام گیرد.
فرمها در html با تگ <form></form> ساخته میشوند. اجزای یک فرم میتواند, drop down menu, check box, radio button, text field باشد. همچنین یک فرم به یک کلید submit نیاز دارد تا پس از تکمیل شدن, اطلاعات آن به مقصد مورد نظر ارسال شود.
پس از این که شکل ظاهری فرم را آماده کردید لازم است آن را به فایل php مورد نظرتان اتصال دهید. فرض کنید فایلی با نام home.php ساختهایم که در آن محتوای این فر م را دریافت کرده و بر روی آن عملیاتی انجام دهیم. برای این که با زدن کلید تعیین شده در فرم, اطلاعات به این فایل ارسال شود لازم است در تگ ابتدایی form یک سری Attribute ها و مشخصهها را اضافه کنیم. به این صورت که نمونه فر م زیر را در نظر بگیرید:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > <title>Sample Form</title> </head> <body dir="rtl" bgcolor="#B5A5D5"> <form> <table> <tr> <td> <font face="b nazanin , tahoma" style="font-weight: bold; " size="4" > نام</font> </td> <td> <input type="text" value="" name="fname"/></td> </tr> <tr> <td> <font face="b nazanin , tahoma" style="font-weight: bold; " > نام خانوادگی</font> </td> <td> <input type="text" value="" name="lname"/> </td> </tr> <tr> <td> <font face="b nazanin , tahoma" style="font-weight: bold; " > پست الکترونیک </font></td> <td> <input type="text" value="" name="email"/></td> </tr> </table> <br> <br><br><br> <table><tr><td><font face="b nazanin , tahoma" style="font-weight: bold; " > </font></td><td> <textarea name="description" rows="10" cols="40"></textarea> تَضیحات </td> </tr></table> <br><br><br><br> <input type="submit" value="ثبت مشخصات"/> </form> </body> </html>
برای هم تراز شدن مولفههای فرم از جدولی بدون border استفاده کردیم و همچنین از آنجایی که فرم فارسی بود در بدنه body مشخصه $dir="rtl"$ را اضافه کردیم, در حال حاضر در صورتی که کلید ثبت مشخصات را بزنید هیچ اتفاقی نخواهد افتاد. همانطور که گفته شد, باید مواردی را به تگ آغازین form اضافه کنیم تا بتوانیم اطلاعات موجود در فرم را با زدن کلید ثبت مشخصات به سرور ارسال کنیم.
این تگ آغازین باید به صورت مقابل تغییر کند:
<form method="?" action="?">
در قسمت action آدرس فایلی که میخواهیم اطلاعات را به آن ارسال کنیم قرار میگیرد. در صورتی که فایل php مان در همین محلی قرار داشته باشد که فایل html مان $)$ که فرم را درون آن تعریف کردهایم $($ قرار دارد, در این محل تنها کافی است نام فایل مورد نظر قرار گیرد.
در قسمت method نوع ارسال داده را مشخص می کنیم. دو انتخاب داریم یکی متود post و دیگری متود get
تفاوتهای این دو متد به صورت خلاصه: در صورتی که از متد get استفاده کنیم, اطلاعات نمایان خواهد بود, یعنی هنگامی که فیدهای فرم پر میشود و کلید submit را انتخاب می کنیم, اطلاعات درج شده در نوار آدرس browser نمایش داده میشوند $)$ حتما این مورد را به دقت مشاهده کنید $(.$ برای مواردی که اطلاعاتی مخفی, مانند password را از کاربر دریافت میکنیم مناسب نیست ! میتوانید امتحان کنید ! Type یکی از textfield های موجود را از text به password تغییر دهید, تا زمانی که اطلاعات را درون آن فیلد مینویسید نمایش داده نشود, در فرم از متود get استفاده کنید و پس از زدن کلید submit به نوار آدرس نگاه کنید !
در ضمن زمانی که از متود get استفاده میکنیم میتوان اطلاعات را به صورت مستقیم از طریق نوار آدرس وارد کرد. این روش را نیز با هم امتحان کنید.
با استفاده از متود post دیگر اطلاعات در نوار آدرس نمایش داده نخواهد شد. در این جا برای نمونه از متود post استفاده میکنیم. $)$ فایل php مورد نظر را نیز که با نام home.php بود, در کنار همین فایل قرار میدهیم $($ بنابر این در نهایت تگ آغازین فرم ما باید به صورت زیر تغییر کند:
<form method="post" action="home.php">
اکنون, هنگامی که کلید submit( در این جا با نام ثبت مشخصات $($ را بزنید, اطلاعات موجود در فرم به فایل home.php ارسال شده و این فایل اجرا میشود. حالا تغییراتی در فایل home.php اعمال میکنیم تا از اطلاعات ارسال شده, استفاده کنیم.
در داخل فایل php از طریق آرایههای سراسری $\$\_POST$ و $\$\_GET$ میتوان به اطلاعات دریافتی, دسترسی داشت. همانطور که از نامها پیداست, زمانی که اطلاعات فرم را با متود post ارسال کردهباشیم برای دریافت از $\$\_POST$ و زمانی که از get استفاده کرده باشیم برای دریافت از $\$\_GET$ استفاده خواهیم کرد.
در فرم برای هر بخشی از اطلاعات یک نام واحد مشخص کردیم, مثلا در فرم نمونهای که در بالا آمده است برای نام از اسم frame برای نام خانوادگی از lname و برای پست الکترونیک از نام email استفاده کردیم.
در فایل php از این نامها برای جداسازی اطلاعات دریافتی, استفاده میکنیم. در واقع اطلاعات دریافتی به صورت یک آرایه است که با هر کدام از این اسامی به بخش مورد نظر, دسترسی خواهیم داشت. مثلا برای گرفتن دادهای که کاربر در بخش نام وارد کرده از:
$_POST["fname"];
استفاده میکنیم.
به عنوان یک نمونه بسیار ساده فرض کنید میخواهیم اطلاعات دریافتی را مجددا در صفحه نمایش دهیم. میتوانیم متغیرهایی در فایل php تعریف کرده و مقادیر دریافتی را در آنها ذخیر کنیمو سپس با استفاده از echo آنها را نمایش دهیم:
<?php $lastname = $_POST["lname"]; $name = $_POST["fname"]; echo "welcome "; echo ($name) ; echo " "; echo ($lastname); ?>
در صورتی که این فایلها را در سرور قرار دهید, خواهید دید که اطلاعات دریافتی را به گونهای که تعیین کردهاید نمایش میدهد.
میتوانید در فایل php خود, تگهای html هم داشته باشید, برای زمینه صفحه رنگ و یا تصویر تعیین کنید, اطلاعات دریافتی را در یک جدول درج کنید و …
مثلا:
<html> <title>Welcome!</title> <body bgcolor ="yellow"> <?php $lastname = $_POST["lname"]; $name = $_POST["fname"]; echo "welcome "; echo ($name) ; echo " "; echo ($lastname); ?> </body> </html>
این نمونه بسیار سادهای از کار با php صرفا برای یک آشنایی مختصر بود.