آموزش php مقدماتی

homayon574

کاربر عضو
سلام دوستان توی این تایپک اموزش مقدماتی پی اچ پی رو خلاصه شده و سریع میگم یه مدت داشتم روی یه کتابچه کوچیکی مار میکردم برای همین موضوع ولی بنا به دلایلی پشیمون شدم و بسته نگهش داشتم این اموزش مسائل اولیه مربوط به پی اچ پی رو باز من منم یه مبتدی هستم مثل خیلی های دیگه دوستان دیگه اگر اشتباهی توی کار من دیدن تذکر بدن تا اطلاعات اشتباه به کسی هم ندم و همینطور دوستانی که اشنایی دارن یه قسمتایی از اموزشو به عهده بگیرن تا تموم بشه آموزش مقدماتی با تشکر و لایک کردن میتونید باعث بشید که این تایپک ناقص نمونه ممنون از همه دوستان پیشاپیش ، و محمد عزیز بخاطر سایت خوبش :53:

 

homayon574

کاربر عضو
امروز به عنوان اولین جلسه آموزش قصد داریم کوتاه و مختصر به معرفی php بپردازیم ، php یک زبان سورس باز و دانلود رایگان است که به ما امکان ساخت صفحات پویا و دینامیک وب را میدهد . php در ضمره زبان های برنامه نویسی سمت سرور یا سرویس دهنده مانند ASP و CGI محسوب میشود و همچنین یکی از مزایای php پشتیبانی کردن آن از بسیاری از بانک های اطلاعاتی مطرح همانند MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL به همراه شباهت زیاد آن با زبان های پر شهرتی همچون C و جاواسکریپ است .

برای نوشتن یک برنامه به زبان PHP در اصل نیاز به محیط برنامه نویسی خاصی نیست برای نوشتن کدهای PHP یک ادیتور ساده مانند notepad هم کافیست ولی برای برنامه نویسی به زبان PHP نرم افزارهای ویرایشگر اختصاصی به تعدد ساخته شده اند ولی برای شروع به شما پیشنهاد میکنم نرم افزار notepad++ رو دانلود کرده و تا برای جلسات بعدی آماده برای نوشتن کد ها باشید . نکته ای که باید در ذهن داشته باشید این است که میتوان برنامه های نوشته شده به زبان PHP را در سه فرمت.php , .php3 , .phtml ذخیره کرد.

همانطور که گفته شد برای نوشتن یک برنامه به زبان PHP میتوان به سادگی از ادیتور های متنوع استفاده کرد ولی برای اجرای کدهای PHP نیاز به یک سرور است که قابلیت تفسیر زبان برنامه نویسی PHP را دارا باشد بر همین حسب برای اجرای کد های PHP بر روی کامپیوتر شخصی باید با استفاده از نرم افزارهای وب سرور مجازی محیطی را برای فراهم کردن اجرای کد های PHP ایجاد کنیم از این گونه نرم افزار ها میتوان به نرم افزارهایی همچون wamp , xampp , Easy PHP و ... نام برد برای شروع جلسات بعدی حتما یکی از این نرم افزار ها را برای ایجاد شبیه سازی یک سرور روی کامپیوتر دانلود و نصب نمایید .

  • لینک download نرم افزار های مورد نیاز :


  1. یک مرورگر اینترنتی (اینترنت ایکسپلورر روی کامپیوتر شما کافیست)

  2. (وب سرور مجازی xampp)
  3. (نرم افزار ویرایش گر notepad++)

 

homayon574

کاربر عضو
از این جلسه به بعد ما با کد های PHP بیشتر سروکار داریم برای همین حتما باید یک ادیتور و یک وب سرور مجازی توی کامپیوترتون نصب کرده باشید (در جلسه قبل چندین نرم افزار مشهور در این زمینه نام برده شد) ، قبل از اینکه اولین کد خودمون رو در PHP بنویسیم باید بدانیم برای اجرایی بودن کد های PHP خودمون میبایست فایل های برنامه ای که نوشتیم را حتما باید با یکی از پسوندهای .php , .php3 , .phtml ذخیره نماییم در غیر اینصورت کدهای نوشته شده در وب سرور اجرا نخواهند شد.

برای شروع نرم افزار ادیتور(به طور پیشفرض ما نرم افزار شما را notepad++ در نظر میگیریم) رو باز کنید . از منو های بالای صفحه منو language را انتخاب و از زیر منو P زبان PHP را انتخاب کنید . حال ادیتور برای نوشتن کد های php آماده است . برای شروع باید بدانیم کدهای پی اچ پی میبایست در تگ های آغازین و پایانی پی اچ پی نوشته شوند مرسوم ترین نوع برای آغاز یک تگ PHP استفاده از <?php و یا <? هست و برای پایان هم از تگ ?> استفاده نمود.

خب حالا اولین کدمان را با کمک هم مینویسیم :


کد:
<html>
<body>
<?php
echo "Hello World !";
?>
</body>
</html>
موضوع قابل توجهی که است تگ بندی به شکل <? //... ?> از نسخه چهارم php به بعد به آن اضافه شده و در نسخه های پایین تر عمل نخواهد کرد. البته در کد بالا ما یک نکته در مورد کاربرد کدهای php و html را نیز به شما نشان دادیم

حالا این کد رو توی ادیتور بنویسید و سپس از منو های بالایی منو File گذینه Save را انتخاب کنید و فایل تون رو با نام index و فرمت .php روی صفحه دکستاپ ذخیره کنید سپس فایل ساخته شده را کپی کرده و به پوشه نرم افزار وب سرور مجازی رفته و فایل را در پوشه www یا htdocs با توجه به نوع وب سرور جایگزین کنید (اگر در این پوشه از قبل فایلی وجود دارد همگی را حذف کنید) .

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







You must be registered for see images attach


خب نتیجه را دیدید؟ بله ما اولین کد PHP خودمون رو به سادگی نوشتیم ما با استفاده از این کد و خط فرمان echo این دستور رو نوشتیم که در مرورگر نوشته Hello World ! چاپ شود و در آخر با نماد سیمیکلن " ; " پایان فرمان را صادر کردیم و تگ پی اچ پی را بستیم . خب ما در این جلسه فهمیدیم که چگونه یک فایل پی اچ پی را بسازیم و یک برنامه پی اچ پی بنویسید .

  • اما یک نکته : برای اینکه مابین کدهایی که مینویسیم برای خروجی از کاراکترهای فارسی استفاده کنیم باید نوع Encoding فایل برنامه را در utf-8 یا utf-8 Withoud BOM تنظیم شود برای این کار کافیست به منو Encoding در بالای نرم افزار notepad++ مراجعه کنید البته باید نوع اینکدینگ صفحه را نیز با کدهای متاتگ ها html به utf-8 تبدیل کرد که مربوط به این مبحث نیست

در مورد کارکرد echo در کد بالا به طور اجمالی یک تعریف ساده در اینجا میگویم و بعد از مبحث توابع به طور کلی توضیح خواهم داد echo وظیفه ارسال نمایش خروجی و یا به روایتی چاپ اطلاعات در مرورگر را دارد زیرا php یک زبان سمت سرور هست و کد های نوشته شده برنامه هرگز توسط کاربر دیده نخواهند شد و تمامی قسمت های داخلی برنامه نیز غیر قابل نمایش هستند ولی با تابع echo میتوان مقدار مورد نظر به مرورگر کاربر برای نمایش ارسال کرد. توابع دیگری که کار متشابه echo انجام میدهند وجود دارد مانند print() و ...

  • نکته ای در مورد بستن تگ ها در php: اگر در فایل برنامه شما بعد از کدها هیچ محتویاتی وجود نداشت بهتر است که از تگ پایانی php استفاده نکنید یعنی در فایل هایی که تمام محتویات آن کدهای php است نیاز به گذاشتن تگ پایان php نیست و در صورت گذاشتن آن بعد از تگ همه چیز html تفسیر میشود حتی فضاهای خالی.

 

