پنجشنبه 02 آذر 1396

فصل پنجم : آشنائی با زبان برنامه نویسی PHP : توابع بخش سوم : آموزش PHP

1-3-تابع فراخوانی یک فایل ( PHP include() Function & PHP require() Function)

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

					
<html>
<body>
<?php
include("start.php");
echo "سلام دوستان!";
?>
</body>
</html>
					
				

توضیح : فایل start.php وجود خارجی ندارد و فقط برای مشاهده خطای برنامه بکار برده شده است.

					
Warning: include(start.php) [function.include]:
failed to open stream:
No such file or directory in D:\Web\wwwroot\test\test.php on line 5
Warning: include() [function.include]:
Failed opening 'start.php' for inclusion (include_path='.;C:\php5\pear') in
D:\Web\wwwroot\test\test.php on line 5
سلام دوستان!
					
				

توضیح : برنامه اجرا شد ولی فقط یک خطای سطح پایین در خط 5 به نمایش در آمد. و نتیجه برنامه که متن سلام دوستان! بود نمایش داده شد.

در دستور require() شما یک فایل را ضمیمه می کنید ولی اگر این فایل وجود خارجی نداشت سرور به شما یک خطای توقف برنامه در حین اجرا Fatal error خواهد داد.یعنی اینکه فایل وجود ندارد و بقیه کد در فایل جاری اجرا نخواهد شد.
به مثالی که در زیر آورده شده دقت نمایید.

					
<html>
<body>
 
<?php
echo "سلام دوستان!";
require("start.php");
echo "دنیا زیباست!";
?>
 
</body>
</html>
 
					
				

توضیح : فایل start.php وجود خارجی ندارد و فقط برای مشاهده خطای برنامه بکار برده شده است.

					
سلام دوستان!
Warning: require(start.php) [function.require]:
failed to open stream: No such file or directory in D:\Web\wwwroot\test\test.php on line 6
Fatal error: require() [function.require]:
Failed opening required 'start.php'
(include_path='.;C:\php5\pear') in D:\Web\wwwroot\test\test.php on line 6
					
				

توضیح : برنامه اجرا شد ولی تا خط 5 و در خط 6 یک خطای اجرا و نتیجه توقف برنامه بوجود آمد. و در نتیجه قسمت اول برنامه که متن سلام دوستان! بود نمایش داده شد. ولی قسمت دوم دنیا زیباست! نمایش داده نشد .
امیدوارم با مثالهایی که زده شد تفاوت اصلی این دو نوع فراخوانی را فراگرفته باشید.
این دو نوع فراخوانی یک ضمیمه نیز دارند که برای هر دو مشترک می باشد. و آن استفاده از متن _once در انتهای نامشان می باشد بدین صورت که در زیر آمده است .

		
include_once(file address);
require_once(file address);
		
	

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

myfunction.php
					
<?php
function printme($s){
echo "<strong>$s</strong>";
}
?>
						
				
test.phpمرحله اول
					
<html>
<body>
<?php
require("myfunction.php");
printme("دنیا زیباست!");
require("myfunction.php");
printme("پس زیبا فکر کنیم!");
?>
</body>
</html>
					
				

نتیجه اجرای مرحله اول

					
دنیا زیباست!
Fatal error: Cannot redeclare printme()
(previously declared in D:\Web\wwwroot\test\myfunction.php:2) in 
D:\Web\wwwroot\test\myfunction.php on line 4
					
				
test.phpمرحله دوم
					
<html>
<body>
<?php
require_once("myfunction.php");
printme("دنیا زیباست!");
require_once("myfunction.php");
printme("پس زیبا فکر کنیم!");
?>
</body>
</html>
					
				

نتیجه اجرای مرحله دوم

دنیا زیباست!پس زیبا فکر کنیم!

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

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

Cannot redeclare printme()
1-4-توابع ریاضی

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

  • مثلثاتی
  • محاسباتی
  • تبدیل مبنا

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

نام تابع

نوع داده ورودی

نوع داده خروجی

تعداد پارامتر

توضیح

float deg2rad ( float $number );

عدد اعشاری

عدد اعشاری

1

تبدیل درجه به رادیان

float rad2deg ( float $number );

عدد اعشاری

عدد اعشاری

1

تبدیل رادیان به درجه

float sin ( float $arg );

عدد اعشاری

عدد اعشاری

1

سینوس زاویه

float cos ( float $arg );

عدد اعشاری

عدد اعشاری

1

کوسینوس زاویه

float tan ( float $arg );

عدد اعشاری

عدد اعشاری

1

تانژانت زاویه

float asin ( float $arg );

عدد اعشاری

عدد اعشاری

1

سینوس کمان

float acos ( float $arg );

عدد اعشاری

عدد اعشاری

1

کوسینوس کمان

float atan ( float $arg );

عدد اعشاری

عدد اعشاری

1

تانژانت کمان

این توابع شامل توابع هیپربولیک توابع فوق نیز می باشد که در این جدول نیامده است و ساختار آنها نیز همانند توابع فوق می باشد و شامل sinh,cosh,tanh,asinh,acosh,atanh می باشد.
توابع محاسباتی : این توابع برای انواع محاسبات مانند قدر مطلق ، لگاریتم و ... می باشد که به اختصار در جدول زیر شرح داده شده اند

نام تابع

نوع داده ورودی

نوع داده خروجی

تعداد پارامتر

توضیح

number abs ( mixed $number )

اعداد منفی

اعداد مثبت

1

قدر مطلق

float ceil ( float $value )

اعداد ممیز دار

عدد طبیعی

1

گرد کردن به بالا

float floor ( float $value )

اعداد ممیز دار

عدد طبیعی

1

گرد کردن به پایین

number hexdec ( string $hex_string )

عدد مبنای شانزده

عدد مبنای 10

1

هگزادسیمال به دهدهی

bool is_infinite ( float $val )

اعداد ممیز دار

درست یا نادرست

1

آیا ارزش بی نهایت است (مثبت یا منفی)

bool is_nan ( float $val )

اعداد ممیز دار

درست یا نادرست

1

آیا عدد نیست

float log ( float $arg [, float $base = M_E ] )

اعداد ممیز دار

اعداد ممیز دار

1 یا 2

لگاریتم طبیعی ]با تعیین مبنا[

mixed max ( array $values )
mixed max ( mixed $value1 , mixed $value2 [, mixed $... ] )

آرایه ای از مقادیر هم نوع یا تعدادی مقدار هم نوع

ترکیبی (وابسته به نوع داده ورودی) عددی یا رشته ای

1 آرایه یا تعداد دلخواه مقدار

پیدا کردن بیشترین مقدار ( عدد یا رشته)

mixed min ( array $values )
mixed min ( mixed $value1 , mixed $value2 [, mixed $... ] )

آرایه ای از مقادیر هم نوع یا تعدادی مقدار هم نوع

ترکیبی (وابسته به نوع داده ورودی) عددی یا رشته ای

1 آرایه یا تعداد دلخواه مقدار

پیدا کردن کمترین مقدار

float pi ( void )

ندارد

مقدارعدد پی

0

مقدارعدد پی

number pow ( number $base , number $exp )

عدد

نتیجه توان

2

توان عددی (پایه و نما)

int rand ( void )
int rand ( int $min , int $max )

بدون مقدار
با تعیین مقدار حداقل و حداکثر

یک عدد تصادفی

0
یا
2

با هر بار فراخوانی یک عدد تصادفی تولید می شود

float round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] )

عدد ممیزدار