homayon574

کاربر عضو
متغیر ها در php وظیفه نگه داری مقداری خاص مانند مقدار عددی یا یک رشته را برای انجام عملیات خاص در خود نگه دارند یا بعد از انجام عملیاتی به شکل تغییر یافته ادامه داده شوند ، به طور کل زمانی که ما یک متغیر را ایجاد میکنیم یک قسمت از حافظه RAM سیستم را برای آن رزرو میکنیم تا برای انجام کار از آن در اینده استفاده کنیم ،در زبان های برنامه نویسی همچون pascal یا C میبایست هنگام تعریف یک متغیر نوع آن را هم مشخص نمود ولی در php نیاز به انجام چنین کاری نیست و خود مفسر php نوع آن را تشخصی میدهد ، متغیر های در php با نماد $ آغاز میشوند هر کجا علامت دلار نوشته شود به معنای وجود یک متغیر است. به طور کلی در php برای تعریف یک متغیر باید از روند زیر تبعیت کرد :


کد:
<?php
$var_name = 'value';
?>
در فرمول بالا برای ایجاد یک متغیر در php اول یک $ قرار داده سپس به جای var_name نام متغیر و به جای value مقدار داخلی متغیر را وارد میکنیم و در آخر با علامت سیمیکلن ( ; ) کد را به پایان میرسانیم ، حال یک مثال :


کد:
<?php
$test_var = "this is a test !";
echo $test_var;
?>
در کد بالا ما یک متغییر را ایجاد و سپس با تابع echo آن را در مرورگر چاپ کردیم این کد را شما نیز امتحان کنید...

اما نکاتی در این بین است که به شما متذکر میشوم

  • در متغیر های پی اچ پی میتوان از حروف انگلیسی،اعداد و علامت _ تنها استفاده کرد (a-z, A-Z, 0-9, and _ ) اما با این حال شما با این حال باید بدانید استفاده از اعداد به عنوان اولین قسمت نام یک متغیر یا استفاده از فاصله در نام متغیر یا نوشتن مقدار رشته ای بدون کوتیشن یا دبل کوتیشن غیر مجاز است به طور مثال با ساخت متغییر های زیر و اجرای آنها مشاهده خواهید کرد که در صفحه به جای اجرای برنامه یک خطا توسط مفسر php نمایش داده خواهد شد. مثال :



کد:
$_te st = "this is a test!";
$test = this is a test;
$1test = "this is a test!";
مثال های بالا از انواع متغیر های غیر معتبر محسوب میشود...

  • نکته بعدی این است که متغیر ها در php به بزرگ یا کوچک بودن حروف حساس هستن یعنی متغیر $test با متغیر $tESt تفاوت دارد و زمان فراخوانی یک متغیر باید دقیقا نام متغیر یکسان با متغیر اولیه باشد در غیر این صورت نتیجه ای به ما داده نخواهد شد !



کد:
<?php
$test_var = "this is a test !";
echo $TEST_VAR;
?>

  • نکته دیگر این است که کدهای php از اولین خط تا خط پایانی یعنی از بالا به پایین تفسیر میشوند برای همین نمیتوان اول فرمان چاپ یا استفاده از یک متغیر را نوشت سپس آن را مقدار دهی کرد یعنی درج کدی مانند کد زیر اشتباه است:



کد:
<?php 
echo $test_var;
$test_var = "this is a test !";
?>


  • البته نکته مهم دیگر با توجه به نکته بالا این است که اگر دو متغیر با نام یکسان تعریف کنیم متغیری که در خط پایین تر قرار دارد مقدارش در مقدار اصلی قرار گرفته و به نوعی مقدار آخرین متغیر همنام به عنوان مقدار داخلی متغیر قرار میگیرد این مورد در عملگرهای انتسابی که در آینده توضیح خواهیم داد بسیار مهم است . نمونه :



کد:
<?php
$test_var = "this is a test1 ! <br>";
echo $test_var;
$test_var = "this is a test2 ! <br>";
echo $test_var;
?>
در صورت استفاده از کد بالا میبینیم تو متغیر همنام از بالا به پایین با توجه به مقدار جدید تغییر میکنند این تمرین را در مبحث عملگرهای انتسابی با تکیه بر اموزش ها تست کنید (کافیست جای عملگر هایی که یاد میگیرید را تغییر دهید)

  • و آخرین نکته این است که در php یک متغیر میتواند از یک متغیر دیگر با توجه به عملیات های انجام شده تشکیل شود در این مورد نیز در بخش عملگرهای ریاضی نمونه هایی خواهیم دید. مثال :



کد:
<?php
$a = 1;
$b = 2;
$c = $a + $b;
echo $c;
?>
 

homayon574

کاربر عضو
در php همانند تمامی زبان های برنامه نویسی این قابلیت وجود دارد که با استفاده عملگرها از جمله عملگرهای ریاضی بتوان معادلات و عملیات ها متفاوتی از جمله عملیات های ریاضی و منطقی را به خوبی انجام داد php انواع متعددی از عملگرها را پشتیبانی میکند که در این قسمت در قالب چندین جدول این عملگرها را برای شما معرفی خواهیم کرد و مثالی اسان برای شما میزنیم از عملگرها میتوان در شرط ها متغیر ها توابع و بسیاری جاهای دیگر استفاده کرد.

  • عملگرهای ریاضی :

عملگر

مفهموم

مثال

نتیجه

+

جمع

$a = 2;

Echo $a + 2;

4

-

تفریق

$a = 2;

Echo $a – 1;

1

*

ضرب

$a = 2;

Echo $a * 3;

6

/

تقسیم

$a = 2;

Echo $a / 2;

1

++

مقدار به علاوه یک

$a = 2;

$a++;

Echo $a;

3

--

مقدار به علاوه دو

$a = 2;

$a--;

Echo $a;

1


  • عملگرهای انتصابی :

عملگر

مثال

برابر است با

=

$a = $b

$a = $b

+=

$a += $b

$a = $a + $b

-=

$a -= $b

$a = $a - $b

*=

$a *= $b

$a = $a * $b

/=

$a /= $b

$a = $a / $b

.=

$a .= $b

$a = $a.$b

%=

$a %= $b

$a = $a % $b


  • عملگرهای مقایسه :

عملگر

مفهموم

آموزش و نتیجه

==

مساوی است با

5 == 2 returns false

!=

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

5 =! 2 returns true

<>

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

5 <> 2 returns true

>

بزرگتر از

5 < 2 returns false

<

کوچکتر از

5 > 2 returns true

>=

بزرگتر یا مساوی از

5 =< 2 returns false

<=

کوچکتر یا مساوی از

5 => 2 returns true


  • عملگر های منطقی :

عملگر

مفهموم

آموزش و نتیجه

&&

و

$a=6;

$b=3;

($a < 10 && $b > 1) returns true

||

یا

$a=6;

$b=3;

($a < 10 || $b > 1) returns false

!

نامساوی

$a=6;

$b=3;

!(x==y) returns true


  • یک نکته

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


کد:
[SIZE=10px]<?php[/SIZE]
[SIZE=10px]$a = 12;[/SIZE]
[SIZE=10px]$b = (12 * 5 - (41 - $a)) * ($a - 1);[/SIZE]
[SIZE=10px]echo $b;[/SIZE]
[SIZE=10px]?>[/SIZE]
 

homayon574

کاربر عضو
شرط ها در php وظیفه چک کردن مقادیر خاصی را با استفاده از عملگرهای متفاوت دارند ، به طور مثال زمانی که شما میخواهید یک فرم ورود در برنامه خودتان ایجاد کنید نیاز دارید در قسمت های مختلف از شرط ها استفاده کنید. شکل کلی یک شرط را در زیر مثال میزنیم :


کد:
if (دستورات شرط)  {
محتویات شرط در صورت برقرار بودن دستورات شرط;
}
همان طور که در مثال اولیه میبینید دستور شرط با کلمه if اغاز و سپس دستورات در داخل پرانتز بعد از کلمه if قرار گرفته و بعد از آن کدهای اجرایی که مشروط به صحیح بودن دستورات داخل پرانتز نوشته میشود . حال یک مثال :


کد:
<?php
$num1 = 5;
$num2 = 1;
if($num1 + $num2 == 10) {
echo "$num1 + $num2 is equal to 10";
}
?>
مثال اول ما در شرط چک کردیم اگر جمع متغیر اول و دوم مساوی 10 بود مقدار داخلی شرط را نمایش دهد ، حال ما اگر بخواهیم درصورت نادرست بودن شرط مقدار دیگری را نشان دهیم میتوان از فرمان else پس از پایان شرط استفاده کرد .نکته قابل ذکر این است که در فرمان else هیچ دستوری نوشته نمیشود ، برای مثال :


کد:
<?php
$num1 = 5;
$num2 = 1;
if($num1 + $num2 == 10) {
echo "$num1 + $num2 is equal to 10";
}
else {
echo "$num1 + $num2 is less than 10"; 
}
?>
ما در شرط بالا که کامل تر شده همان شرط قبلی هست این قسمت را اضافه کردیم که با فرمان else در صورت برقرار نشدن شرط تکه کده داخل else نشان داده شود یعنی اگر متغیر اول و دوم جمعشان مساوی 10 شد مقدار داخلی else نمایان شود. باید توجه داشت که دستور else تنها درصورتی قابل پذیرش و کارگیری است که در ادامه یک شرط باشد و در صورت استفاده در جای نامناسب با خطای مفسر برخواهیم خورد .

حال زمانی هست که شرط ما چندین بار مجبور به چک کردن ورودی باشد تا خروجی مناسب را ایجاد کند به طور مثال زمانی که ما نیاز داشته باشیم چک کنیم دو عدد با هم مساوی اند یا عدد اول از دومی بزرگتر باشد یا عدد اولی کوچیکتر از عدد دومی باشد ما باید چندین مرحله برای رسیدن به خروجی مناسب شرط را چک کنیم. در این زمان از فرمان elseif استفاده مینماییم . این فرمان همانند فرمان if است باید دستورات مورد نیاز را در پرانتزی در جلوی خط فرمان نوشت سپس سایر کد ها را ادامه داد ، مثال این بخش :


کد:
<?php
$num1 = 5;
$num2 = 1;
if($num1 + $num2 == 10) {
echo "$num1 + $num2 is equal to 10";
}
elseif($num1 + $num2 > 10) {
echo "$num1 + $num2 is greater than 10"; 
}
else {
echo "$num1 + $num2 is less than 10"; 
}
?>
همانطور که دیدید ما همانطور که در بالا گفیم در شرط بالا شرط را چک کردیم که دو عدد با هم مساوی اند یا دو عدد بزرگتر از ده هستند یا کوچکتر از ده هستند و با توجه به حالت بازگشتی دستور مقدار مناسب چاپ شود. توجه کنید دستور elseif همواره باید در ادامه if نوشته شود و به تنهایی کاربرد ندارد و همچنین نمیتواند زیر فرمان else قرار بگیرد .

 

homayon574

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


کد:
switch (ورودی) {

case شرط یک:
 نمایش محتویات به شرط صحیح شدن ورودی و شرط یک;
 break;

case شرط دو:
 نمایش محتویات به شرط صحیح شدن ورودی و شرط دو;
 break;

default:
 نمایش محتویات پیش فرض در صورتی که هیچ کدام از قسمت ها صحیح نشد;
}
همانطور که میبینید ما مقدار ورودی را در پرانتز کنار فرمان switch قرار دادیم سپس شروط را در در قالب کیس های در داخل فرمان سوئیچ قرار میدهیم در صورتی که شرط و مقدار ورودی یکسان شوند آن قسمت سوئیچ اجرا و از مابقی برنامه خارج شود در فرمان بالا از break; برای خروج از ادامه برنامه در صورت صحیح شدن شرط استفاده کردیم اگر این فرمان را در کد سوئیچ قرار ندهیم با وجود اینکه شرط اجرا شده با این حال ادامه شرط نیز چک میشود و در اخر نیز با فرمان default: مقدار پیش فرض را قرار میدهیم این دستور در سوئیچ حکم else در فرمان if را دارد. یک مثال در این مورد :


کد:
<?php
switch ($x) {
case 2:
 echo "Number 2";
 break;
case 3:
 echo "Number 3";
 break;
case 1:
 echo "Number 1";
 break;
default:
 echo "No number between 1 and 3";
}
?>
به صورت ساده اگر بخواهیم کد بالا را شرح دهیم باید بگوییم ما متغیر x را در برنامه وارد کردیم و سه کیس را برای چک کردن وارد و یک مقدار پیش فرض را در صورت ست نشدن برنامه قرار دادیم در هر کیس یک عدد را بین یک تا سه قرار دادیم اگر متغیر x با یکی از اعداد کیس ها یکسان شود پیغامی را نمایش دهد در غیر این صورت اگر عدد ما بین یک تا سه نبود خروجی پیش فرض را نمایش دهد ، البته قرار دادن مقدار پیش فرض هیچ الزامی ندارد و میتوان بعد از آخرین دستور break; با } دستور سوئیچ را میبندیم.

 

homayon574

کاربر عضو
آرایه ها یکی از مهم ترین مباحث در php هستند ولی متاسفانه چون به درستی به تازه کارها فهمانده نمیشود از این رو به دلیل مبهم نمایان بودن مسئله همیشه تازه کارها از ارایه ها فراری هستند درحالی که نادانسته بسیار با آرایه ها سرکار خواهند داشت ، نمیخواهم تعریف معمول و گنگ را برای آرایه ها به شما بگویم همین کافیست بگویم آرایه ها در قالب متغیرهای چندین بعدی به ما ارائه میشوند که در آینده و جلسات بعدی نمونه های زیادی از آنها را خواهیم دید استفاده از آرایه ها بسیار خوب و کارآمد است .

ما میبایست برای یادگیری بهتر آرایه ها آن را به سه مبحث مختلف تقسیم کنیم که هر یک را برای شما توضیح میدهم.

  1. آرایه های عددی: به آرایه هایی گفته میشود که با شاخص عددی فراخوانی میشوند
  2. آرایه های انجمنی: به آرایه هایی گفته میشود که برای هر عنصر آن را نام گذاری و با کلید نام آرایه را فراخوانی میکنیم
  3. آرایه های چند بعدی: به آرایه هایی گفته میشوند که از زیر مجموعه شدن چندین آرایه به دست می آیند.


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


کد:
<?php
$item1 = 'test1';
$item2 = 'test2';
$item3 = 'test3';
/*...*/
$item10 = 'test10';
?>
همان طور که میبینید این کار اصلا اصولی و جالب نیست حال در اینجا ما همین کار را با یک ارایه انجام میدهیم :