یک عدد کامل ]یا اعشار با تعیین تعداد عدد بعد از ممیز precision [

1
تا
3

گرد کردن با تعیین تعداد ممیز شناور

float sqrt ( float $arg )

عدد ممیزدار

عدد ممیزدار

1

جذر با فرجه 2

void srand ([ int $seed ] )

بدون مقدار یا عدد تک مقداری

ندارد

0
یا
1

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

1-5-فرم ها
یکی از پرکاربردترین اشیاء HTML فرم ها می باشند که در واقع برای تبادل اطلاعات بین کاربران و سایت به صورت پویا مورد استفاده قرار می گیرد.برای درک بهتر این موضوع توجه شما را به یک مثال که ممکن است شما با آن سروکار داشته اید جلب می نمایم.
شما برای ثبت نام کنکور دانشگاه می بایست یکسری اطلاعات که شامل مشخصات فردی ، اطلاعات تحصیلی ، عکس و سایر موارد خواسته شده را در سایت سازمان سنجش وارد نموده و الی آخر.
حال می خواهیم بدانیم چگونه ما می توانیم یک صفحه طراحی نموده و چنین کاری را در سایت خود انجام دهیم.لازمه انجام چنین کاری دانستن ساختار ارسال و دریافت اطلاعات در یک صفحه وب می باشد که به 2 بخش تقسیم می شود :

  1. بخش نمایش فرم جهت دریافت اطلاعات
  2. بخش ثبت اطلاعات توسط کدهای PHP

برای این منظور ابتدا باید با ساختار فرم و گونه های اصلی فرم آشنا شویم.
معرفی فرم :
فرم یکی از اشیاء متداول HTML می باشد که با ساختار زیر در یک صفحه وب مشخص می گردد. تگ form معرف این شیء می باشد.
<form name="..." id="..." action="..." method="..." enctype= "..." target="...">

اشیاء مورد استفاده در فرم

</form>

خصوصیت

توضیح

کاربرد

جزئیات

پیش فرض

name / id

مشخص نمودن نام و شناسه فرم

Javascript

 

 

action

تعیین مسیر ارسال داده ها

مقصد مشخص می شود

 

صفحه ای که در آن نمایش داده می شد

method

نحوه ارسال اطلاعات

ارسال بصورت مخفی یا مشخص

POST , GET

GET

enctype

نحوه کد گذاری داده ها

برای ارسال اطلاعات بصورت متن ساده یا همراه با فایل ضمیمه

text/plain
multipart/form-data

text/plain

target

نحوه نمایش صفحه مقصد

در پنجره جدید
صفحه والد صفحه جاری
صفحه خودش
تمام صفحه مشابه _self

_blank
_parent
_self
_top

_self

اشیائی که می توان در فرم به کار برد : (جهت مطالعه جزئیات بیشتر می توانید به مطالب آشنایی با زبان HTML مراجعه نمایید)


نام شیء

توضیح

مثال

input

انواع ورودی شامل :
button  : کلید
checkbox  : چک باکس
file  : فایل
hidden
 : مخفی
image
 : تصویر
password
: رمز
radio
 : دکمه رادیویی
reset
 : نوسازی فرم
submit
 : ارسال
text
 : متنی

<input type="…" name="…" [value="…"] [checked] />
برای تعیین مقدار پیش فرض چک باکس و دکمه رادیویی از checked استفاده می شود.
در دکمه های رادیویی باید نام ثابت و مقدار تغییر کند با تعداد حداقل 2 تا.

select

انتخاب از بین چندین داده

<select>
  <option value="1">سبز</option>
  <option value="2" [selected]>آبی</option>
  <option value="3">بنفش</option>
</select>

textarea

تعیین محدوده نوشتاری متن بزرگ

<textarea rows="4" cols="50">…</ textarea>

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

			
<form method="post" action="b.php">
<label for="myname">نام :</label>
<input type="text" name="myname" id="myname" /><br />
<label for="myfamily">نام خانوادگی :</label>
<input type="text" name="myfamily" id="myfamily" /><br />
<input type="submit" value="ارسال" />
<input type="reset" value="نوسازی" />
</form>
			
		

 

توضیحات :
این فرم از 6 شیء تشکیل شده است.2 عدد برچسب (جهت زیبایی و مشخص بودن منظور طراح)، 2 عدد textbox (دریافت اطلاعات) ، کلید ارسال و کلید نوسازی.
در صورت کلیک نمودن دکمه نوسازی اطلاعات نوشته شده پاک شده و فرم خام می شود.(شکل سمت راست)

قسمت دوم : دریافت اطلاعات فرم
پس از پر کردن اطلاعات فرم و ارسال آنها نیاز به بررسی داده های ارسالی می باشد.برای این منظور در زبان PHP 3 روش پیشنهاد داده شده که به بررسی آنها می پردازیم.


کلیدواژه

توضیح

مثال

$_GET

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

داده ها پس از ارسال فرم به صورت زیر در آدرس مرورگر نمایش داده می شوند.(بر اساس مثال بالا)
b.php?myname=علیرضا&myfamily=بلوردی
نحوه دریافت :

			
$n = $_GET["myname"];
$f  = $_GET["myfamily"];

$_POST

داده ها بصورت POST ارسال می شوند

نحوه دریافت :

	
$n = $_POST["myname"];
$f  = $_POST["myfamily"];
	
	

$_REQUEST

نامشخص بودن نوع ارسال داده (قابل کاربرد برای دو مورد بالا)

نحوه دریافت :

	
$n = $_ REQUEST ["myname"];
$f  = $_ REQUEST ["myfamily"];
	
	

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

	
$n = "";
If(isset($_GET["myname"])
$n = $_GET["myname"];
	
	
روش دوم : احتمال وجود داده ارسالی
	
$n =  @$_GET["myname"];
	
	

در این حالت در صورت عدم وجود مقدار مورد نظر تهی جایگزین می شود و خطایی بوجود نمی آید.
نکته : جهت مشاهده اطلاعات ارسال شده توسط فرم به روش زیر می توان عمل کرد.
	
echo "<pre>";
print_r($_POST);
echo "</pre>";
	
	

عمومی

علیرضا بلوردی (برنامه نویس PHP)
سیرجان, کرمان
علیرضا بلوردی
ولی عصر, سیرجان, کرمان 7817645939
+989131789658
نمونه کارها و کامپوننتهای نوشته شده توسط علیرضا بلوردی برنامه نویس جوملا و PHP