کد:
<?php
$item = array('test1', 'test2', 'test3' /*...*/,'test10');
?>
در مثال بالا ما از یک آرایه عددی برای هدفمان استفاده کردیم حال برای توضیح هر سه نوع آرایه ای که گفته ایم را بخش بخش توضیح خواهیم داد .

1.آرایه های عددی : در بالای این بخش یک آرایه عددی را مثال زدیم در آرایه های عددی بعد از فرمان array در داخل پرانتز عناصر آرایه را وارد کرده و با کاما ( , ) آنها را از هم جدا میکنیم ما یک آرایه عددی را ساختیم اما حال اگر بخواهیم این از این آرایه استفاده کنیم باید چه کرد؟

قطعا با دستور echo نمیتوانیم یک آرایه را بدون آدرس دهی درست نشان دهیم همان طور که گفته شده آرایه ها در قالب متغیر های چند بعدی به ارائه میشود اگر بخواهیم یک ارایه را با فرمان echo بدون آدرس دهی درست و تنها با قرار دادن نام متغیر آرایه قرار دهیم چیزی برایمان جز کلمه Array نمایان نخواهد گردید. البته میتوان با دستور print_r بدنه یک آرایه را به طور کامل نمایش داد حال کمی تمرین کنیم و مسائل بیشتری درمورد آرایه های عددی بیاموزیم :

شمای آرایه :


کد:
<?php
$item = array('test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7', 'test8', 'test9', 'test10');
?>
حالا با فرمان echo یک امتحان بکنیم :


کد:
<?php
echo $item;
?>
نتیجه ای جز کلمه Array به ما داده نشد درست است؟ چیزی غیر این هم توقع نمیرفت چون ما آدرس دهی درستی برای نمایش آرایه نداده ایم ، خب حالا بیاییم با فرمان print_r بدنه آرایه مان را نمایش دهیم :


کد:
print_r($item);
حال کد را دوباره در مرورگر بارگزاری نمایید.چیزی شبیه به کدی که ما نوشتیم در مرورگر نشان داده میشود البته نه کاملا متشابه !!! همانطور که میبینید پشت هر آیتم یک عدد گذاشته شده است که این عدد از 0 به عنوان کلید ID اولین عنصر آرایه قرار گرفته با هر عنصر جدید یکی به آن افزوده میشود ، یک موضوع دیگر این است که برای اینکه فرمان print_r به درستی اجرا شود باید نام آرایه را در پرانتزی جلوی فرمان بنویسیم دلیل این موضوع را در مبحث توابع خواهیم گفت در این تنها به صورت یک تذکر به شما برای دانستن میگوییم.

بسیار خب حال ما آرایه را ساختیم و میخواهیم از آن استفاده کنیم باید چه کار انجام داد؟ ما به همین دلیل گفتیم اول با فرمان print_r یک بار بدنه آرایه مان را ببینیم آن چیزی که ما دیدیم شکل تفسیر شده آرایه اولیه مان بود که در مرورگر نشان داد همانطور گفته شد برای هر عنصر یک کلید ID عددی که از صفر شروع میشود داده شد که به عنوان وسیله ای برای شناسایی مکان هر عنصر به آن نیاز است به دلیل همین موضوع است که به این نوع آرایه ما آرایه عددی میگوییم .حال ببینم چطور باید یک عنصر از آرایه عددی را فراخوانی کرد ، برای این کار باید در کنار نام متغیر یک براکت را باز کرد و ID عنصر مورد نظر را در آن نوشت مثال(این کد را با کد قبلی که به برنامتون اضافه کردید جایگزین کنید) :


کد:
echo $item[0];
اگر فرمان بالا را در زیر آرایه بنویسیم اولین عنصر آرایه که ID شماره صفر به آن تعلق گرفته است نمایش داده میشود ما میتوانیم تا عدد 9 را در براکت قرار دهیم چون عدد ID ها از 0 شروع میشوند زمانی که به ID 9 برسیم به دهمین خانه یا آخرین عنصر آرایه ای که ساختیم رسیده ایم و بعد از آن هر عددی وارد نماییم به هیچ نتیجه ای دست نخواهیم یافت مگر آنکه آن کلید ID در آرایه موجود باشد .

یک نکته دیگر برای آرایه ها مطرح است این است که میتوان آرایه ها را به شکل متغیری هم نوشت یعنی جدا جدا به طور مثال :


کد:
<?php
$item = array('test1', 'test1', 'test1');
?>
و


کد:
<?php
$item[] = 'test1';
$item[] = 'test2';
$item[] = 'test3';
?>
با هم هیچ تفاوتی ندارند ! البته باید بدانیم که در روش دوم با استفاده از براکت [] باید متغیر را آماده کرد برای افزودن عنصر جدید به آرایه در غیر این صورت متغیر از نوع معمولی در مفسر php شناخته میشود که در مبحث متغیر ها به آن اشاره کردیم و گفتیم که متغیر هم نام در زیر یک متغیر مقدار داخلی متغیر دوم به عنوان مقدار داخلی تمامی متغیر های قبلی قرار میگیرد !

و اما یک نکته دیگر : در آرایه ها عددی ما میتوانیم خودمان کلید اولیه را با عدد تایین کنیم یعنی میتوانیم فرمان دهیم آرایه بجای اینکه از عدد 0 کلید بخورد از عدد 10 کلید بخورد : مثال :


کد:
<?php
$item = array(10 => 'test1', 'test1', 'test1');
?>
و


کد:
<?php
$item[10] = 'test1';
$item[] = 'test2';
$item[] = 'test3';
?>
همانطور که میبنید برای انجام این کار ما مقدار عددی اولین عنصر را خودمان وارد میکنیم و بقیه عنصرها کاری نداریم با این کار مقدار اولیه کلید ها را میزنیم میتوانیم کد های بالا را با فرمان :


کد:
print_r($item);
آن را تست کنیم این هم از توضیح این بخش از آرایه ها.در آخر کد کامل :


کد:
<?php
$item = array(10 => 'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7', 'test8', 'test9', 'test10');
print_r($item);
echo "<p>{$item[13]} after in {$item[12]} and {$item[12]} before in {$item[11]}</p>";
?>
2. آرایه های انجمنی : تفاوت آرایه های انجمنی با آرایه های عددی در این است که آرایه های انجمنی ما برای هر عنصر آرایه یک کلید ID مشخص توسط خودمان میسازیم یعنی هر عنصر از آرایه یک کلید مشخص شده که میتواند یک رشته یا عدد باشد مشخص میشود چون ما آرایه را در آرایه های عددی به کاملی توضیح دادیم دیگر نیاز توضیحات بیش از حد نیست اگر شما آرایه های عددی را به خوبی متوجه شده باشید با مثال های که در مورد آرایه های انجمنی میزنیم به صورت کامل تفاوت ها را خواهید فهمید ، شکل الگوی کلی یک آرایه انجمنی به این حالت است :

به طور مثال اگر ما بخواهیم سن چند کاربر مشخص شده را در داخل یک آرایه بریزیم :


کد:
<?php
$age = array(user1 => 17 , user2 => 19 , 'user 3' => 17);
print_r($age);
echo "<br>".$age[user1];
?>
یا


کد:
<?php
$age[user1] = 17;
$age[user2] = 19;
$age['user 3'] = 17;
print_r($age);
echo "<br>".$age[user1];
?>
این دو مثال هر دو یکی هستند اما یک نکته را من در این مثال ها گذاشتم تا علاوه بر آموزش یافتن نکات ریز را هم بفهمید. من کلید 'user 3' را داخل کوتیشن ' قرار دادم ولی سایر کلید ها را بدون کوتیشن نوشتم دلیل این کار این است که در این کلید از فاصله استفاده شده در صورتی که در چنین کلیدهای از کوتیشن یا دبل کوتیشن استفاده نشود Parse error مواجه خواهیم شد برای همین تمامی کلید ها یا عنصر های رشته ای چند قسمتی خود را در داخل کوتیشن یا دبل کوتیشن بگذارند البته برای تازه کارها پیشنهاد میشود تمامی کلید ها و عنصر های رشته ایشان را در کوتیشن یا دبل کوتیشن قرار دهند تا مشکلی پیش نیاید همچنین در هنگام فراخواهنی هم این موضوع صدق میکند . برای این بخش توضیح بیشتری نمیدهیم.

3.آرایه های چند بعدی : حال ما آشنایی کامل را با آرایه ها داریم ولی یک مسئله وجود دارد حال اگر بخواهیم چندین اطلاعات را در آرایه ها بریزیم چه؟ مثلا بخواهیم با دادن نام یک کاربری نام،نام خانوادگی،سن، و... را داشته باشیم چه؟ در این وضعیت ما باید از آرایه های چند بعدی استفاده کنیم در این نوع آرایه ما ممکن است برای رسیدن به هدفمان چندین آرایه را زیر مجموعه هم بکنیم. مثال آسان :


کد:
<?php
$user = array(
user1 => array(
name => ali,
family => ahmadi,
age => 17
),
user2 => array(
name => mohammad,
family => parsi,
age => 19
),
'User 3' => array(
name => 'ahmad ali',
family => abasi,
age => 17
)
);

print_r($user);
?>
این کد را ذخیره و در مرورگر بارگزاری کنید (به دلیل اینکه شاید حالت نمایش گنگ به نظر بیاید source صفحه را نگاه کنید نه خود صفحه را) اینجا شاید کمی گنگ شوید ما در اینجا هر عنصر آرایه که با کلید یک کاربر ایجاد میشود را یک آرایه در نظر گرفتیم یعنی هر عنصر آرایمان خود یک آرایه هست در اینجا ما برای اینکه اطلاعات را نمایش دهیم باید با توجه به مکان قرار گیری هر عنصر آن را بارگزاری کنیم یعنی اگر فرمان :


کد:
echo $user[user1];
همان نتیجه ای را خواهیم گرفت که برای یک آرایه آدرس داده نشده به ما میدهد یعنی تنها کلمه Array برای ما نشان داده میشود برای اینکه نتیجه درست داده شود ما باید ادرس دقیق عنصرمان را به متغیر آرایه بدهیم خب حالا در زیر آرایه print_r($user); را حذف و به جای آن بنویسید :


کد:
print_r($user[user1]);
شاهد خواهید بود که برای ما آرایه زیر مجموعه شده را نشان میدهد خب برای نمایش باید کلید عنصر آرایه مان را به ادامه متغیر آرایه اضافه کنیم یعنی حالا فرمان زیر را در فایلتان افزوده و بارگزاری کنید :

echo $user[user1][name];

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


کد:
<?php
$user[user1][name] = ali;
$user[user1][family] = ahmadi;
$user[user1][age] = 17;

$user[user2][name] = mohammad;
$user[user2][family] = parsi;
$user[user2][age] = 19;

$user['user 3'][name] = 'ahmad ali';
$user['user 3'][family] = abasi;
$user['user 3'][age] = 17;

print_r($user);
?>
این در مورد مبحث آرایه ها بود که گفتیم برای آرایه ها توابع بسیار زیادی وجود دارد که کاربرد آن ها را برای ما بیشتر میکند

 

homayon574

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

به طور کلی ما میتوانیم حلقه ها را به چهار دست تقسیم کنیم :

  1. While
  2. Do...while
  3. For
  4. Foreach

کار تمامی این حلقه ها تقریبا مشابه است و تنها حالت نوشتاری آن تفاوت دارد که یک به یک آن ها را توضیح خواهیم داد

1.while : در این حلقه یک شرط بررسی میشود در صورتی که شرط برقرار باشد محتویات حلقه اجرا و دوباره چک میشود مادامی که شرط حلقه صحیح باشد حلقه تکرار خواهد شد. شکل کلی دستور :


کد:
while (شرط حلقه) {
 کدهای داخلی حلقه در صورت برقرار بودن شرط;
 }
فکر نمیکنم نیازی به توضیح باشد یک مثال در این مورد برای شما میزنم :


کد:
<?php
$i=1;
while($i<=5( {
echo "The number is " . $i . "<br>";
$i++;
}
?>
ما در این حلقه یک متغیر عددی به نام i را تعریف کردیم سپس دستور حلقه را نوشته و شرط حلقه را با عملگر کوچکتر مساوی بر این گذاشتیم که مادامی که متغیر i از عدد 5 کوچکتر یا مساوی باشد حلقه تکرار شود و در اخر حلقه قبل از بسته شدن کارلی براکت با عملگر ++ یا به روایتی با گام حلقه مقدار متغیر i را یکی رو به بالا افزایش دادیم. این توضیح ساده یک حلقه بود.

  • نکته : در صورتی که در آخر حلقه گام حلقه یا عملگر ++ را برای افزایش مقدار شرط ندهید و حلقه را در مرورگر نمایش دهید حلقه هرگز پایان نمیابد


2.do...while : این حلقه شباهت زیادی با حلقه while دارد با این تفاوت که شرط حلقه در پایان آن است ، این حلقه حداقل یک بار نمایش داده میشود ولی در سایر شرط ها به دلیل اینکه شرط حلقه در ابتدا چک میشود در صورت ست نبودن آن حلقه به هیچ وجه اجرا نمیشود ، اما شکل کلی دستور :


کد:
do{
 کدهای داخلی حلقه در صورت برقرار بودن شرط;
 }
while (شرط حلقه);
مثالی برای این حلقه :


کد:
<?php
$i=1;
do{
  $i++;
   echo "The number is " . $i . "<br>";
 }
while($i<=5);
?>
3.for : این حلقه که مرسوم ترین نوع حلقه است بدین شکل است که مقدار اولیه ، شرط و گام حلقه همگی در داخل پرانتز نوشته و با علامت سیمیکلن از هم جدا میشوند کار کلی کار این حلقه نیز مانند حلقه های دیگر است :


کد:
for (مقدار اولیه; شرط; گام حلقه) {
 کدهای داخلی حلقه در صورت برقرار بودن شرط;
 }
مثال این حلقه :


کد:
<?php
for ($i=1; $i<=5; $i++) {
  echo "The number is " . $i . "<br>";
}
?>
کاملا مشخص هست ما در پرانتز مقدار اولیه را 1 دادیم سپس شرط گذاشتیم که مادامی که مقدار اولیه از کوچکتر یا مساوی باشد حلقه ادامه یابد و در مرحله آخر گام حلقه را گذاشتیم.

4.foreach : این حلقه برای آرایه ها به کار میرود ، با توجه تنظیماتی که این حلقه دارد بسیار برای آرایه ها مناسب است برای اینکه یک آرایه را تکرار بخواهید بکنید و محتویات آن را نشان دهید میتوانید از این حلقه استفاده کنید . شکل کلی دستوری این حلقه به این شکل است :


کد:
foreach ($array as $value)  {
 کدهای داخلی حلقه در صورت برقرار بودن;
 }
توضیحی نمیخواهد فقط در قسمت شرط حلقه نام متغیر آرایه را نوشته و با فرمان as نوع حلقه را مشخص کنید به طول مثال برای حلقه های عددی از حلقه متشابه حلقه بالا استفاده میکنیم و برای حلقه های انجمنی از شکل کی زیر استفاده میکنیم :


کد:
foreach ($array as $key => $value)  {
 کدهای داخلی حلقه در صورت برقرار بودن;
 }
البته باید توجه داشت متغیر های بعد از as هستند به عنوان نام جدید ID و عنصر متغیر آرایه قرار میگیرد اگر متوجه نشدید به مثالها توجه کنید

مثالی برای حلقه آرایه های عددی


کد:
<?php
$x=array("one","two","three");
foreach ($x as $value) {
echo $value ."<br>";
}
?>
و مثالی برای آرایه های انجمنی :


کد:
<?php
$x=array("one" => 1,"two" => 2,"three" =>3);
foreach ($x as $key => $value) {
echo $key." => ".$value ."<br>";
}
?>
در این حلقه تعداد چرخش بر اساس تعداد عنصر ها می باشد با امتحان کردن حلقه بالا به خوبی متوجه خواهید شد چگونه یک حلقه foreach کار میکند.

 

homayon574

کاربر عضو
در php مانند بیشتر زبان های برنامه نویسی مطرح این قابلیت وجود دارد که در بین کدها کامنت ها نوشته شوند ، کامنت ها در اصل هیچ اثری در برنامه ندارند و صرفا به جهت اینکه اطلاعات مطالب و یا موضوعاتی مرتبط قسمتی از برنامه وارد شود نوشته میشود . کامنت ها در پروژه های بزرگ یا پروژه هایی که قرار است توسط چند برنامه نویس نگاشته یا ویرایش شوند بسیار کارآمد هستند زیرا با استفاده از کامنت ها میتوان اطلاعاتی در مورد قسمت های مهم برنامه ذکر کرد که در سهل کردن کار و ویرایش پروژه بسیار تاثیر گذار است در php سه روش معرفی شده برای کامنت گذاری وجود دارد که تمامی آن ها را برای شما ذکر میکنیم.

استفاده از # و // در برنامه ها

در بین تگ های پی اچ پی هرکجا که از این دو علامت استفاده شود تمامی محتویات آن خط از برنامه بعد از علامت کامنت به کامنت تبدیل میشود(حتی اگر وظیفه انجام کاری را داشته باشند آنها بی اثر میشوند) مثال:


کد:
<?php
print "This is a test <br>"; # show on page => "This is a test"

// echo "This is a test <br> ";
?>
در مثال بالا ما در خط اول توضیحاتی از وظیفه تابع print (همان کار echo) را توضیح دادیم و در خط بعد تابعی که نوشته بودیم را به شکل یک کامنت بیان کردیم. توجه داشته باشید که هیچ تفاوتی بین // و # نیست و کار هردو وظیفه کامنت کردن و بی اثر نمودن محتویات بعدی خود را در خطی که هستند دارند .

اما یک روش دیگر برای کامنت گذاری در برنامه ها هست که برای کامنت هایی است که بیش از یک خط هستند یا اینکه باید کامنت در وسط یک قسمت در یک خط قرار گیرند برای اینکه محدوده این نوع کامنت مشخص شود از دو تگ آغازین و پایانی استفاده میشود که در مثال زیر با آن آشنا میشوید :


کد:
<?php
/*
print "This is a test <br>"; 
//show on page => "This is a test"

echo "This is a test <br>";
#show on page => "This is a test"
*/
?>
در کد بالا تمامی نوشته ها به شکل کامنت در آمده اند ما برای این کار از دو تگ /* .... */ استفاده کردیم اگر شما این دو تگ را حذف کنید کدها داخل آنها اجرا میشوند که باز هم در خطوط میانی یک در میان کامنت های خطی در آن گذاشته ایم .

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

 

homayon574

کاربر عضو
خب رسیدیم به توابع ، یاد گیری توابع نیز بسیار مهم است ،

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

در php توابع به دو بخش تقسیم میشوند یکی توابعی که در php به صورت پیش فرض ساخته شده اند و یکی توابعی که ما با توجه به نیازمان ایجاد میکنیم . در مورد توابع پیش فرض به طور مثال ما در اموزش آرایه ها بارها از print_r استفاده کردیم این یک تابع پیشفرض php برای نمایش بدنه آرایه هاست که یک آرایه را در ورودی میگیرد و در خروجی بدنه آن را چاپ میکند. php تعداد زیادی توابع پیش فرض دارد. باید توجه داشت که ما نمیتوانیم توابعی بسازیم که هم نام با توابع پیش فرض php باشد در صورت انجام چنین کاری با خطا برخواهیم خورد . نکات و تذکرات در مورد توابع را در پایان آموزش گوش زد خواهیم کرد. شکل کلی ساخت یک تابع توسط ما به این شکل است :


کد:
function نام_تابع(ورودی ها) {
کد های تابع در صورت فراخوانی ;
}
این شکل دستوری یک تابع است و اما یک مثال کاربردی :


کد:
<?php
function test($msg) {
echo $msg;
}
?>
در تابع بالا ما دستور دادیم هر چیزی که به تابع ارسال شود در مرورگر نشان داده شود. حال باید تابع را فراخوانی کنیم برای این کار نام تابع را به علاوه ورودی های مشخص شده(درصورت نبودن هیچ ورودی فقط() میگذاریم) را گذاشته و در آخر سیمیکلن را برای پایان فراخوانی میگذراییم. مثال :


کد:
<?php
test("salam");
?>
ما با کد بالا تابعی که ساختیم را فراخوانی کردیم.

نکات مهمی در توابع که ما میسازیم است که در اینجا متذکر میشوم

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


  • کار توابع مشخص است پس در توابع ما باید همواره تعداد ورودی ها را مشخص کنیم و به تعداد ورودی ها در هنگام فراخوانی توجه داشته باشیم در صورتی که یک مقدار را جایگذاری نکنیم به خطا مواجه خواهیم شد ، نمونه یک تابع نادرست که بدون توجه به این نکته ایجاد شده است :



کد:
<?php
//این تابع اشتباه نوشته شده است
function test($msg,$msg2) {
echo $msg;
}

test("salam");
?>

  • ما میتوانیم مقدار وروی مشخصی را مانند ورودی اخری به صورت پیش فرض قرار دهیم تا در صورت موجود نبودن ورودی مقدار در هنگام فراخوانی ورودی پیش فرض در تابع قرار گیرد به طور مثال در تابع اشتباهی که در بالا نوشتیم مشکل را با پیش فرض گذاشتن ورودی دوم مشکل را حل کنیم به طور مثال :



کد:
<?php
function test($msg,$msg2 = null) {
echo $msg."<br>".$msg2;
}

test("salam" /* ,"khobi?" */);
?>
در بالا ما مقدار پیش فرض را برابر null یعنی خالی گذاشتیم ، حال اگر ما ورودی دوم را هم وارد نکنیم مهم نیست و در صورتی که ورودی دوم وجود داشته باشد در هنگام فراخوانی آن لحاظ میشود.(قسمت دوم تابع در هنگام فراخوانی به صورت کامنت قرار گرفته است و بی اثر است)

  • نکته دیگر و مهم این است که متغیرهایی که در خارج تابع ما نوشته میشوند قابلیت نمایش در داخل تابع را ندارند یعنی در داخل توابع متغیر های بیرون از آن قابل جایگذاری نیستند ، مثال :



کد:
<?php
$msg2 = "khobi?";

function test($msg) {
echo $msg."<br>".$msg2;
}

test("salam");
?>
اگر کد بالا را اجرا کنیم هرگز متغیر دوم در تابع نمایش داده نخواهد شد مگر اینکه از فرمان global در داخل تابع استفاده کنیم تا متغیر خارج از تابع را به داخل آن هدایت کنیم ، این فرمان محدودیتی در پذیرش متغیر های بیرون تابع ندارد ، مثال :


کد:
<?php
$msg = "salam";
$msg2 = "khobi?";

function test() {
global $msg , $msg2;
echo $msg."<br>".$msg2;
}

test();
?>
در کد تابع بالا با فرمان global دو متغیر بیرونی تابع را به داخل آن هدایت کردیم تا در تابع قابل استفاده شوند. توجه داشته باشید که در این فرمان برای افزودن هر متغیر باید با کاما ( , ) آنها را از هم جدا نمود و در انتها با سیمیکلن ( ; ) آن را به پایان رساند.

تا اینجا تمام توابعی که ما مثال زدیم بدون خروجی بود و تنها ما ورودی را با یک تابع پیش فرض در مرورگر چاپ کردیم همیشه ما تابع را برای نمایش دادن در مرورگر نمیسازیم گاها" (شما تقریبا همیشه فرض کنید) ما باید یک خروجی برای تابعمان بگذاریم مثلا اگر بخواهیم بر روی ورودی فعل و انفعالی انجام دهیم باید یک خروجی در نظر بگیریم همانگونه که گفتیم هیچ متغیر خارج از تابع نمیتواند در داخل تابع باشد مگر با فرمان global در خروجی گرفتن از تابع هم همین حالت هست هر اتفاقی که در تابع بیفتد تنها در داخل آن است و عملیات های انجام شده با خارج تابع در ارتباط نیستند پس اگر بخواهیم بعد از انجام عملیات مقدار به دست آمده را در خارج تابع ارسال کنیم باید از فرمان خروجی دادن یا همان return استفاده کنیم برای نمونه یک مثال میزنم :


کد:
<?php
function sum($x,$y){
$total=$x+$y;
return $total;
}

echo "1 + 16 = " . sum(1,16);
?>
ما در بالا یک تابع برای جمع نوشتیم و در اخر عملیات های انجام شده را در متغیر total ریختیم و آن را با return به عنوان خروجی تابع در نظر گرفتیم و آن را فراخوانی کردیم و در نهایت در خارج تابع با فرمان echo خروجی را در مرورگر چاپ کردیم.

  • در تابع هرجا که از فرمان return یعنی خروجی استفاده کردیم به معنای پایان تابع است و کدهای بعد از آن در نظر گرفته نمیشود حتی اگر از کد خروجی دیگری استفاده شود در نظر گرفته نمیشود یعنی هر تابع تنها میتواند یک خروجی داشته باشد و بعد از خروجی نیز هیچ کدی پذیرفته نمیشود لذا فرمان خروجی در آخرین خط تابع باید نوشته شود.
  • نکته بعدی توابعی که خروجی دارند را میتوان به عنوان مقدار یک متغیر ریخت یا در شرطی با توجه به مقدار قرار داد :



کد:
<?php
function sum($x,$y){
$total=$x+$y;
return $total;
}

$num = sum(1,16); 
echo "1 + 16 = " . $num . "<br>";

if(sum(1,16) > 15){
echo sum(1,16) . " is greater than 15";
}

?>

  • نکته بعدی توابع از قوانین نام گذاری که برای متغیر ها گفتیم طبعیت میکنند یعنی نمیتوان متنغیری ایجاد کرد که با یک عدد شروع شده باشد یا از فاصله در نام متغیر استفاده کرد البته در توابع کوچک یا بزرگی حروف با هم تفاوتی برعکس متغیرها ندارند و تابع sum() را اگر به شکل SUM() هم بنویسیم تفاوتی نیست.



کد:
<?php
function sum($x,$y){
$total=$x+$y;
return $total;
}
echo "1 + 16 = " . SUM(1,16);
?>
 

homayon574

کاربر عضو
مسئله درخواست های POST و GET در php بیشتر در مورد فرم های html و ارسال اطلاعات با url ها مطرح هستند و البته مهم. POST و GETدر قالب متغیرهای آرایه ای با نام مشخص به ما ارائه میشوند. زمانی که در سایتی فرمی را پر میکنید با توجه نوع ارسال فرم یک درخواست POST و GETبه سرور سایت ارسال میکنید یا زمانی که به سایتی میروید بعد از ادرس اصلی سایت یک سری اطلاعات در ادامه ادرس میبینید این یک نوع درخواست GET است که دارید مشاهده میکنید.

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

POST و GETدر قالب دو متغیر از پیش تایین شده آرایه ای درPHP ذخیره میشوند که جدا گانه در مورد آنها صحبت خواهیم کرد اما قبل از گفتن هر چیزی باید بگویم در خواست های POST و GET در متغیر آرایه ای زیر ریخته میشوند که هر دو متغیر به کوچک بزرگی حروف حساسند و باید عینا" به شکل زیر نوشته شوند :


کد:
$_GET;
$_POST;
حالا بیائیم کمی با این درخواست ها کار کنیم

اول محتویات داخلی فایل index.php که ساختیم را کاملا حذف میکنیم.

بعد ادرس کامپیوترمون تو مرورگر بریم :



خب حالا برای اینکه بیایم با get بازی کنیم به انتهای ادرس یک / یا /index.php اضافه کنیم



حالا بیایم چندتا درخواست get بسازیم:



حالا صفحه رو رفرش کنید هیچی نشان داده نخواهد شد ولی حالا تو فایل index.php کد زیر را وارد کنید :


کد:
<?php
print_r($_GET);
?>
دوباره صفحه را رفرش کنید یا به آدرسی که ساختیم بروید.

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

  • ما بعد از آدرس از ? استفاده کردیم علامت سئوال در آدرس نشان دهنده شروع یک درخواست GET است سپس نام کلید درخواست و مقدار داخل آن را وارد کردیم و برای ارسال یک درخواست دیگر GET بعد از وارد کردن مقدار یک & آمپرسند قرار میدهیم و درخواست جدید را مینویسیم به همین ترتیب برای هر درخواست ادامه میدهیم و باید توجه بکنیم که درخواست های GET و POST در قالب ارایه های انجمنی به ما ارائه میشوند پس باید نام کلید عنصر آرایه حتما وارد شوند و گرنه آن در خواست ثبت نمیشود.


اما روش استفاده از درخواست های GET در php چگونه است؟ ما به شما گفتیم که درخواست های GET در یک متغیر از پیش تایین شده آرایه انجمنی ریخته میشود که با فرمان print_r آنها را نشان دادیم خب ما اموزش استفاده از ارایه ها را دادیم کافیست کمی تفکر کنید ، برای این کار کافیست نام درخواست را در براکتی در جلوی متغیر درخواست GET بنویسیم دقیقا مانند ارایه ها :


کد:
<?php
echo $_GET["get1"];
?>
اما در مورد درخواست POST برای اینکه مثالی بخواهیم بزنیم می بایست کمی از html هم آموزش بدهیم. همانطور که گفتیم از درخواست POST در فرم ها استفاده میشود بیشتر استفاده میشود. برای همین باید با نمونه فرم شما را آشنا کنیم


کد:
[SIZE=2]<form method="POST" action="index.php" target="_self">
your name : <input type="text" name="test" size="20">
<input type="submit" value="Submit" name="go">
<input type="reset" value="Reset" name="reset">
</form>
[/SIZE]
در بالا شما یک نمونه فرم html را مشاهده میکنید که وظیفه ارسال مقدار نام را داراست لطفا کد بالا را در فایل index.php ذخیره کنید . در مورد خاصیت های تگ from برای شما صحبت میکنم و اون رو شرح میدم بقیه اجزا مربوط به html هست که ما در این کتاب نمیخواهیم در مورد آن صحبت کنیم.

  • Method : نوع ارسال درخواست را مشخص میکند که میتواند POST یا GET باشد(درصورتی که آن را ننویسیم به صورت پیش فرض فرم GET در نظر گرفته میشود.)


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


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

حالا وقت اون هست که کد های php رو به کد فرممون بیفزاییم. در بالای کد های فرم کد زیر را اضافه نمایید و فرم را اجرا و یک نام را در فیلد نام بنویسید و دکمه ارسال را بزنید. در این کد شرط گذاشتیم اگر متغیر ارایه انجمنی نام موجود بود ان را نمایش دهد.(در مورد توابع چک کننده در شرط ها در آینده صحبت میکنیم این مثال آخرین مثال این بخش است :


کد:
<?php
if($_POST[username]) {
echo "salam ' ". $_POST[username] ." ' jan!<br>";
}
?>
نتیجه چیزی شبیه این نتیجه خواهد شد :

You must be registered for see images attach


 

homayon574

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


کد:
setcookie(name, value, expire, path, domain);

  • در هنگام تعریف یک کوکی باید در نظر داشته باشید که برای اینکه بتوانید کوکی را ایجاد کنید ، باید تابع ساخت کوکی را باید در قسمتی از برنامه بگذارید که قبل از آن هیچ تگ html در آن ثبت نشده باشد در غیر این صورت با خطا مواجه خواهید شد و هیچ کوکی هم ثبت نمیشود البته این مشکل در استفاده از کوکی ها نیست در مثال زیر متوجه خواهید شد



کد:
<?php
setcookie("user", "user test");
//setcookie("user", "user test", time()+3600);
?>

<html>
<body>
<!-- html codes -->
</body>
</html>

  • کوکی ها نیز در قالب یک متغیر آرایه انجمنی به ما ارائه میشوند نام این متغیر $_COOKIE است و باید دقیقا به این شکل نوشته شود و برای چک کردن وجود یک کوکی میتوان از تابع isset() استفاده کرد.

مثال استفاده از کوکی :


کد:
<?php
 // Print a cookie
 echo $_COOKIE["user"];

 // A way to view all cookies
 print_r($_COOKIE);
?>
مثال شرطی برای نمایش یک کوکی :


کد:
<html>
<body>

<?php
 if (isset($_COOKIE["user"])) {
 echo "Welcome " . $_COOKIE["user"] . "!<br />";
 } else {
  echo "Welcome guest!<br />";
}
?>

</body>
</html>
برای حذف یک کوکی هم میتوانید مقدار کوکی را مساوی خالی بگذارید یا زمان پایان را زمانی کمتر از زمان فعلی بگذارید ، مثال:


کد:
<?php
 // set the expiration date to one hour ago
 setcookie("user", "", time()-3600);
?>

  • لازم به توجه هست که مانند زمان ساخت کوکی میبایست توجه کنید استفاده از کد بالا برای از بین بردن کوکی نیز باید در بالای کدهای html قرار گرند
  • نکته دیگر در کوکی ها این است که کوکی ها قابل دیدن هستن و از امنیت خوبی برای نگه داری اطلاعات مهم برخوردار نیستند و هرگز از کوکیها برای نگه داری اطلاعات مهم مانند نام کاربری یا رمز عبور یک کاربر و یا اطلاعات ورودی مهم استفاده نکنید برای این کار میتوانید از جلسات session استفاده کنید که در آینده آموزش خواهیم داد.

 

homayon574

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

سشن ها شباهت های زیادی به کوکی ها دارند و همانند کوکی ها نیز در قالب یک متغیر آرایه ای انجمنی به ما ارائه میشوند ، سشن ها بعد از هر بار بسته شدن مرورگر از بین میروند و از همچنین اما نکته مهمی در این بین اهمیت دارد برای اینکه بخواهیم از سشن ها استفاده کنیم باید یک جلسه شسن را در php اغاز کنیم برای ان کار میبایست از تابع :


کد:
<?php session_start(); ?>


<html>
 <body>
 <!-- html codes -->
 </body>
</html>
در بالاترین خط استفاده شود این تابع باید در جایی استفاده شود که قبل از آن از هیچ تگ html استفاده نشده باشد.

  • برای استفاده یا افزودن یک سشن باید از متغیر $_SESSION استفاده کرد این متغیر به بزرگی حروف حساس است.

برای تعریف یک سشن هم همانند زمانی که یک ارایه انجمنی را میخواهیم به شکل متغیری تعریف کنیم عمل میکنیم ، یک مثال:


کد:
<?php
session_start();
// store session data
$_SESSION['views'] = 1;
?>

  • برای تعریف سشن مشکلی در گذاشتن آن در هر جای برنامه مانند بالا میان یا پایین برنامه نیست (کوکی ها تنها در بالای برنامه و کدهای html میبایست نوشته شوند. تنها موضوع برای سشن ها استفاده به جا از تابع آغاز جلسه استفاده شود.


برای استفاده از سشن هم به ترتیبی که برای آرایه ها استفاده میکردیم یک نمونه برنامه ساده که با سشن ساخته شده برای تعداد دفعات مشاهده صفحه توسط کاربر :


کد:
<?php
session_start();
// store session data
$_SESSION['views']+=1;
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>

</body>
</html>
کد بالا را در مرورگر تست کنید و صفحه را دائما رفرش کنید !

 

mahdiali35

کاربر عضو
درود.....با اجازه homayon عزیز

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

این که بیاید کدها رو از اول بنویسید یا اون ها رو کپی کنید هم وقت گیره و هم باعث سنگینی فایل ها میشه.....برای اینکه از شر این مشکل خلاص بشید در php می تونید از 2 تابع include و require استفاده کنید:

<?
include ("name.php");
require ("name2.php");
?>​
کد:
این دو دستور همه ی چیزهایی که در فایل های include شده قرار دارن مانند متن ها , دستورات php , کدهای html , توابع php و......را شامل می شن.

اما تفاوت این دو در چیست؟؟؟.....این دو دستور در حالت عادی هیچ تفاوتی ندارند و کارآیی یکسانی دارند اما زمانی که فایل فراخوانی شده دارای مشکلی باشد اگر از include استفاده کرده باشیم باعث از کار افتادن بقیه ی کدها نمیشه و هشدار کوچیک می ده اما اگه از require استفاده کرده باشیم بقیه ی کدها همون جا متوقف میشه و fatal error ظاهر میشه.....

اما این دو تابع هر کدام 1 شکل دیگر هم دارند require_once و include_once..........فرض کنید در طول کدنویسی با php به صورت اشتباه دو بار فایلی رو فراخوانی کنید طبعا این کار باعث سنگین شدن اجرای فایل میشه اما اگه از require_once یا include_once استفاده کنید جلوی این گرفته میشه و فایل فقط یک دفعه فراخوانی میشه.....

در حالت کلی فکر کنید شما یه فایل به نام main.php دارید و می خاید اونو در کل برنامه هاتون فراخوانی کنید و مثلا کدش اینه:

<?
echo test ;
?>​
کد:
در یه فایل دیگه اونو فراخوانی می کنیم :

<?
echo "123 " ;
include ("main.php");
echo " 321" ;
?>​
کد:
و خروجی در مرورگر میشه این :

123 test 321​
کد:
پیروز و موفق باشید...

 
بالا