Transcript PHP

1
www.aduelect.ir
Teaching
SOURCE:
Wrox Press - Professional PHP Programming
Programmers Introduction To PHP4
Computer Programming & Scripting - PHP - PHP and MySQL
Email: Reza [email protected]
www.aduelect.ir
‫جلسه اول‬
‫‪ Php‬چیست؟‬
‫نوشتن کدهای ‪ php‬وترکیب ‪ php‬و ‪html‬‬
‫اضافه کردن توضیحات به برنامه‬
‫انواع داده ها‬
‫تعریف متغیرها و ثابت ها‬
‫توابعی در مورد متغیر ها‬
‫عملگرها در ‪php‬‬
‫رشته ها یا ‪ string‬ها‬
‫‪www.aduelect.ir‬‬
‫‪ Php‬چیست؟‬
‫‪ Php‬یک زبان با امکانات باال و قدرتمند است که برای ساخت وب سایت های پویا‬
‫(‪ )dynamic‬بکار می رود‪.‬‬
‫ویژگی های ‪:PHP‬‬
‫‪.1‬این زبان قدرتمند به راحتی با ‪ HTML‬ادغام می شود و در فایل هایی که حاوی‬
‫دستورات ‪ HTML‬هستند نوشته می شود‪.‬‬
‫‪ .2‬کدهای ‪ php‬در سرویس دهنده اجرا می شوند‪.‬‬
‫‪.3‬برنامه های ‪ php‬به وسیله مرورگر وب اجرا می شوند که پس از اجرا شدن به وب‬
‫سایتی که برنامه های ‪ php‬قرار دارند رجوع می کند و پس از اجرای برنامه نتیجه ان‬
‫به مرورگر فرستاده می شود‪.‬‬
‫‪.4‬کدهای ‪ php‬را می توان بدون تغییرات در سیستم های عامل مختلف بکار برد‪.‬‬
‫‪www.aduelect.ir‬‬
‫‪.5‬ارتباط با بانکهای اطالعاتی مختلف‪.‬‬
‫‪.6‬حاوی توابع زیادی برای اجرای کارهای مربوط به وب است‪.‬‬
‫‪.7‬هزینه ای ندارد و به صورت رایگان می توان از ان استفاده کرد‪.‬‬
‫‪.8‬اموزش و بکارگیری ان ساده است و شبیه به زبان برنامه نویسی ‪ C‬می باشد و کسانی‬
‫که با زبان ‪ C,C++‬اشنا باشند به راحتی می توانند انرا فرا بگیرند‪.‬‬
‫‪ Php .9‬یک زبان ‪ loosely Typed‬است یعنی نیازی به تعریف متغیرها و تعیین نوع‬
‫داده ها نمی باشد در این زبان نوع داده ها و تغییر نوع دادها بر حسب نیاز و به صورت‬
‫خودکار انجام می شود‪.‬‬
‫‪www.aduelect.ir‬‬
‫نوشتن کدهای ‪: php‬‬
‫برای نوشتن کد های ‪ php‬شما باید از تگ های مشخص شده ‪ php‬استفاده کنید در واقع‬
‫دستورات ‪ php‬در این تگ ها نوشته می شوند و توسط این تگ های خاص کد های ‪php‬‬
‫شنا سایی می شوند‪.‬‬
‫کدهای ‪ php‬به ‪ 3‬روش نوشته می شوند‪:‬‬
‫>?‬
‫کدهای ‪php‬‬
‫?< ‪1.‬‬
‫>?‬
‫کدهای ‪php‬‬
‫‪2. <?php‬‬
‫>‪ </script‬کدهای ‪3. <script language=“php’’> php‬‬
‫نکته‪ :‬پایان هر دستور را باید با سمی کولن مشخص کنیم‪.‬‬
‫‪www.aduelect.ir‬‬
‫ روش اول‬:‫مثال‬
<?php
echo ‘ first programing with php ';
?>
‫ روش دوم‬:‫مثال‬
<?
echo ‘ first programing with php ';
?>
www.aduelect.ir
‫ روش سوم‬:‫مثال‬
<script language=“php”>
echo ‘ first programing with php ';
</script>
html ‫ و‬php ‫ ترکیب‬:‫مثال‬
<html>
<head>
<title>New website</title>
</head>
<body>
<?php
?>
</body>
</html>
www.aduelect.ir
: comment ‫اضافه کردن توضیحات به برنامه‬
:‫* استفاده کرد‬/‫ و‬# ‫ و‬// ‫برای اضافه کردن توضیحات می توان از سه دستور مختلف‬
<?php
echo ‘ first programing with php ';// comment
/* comment
comment
comment*/
echo ‘ first programing with php ';#comment
?>
www.aduelect.ir
‫انواع داده ها‪:‬‬
‫عدد اعشاری ( ‪ ) double‬برای ذخیره اعداد اعشاری‬
‫عدد صحیح ( ‪) integer‬‬
‫برای ذخیره اعداد صحیح‬
‫رشته ای ( ‪) string‬‬
‫برای ذخیره رشته ای‬
‫شی ( ‪) object‬‬
‫برای ایجاد اشیا‬
‫ارایه ( ‪) array‬‬
‫برای ذخیره مجموعه ای از مقادیر همنوع‬
‫‪www.aduelect.ir‬‬
‫تعریف متغیرها‪:‬‬
‫برای تعریف متغیر در ‪ php‬باید از ‪ $‬استفاده نمود به عبارتی نام متغیرها در ‪ php‬با‬
‫عالمت ‪ $‬شروع می شود بقیه کارکترها هم می توانند از حروف و اعداد باشند‪.‬‬
‫نکته ‪ php :1‬به حروف بزرگ و کوچک حساس است یعنی متغیری با نام ‪ $Amir‬با‬
‫متغیری به نام ‪ $amir‬متفاوت است و دو متغیر مجزا می باشند‪.‬‬
‫نکته ‪ :2‬اولین کارکتر بعد از ‪ $‬نباید عدد باشد به طور مثال تعریف متغیری به صورت‬
‫‪ $2tal‬غلط می باشد‪.‬‬
‫;‪$varname=info‬‬
‫مثال‪:‬‬
‫‪<?php‬‬
‫;'‪$name = 'amir‬‬
‫;'‪$fname = ' emadi‬‬
‫;‪echo $name‬‬
‫;‪echo $fname‬‬
‫>?‬
‫‪www.aduelect.ir‬‬
‫حذف متغیرها‪:‬‬
‫برای حذف متغیرها از دستور ‪ unset‬استفاده می شود‪.‬‬
‫مثال‪ :‬در دستورات زیر ابتدا ‪ 2‬متغیر با نام ‪ name‬و ‪ fname‬تعریف شده همانطور که‬
‫مشاهده می کنید دو دستور در خط ‪ 4‬و ‪ 5‬این دو متغیر را چاپ کرده اند سپس در خط ‪ 6‬با‬
‫دستور ‪ unset‬دو متغیر ‪ name‬و ‪ fname‬حذف شده اند ‪.‬‬
‫نکته‪:‬دستور ‪ echo‬در خط ‪ 7‬متغیر ‪ name‬را نمایش نمی دهد زیرا در خط ‪ 6‬این متغیر‬
‫حذف شده‪.‬‬
‫‪<?php‬‬
‫;'‪$name = 'amir‬‬
‫;'‪$fname = ' emadi‬‬
‫;‪echo $name‬‬
‫;‪echo $fname‬‬
‫;)‪Unset ($name , $fname‬‬
‫;‪Echo $name‬‬
‫>?‬
‫‪www.aduelect.ir‬‬
‫ثابت ها‪:‬‬
‫یک ثابت در واقع یک نام برای یک مقدار است به طوری که این مقدار ثابت در طول اجرای‬
‫برنامه قابل تغییر نیست و همچنین این مقادیر در سراسر برنامه قابل دسترسی می باشند‪.‬‬
‫برای تعریف ثابتها از تابع ‪ define‬استفاده می شود‪.‬‬
‫;)‪Define('id', 14‬‬
‫;)' ‪define('name','ali‬‬
‫توضیح‪:‬این دستور ثابتی با نام ‪ id‬با مقدار ‪ 14‬و ثابتی با نام ‪ name‬و مقدار ‪ ali‬بوجود‬
‫می اورد‪.‬‬
‫نکته‪ :‬در ثوابت مانند تعریف متغیر ها از ‪ $‬استفاده نمی شود‪.‬‬
‫مثال‪:‬‬
‫‪<?php‬‬
‫;)‪Define('id', 14‬‬
‫;)' ‪define('name','ali‬‬
‫;‪echo name‬‬
‫;‪echo id‬‬
‫>?‬
‫‪www.aduelect.ir‬‬
‫عملگرها‪:‬‬
‫عملگر در واقع نمادی می باشد که عمل خاصی را بر روی ‪ 2‬عملوند انجام می دهد‪.‬‬
‫عملگرهای محاسباتی‬
‫مثال‬
‫عملگر‬
‫نام‬
‫‪+‬‬
‫جمع‬
‫‪$a + $B‬‬
‫‪-‬‬
‫تفریق‬
‫‪$a - $B‬‬
‫*‬
‫ضرب‬
‫‪$a * $B‬‬
‫‪/‬‬
‫تقسیم‬
‫‪$a / $B‬‬
‫‪%‬‬
‫باقیمانده تقسیم‬
‫‪++‬‬
‫افزایش‬
‫‪--‬‬
‫کاهش‬
‫‪$a % $B‬‬
‫‪ ++$a‬یا ‪$a++‬‬
‫‪ --$a‬یا ‪$a--‬‬
‫‪www.aduelect.ir‬‬
‫عملگرهای مقایسه ای‬
‫مثال‬
‫عملگر‬
‫نام‬
‫==‬
‫تساوی‬
‫‪$a == $B‬‬
‫===‬
‫همانی‬
‫‪$a === $B‬‬
‫!=‬
‫نامساوی‬
‫‪$a =! $B‬‬
‫<>‬
‫نامساوی‬
‫‪$a <> $B‬‬
‫>‬
‫کوچکتر از‬
‫‪$a < $B‬‬
‫<‬
‫بزرگتر از‬
‫‪$a > $B‬‬
‫=>‬
‫کوچکتر یا مساوی‬
‫‪$a <= $B‬‬
‫=<‬
‫بزرگتر یا مساوی‬
‫‪$a >= $B‬‬
‫نکته‪ :‬در همانی تبدیل نوع صورت نمی گیرد ولی در تساوی ابتدا دو طرف به نوع‬
‫عددی تبدیل می شوند‪.‬‬
‫‪www.aduelect.ir‬‬
‫عملگرهای منطقی‬
‫عملگر نام‬
‫توضیح‬
‫مثال‬
‫)‪(NOT‬‬
‫‪!$x‬‬
‫نتیجه را عکس می کند به طور مثال ‪ false‬را به‬
‫‪ true‬تبدیل می کند‪.‬‬
‫&&‬
‫)‪َ(and‬‬
‫و‬
‫‪$x && $z‬‬
‫اگر هر دو عملوند درست باشد نتیجه درست است‬
‫در غیر این صورت غلط است‪.‬‬
‫||‬
‫یا )||(‬
‫‪$x || $z‬‬
‫‪and‬‬
‫)‪(AND‬‬
‫و‬
‫‪$x and $z‬‬
‫یا )‪(or‬‬
‫‪$x or $z‬‬
‫!‬
‫‪or‬‬
‫اگر یکی از دو عملوند درست باشد نتیجه درست‬
‫است و اگر هر دو غلط باشد نتیجه غلط است‪.‬‬
‫مانند && عمل می کند ولی دارای اولویت کمتری‬
‫است‪.‬‬
‫مانند || عمل می کند ولی دارای اولویت کمتری‬
‫است‪.‬‬
‫‪www.aduelect.ir‬‬
‫عملگرهای ترکیبی‬
‫عمل نام‬
‫گر‬
‫=‪ +‬انتساب جمع‬
‫معادل‬
‫مثال‬
‫‪$x += $z‬‬
‫‪$x= $x + $z‬‬
‫=‪ -‬انتساب تفریق‬
‫‪$x -= $z‬‬
‫‪$x= $x - $z‬‬
‫=* انتساب ضرب‬
‫‪$x *= $z‬‬
‫‪$x= $x * $z‬‬
‫=‪ /‬انتساب تقسیم‬
‫‪$x /= $z‬‬
‫‪$x= $x / $z‬‬
‫‪$x %= $z‬‬
‫‪$x= $x % $z‬‬
‫=‪ %‬انتساب باقیمانده تقسیم‬
‫‪www.aduelect.ir‬‬
‫توابعی در مورد متغیر ها‬
.‫ این تابع نوع متغیر را تعیین می کند‬:Gettype()
<?php
$test1="information";
echo gettype($test1);
$test2=34;
echo " <br> ";
echo gettype($test2);
?>
.‫ این تابع نوع متغیر را عوض می کند‬:Settype()
<?php
$test=23;
echo gettype($test);
echo " <br> ";
settype($test,'double');
echo gettype($test);
?>
www.aduelect.ir
‫رشته ها یا ‪ string‬ها و کار کردن با انها‬
‫در ‪ php‬دو نوع رشته وجود دارد‪:‬‬
‫‪ .1‬رشته هایی که در نقل قول دوتایی قرار می گیرند این رشته ها در ‪ php‬به عنوان‬
‫عبارت در نظر گرفته می شود و ارزیابی می گردد و رشته هایی که در نقل قول تکی‬
‫قرار می گیرند و در ‪ php‬مورد ارزیابی قرار نمی گیرند‪.‬‬
‫مثال‪:‬‬
‫‪<?php‬‬
‫;‪$a=36‬‬
‫;" ‪Echo "$a Rials‬‬
‫;'‪Echo '$a Rials‬‬
‫>?‬
‫توضیح‪:‬‬
‫در قسمتی که از نقل قول دو تایی استفاده شده عبارت ‪ 36 Rials‬چاپ می شود و در قسمتی‬
‫که از نقل قول تکی تایی استفاده شده عبارت ‪ $a Rials‬چاپ می شود و مورد ارزیابی قرار‬
‫نمی گیرد‪.‬‬
‫‪www.aduelect.ir‬‬
‫الحاق کردن رشته ها‪:‬‬
‫منظور از الحاق کردن رشته ها پیوند دادن انها با یکدیگر می باشد و یا به عبارتی ترکیب‬
‫کردن انها با یکدیگر می باشد و این عمل توسط عملگر نقطه (‪ ).‬انجام می شود‪.‬‬
‫مثال‪:‬‬
‫در این مثال ابتدا دو متغیر ‪ $a,$b‬مقدار دهی شدند سپس با استفاده از عملگر (‪).‬‬
‫با یکدیگر الحاق شدند و نتیجه در متغیر ‪ $c‬قرار گرفت و در نهایت با اجرا این دستورات‬
‫نتیجه الحاق شده با دستور ‪ echo‬نمایش داده می شود‪.‬‬
‫‪<?php‬‬
‫;" ‪$a="chalus‬‬
‫;"‪$b="city‬‬
‫;‪$c=$a.$b‬‬
‫;‪echo $c‬‬
‫>?‬
‫‪www.aduelect.ir‬‬
‫حذف فضای خالی رشته ها‪:‬‬
‫برای انجام مقایسه ها و یا گرفتن اطالعات از کاربر معموال فضا های خالی رشته ها را‬
‫حذف می کنند برای این کار از توابع زیر استفاده می کنیم‪.‬‬
‫تابع )(‪ trim‬این تابع فضای خالی سمت چپ و سمت راست رشته ای را حذف می کند‪.‬‬
‫;)‪trim($s‬‬
‫تابع )(‪ chop‬این تابع فضای خالی سمت راست رشته ای را حذف می کند‪.‬‬
‫;)‪chop($s‬‬
‫تابع )(‪ Itrim‬این تابع فضای خالی سمت چپ رشته ای را حذف می کند‪.‬‬
‫;)‪Itrim($s‬‬
‫‪www.aduelect.ir‬‬
‫جلسه دوم‬
‫طراحی فرم ها و پرسش نامه ها‬
‫کنترل های فرم‬
‫کنترل متنی‬
‫منوهای باز شونده‬
‫کنترل ‪check Box‬‬
‫دکمه های رادیویی ‪radio button‬‬
‫دستورات شرطی و ساختارهای تصمیم گیری‬
‫دستور ‪if‬‬
‫دستور ‪else if‬‬
‫‪www.aduelect.ir‬‬
‫طراحی فرم ها و پرسش نامه ها‬
‫یکی از مهمترین ابزاری که در صفحات وب از ان استفاده می شود فرم ها می باشند که نقش‬
‫مهمی در صفحات وب دارند و کاربردهای گوناگونی دارند و برای ارتباط برقرار کردن با‬
‫کاربران و گرفتن اطالعات از انان با توجه به اطالعاتی که به ان نیاز داریم و خدماتی که در ان‬
‫صفحه وب ارائه می شود مورد استفاده قرار می گیرند‪.‬برای ایجاد فرم از دستور >‪<form‬‬
‫استفاده می شود که به نحوه استفاده و ساختار ان می پردازیم‪.‬‬
‫دستور >‪<form‬‬
‫برای ایجاد فرم از دستور >‪ <form‬و >‪ </form‬استفاده می شود فرم ها دارای عناصر‬
‫دیگری مانند منوهای بازشونده و فیلدهای متنی و دکمه های رادیویی و‪ ..‬نیز هستند‪.‬‬
‫مثال‪:‬‬
‫>"‪<form name"form1" method = "POST" action = "test.php‬‬
‫>‪</form‬‬
‫توضیح‪ :‬این دستور فرمی را به نام ‪ form1‬بوجود می اورد که اطالعاتش را به فایلی به نام‬
‫‪ test.php‬ارسال می کند و روش ارسال اطالعات در این فرم ‪ post‬می باشد‪.‬‬
‫در قسمت ‪ action‬ادرس برنامه ای را وارد می کنیم که باید اطالعات فرم را دریافت کند و‬
‫پردازش کند و قسمت متد ‪ method‬نیز روش ارسال فرم را تعیین می کند که ان را بیشتر مورد‬
‫بررسی قرار می دهیم‪.‬‬
‫‪www.aduelect.ir‬‬
‫توضیح انواع متد ‪: method‬‬
‫متد مشخص می کند که فرم ها چگونه به ادرسی که توسط صفت ‪ action‬تعیین شده‬
‫ارسال شود‪.‬برای این صفت می توان دو مقدار ‪ get‬و ‪ post‬را قرار داد‪.‬‬
‫در واقع ‪ get‬و ‪ post‬متدهای ‪ html‬هستند که برای ارتباط بر قرار کردن با سرور از‬
‫انها استفاده می شود‪.‬‬
‫نکته‪:‬اگر صفت متد توسط شما تعیین نشود این صفت به صورت پیش فرض ‪ get‬تنظیم‬
‫می شود‪.‬‬
‫متد ‪:GET‬‬
‫تنظیم صفت متد به صورت ‪ GET‬باعث می شود که اطالعات وارد شده به انتهای‬
‫ادرسی که در ‪ action‬تعیین شده افزوده شود و ارسال گردد‪.‬‬
‫متد ‪: POST‬‬
‫در صورتی که از متد ‪ post‬استفاده کنید دیگر اطالعات وارد شده در ادرس ‪URL‬‬
‫نمایش داده نمی شود‪ .‬در این روش می توان داده بیشتری را ارسال نمود در صورتی که‬
‫در متد ‪ GET‬به دلیل اینکه اطالعات در انتهای ادرس ‪ URL‬قرار می گیرد محدودیت‬
‫وجود دارد‪.‬‬
‫‪www.aduelect.ir‬‬
‫دکمه های ‪ Reset‬و ‪Submit‬‬
‫مقدار ‪ reset‬دکمه ای را ایجاد می کند که کاربر می تواند توسط ان محتویات فرم را پاک کند‪.‬‬
‫مقدار ‪ submit‬دکمه ای ایجاد می کند که که به وسیله ان محتویات فرم به ادرسی که در صفت‬
‫‪ action‬مشخص شده ارسال می شود‪.‬‬
‫توضیح‪ :‬در قسمت ‪ type‬نوع ان را ‪ submit‬یا ‪ reset‬تعیین می کنیم و در قسمت ‪value‬‬
‫عنوان این دکمه را تعیین می کنیم‪.‬‬
‫>"‪<input type="submit" value="send‬‬
‫>"‪<input type="reset" value="reset‬‬
‫‪www.aduelect.ir‬‬
‫کنترل های فرم‬
‫کنترل متنی‪ :‬جعبه های متنی از جمله کنترل هایی هستند که طول انها یک خط است و در‬
‫اغلب فرم های ‪ html‬به کار می روند که کاربران می توانند در ان عبارتی را تایپ کنند به‬
‫طور مثال نام افراد در ان وارد می شود‪ .‬برای ایجاد کنترل متنی از دستور ‪ input‬استفاده‬
‫می شود که مقدار صفت ‪ type‬ان را ‪ text‬قرار می دهیم‪.‬‬
‫مثال‪:‬‬
‫>"‪<input type="text" name="name" size= "50‬‬
‫فیلد متنی چند خطی‪:‬‬
‫در مواقعی که نیاز می شود تا کاربر متن چند خطی در فرم وارد کند از فیلد متنی چند خطی‬
‫استفاده می شود‪.‬‬
‫مثال‪:‬‬
‫>"‪<textarea rows="6" cols="20" name="textarea‬‬
‫‪Please enter your address‬‬
‫>‪</textarea‬‬
‫توضیح‪:‬‬
‫در این دستور برای تعیین تعداد سطر های متن از صفت ‪ rows‬و برای تعیین تعداد ستونها‬
‫از از صفت ‪ cols‬استفاده می شود‪.‬‬
‫‪www.aduelect.ir‬‬
‫ این دستورات فرمی را ایجاد می کند که نام را از طریق جعبه متنی دریافت می کند و‬:‫مثال‬
.‫ ارسال می کند‬2.php ‫اطالعات را به فایل‬
<html>
<head>
<title>New document</title>
</head>
<body>
<form method = "GET" action = "http://localhost/form/2.php">
who is your best friend?
<input name="friend" type="text">
<br>
<input type="submit" value="submit">
</form>
<?php
?>
</body>
</html>
www.aduelect.ir
‫>‪<html‬‬
‫>‪<head‬‬
‫>‪<title>New document</title‬‬
‫>‪</head‬‬
‫>‪<body‬‬
‫=‪your friend‬‬
‫‪<?php‬‬
‫;]"‪echo $_GET["friend‬‬
‫>?‬
‫>‪</body‬‬
‫>‪</html‬‬
‫توضیح‪:‬‬
‫این دستورات فایل دیگری را به وجود می اورند تا اطالعات را از فرم ایجاد شده دریافت‬
‫کند و ان را به همراه یک جمله نمایش دهد‪.‬‬
‫‪www.aduelect.ir‬‬
‫منوهای باز شونده‬
‫برای ایجاد منوهای باز شونده از دستور >‪ <select‬و >‪ </select‬استفاده می شود‬
‫این دستور شامل یک یا چند ‪ option‬است که گزینه های منو باز شونده را تعیین می کند‪.‬‬
‫مثال‪:‬‬
‫"‪<select name="type‬‬
‫‪<option>programing‬‬
‫‪<option >networking‬‬
‫‪<option >graphic‬‬
‫>‪<option >learning</option‬‬
‫‪www.aduelect.ir‬‬
‫ قرار دارد و کاربر می تواند‬list box ‫ این دستورات فرمی را ایجاد می کند که در ان یک‬:‫مثال‬
.‫ ارسال می شود‬2.php ‫این اطالعات به فایل‬.‫از طریق ان یک عدد را انتخاب کند‬
<html>
<head>
<title>New document</title>
</head>
<body>
<form method = "POST" action = "http://localhost/listbox/2.php">
please select one number...
<br>
<br>
<select name="select">
<option >21
<option >31
<option >41
</select>
<br>
<br>
<input type="submit" value= "send">
</form>
</body>
</html>
www.aduelect.ir
‫>‪<html‬‬
‫>‪<head‬‬
‫>‪<title>New document</title‬‬
‫>‪</head‬‬
‫>‪<body‬‬
‫‪<?php‬‬
‫;"‪echo "your select is :$_POST[select]\n‬‬
‫>?‬
‫>‪</body‬‬
‫>‪</html‬‬
‫توضیح‪:‬‬
‫این دستورات فایل دیگری را به وجود می اورند تا اطالعات را از فرم ایجاد شده دریافت‬
‫کند و ان را به همراه یک جمله نمایش دهد‪.‬‬
‫‪www.aduelect.ir‬‬
check Box ‫کنترل‬
‫ این امکان را‬checkbox ‫ کنترل‬.‫ ایجاد می شود‬input ‫این کنترل نیز با استفاده از دستور‬
‫ایجاد می کند تا کاربر بتواند برای تایید مسئله ای بر روی ان کلیک کند و ان را فعال کند و یا‬
.‫برای عدم تایید ان را غیر فعال کند‬
:‫مثال‬
<html>
<head>
<title>New document</title>
</head>
<body>
<form method="POST" action="http://localhost/checkbox/2.php">
are u over 18 years old?
<input name="choice" type="checkbox">
<br>
<input type="submit" value="send">
</form>
</body>
</html>
www.aduelect.ir
‫>‪<html‬‬
‫>‪<head‬‬
‫>‪<title>New document</title‬‬
‫>‪</head‬‬
‫>‪<body‬‬
‫‪<?php‬‬
‫;]"‪echo $_POST["choice‬‬
‫>?‬
‫>‪</body‬‬
‫>‪</html‬‬
‫توضیح‪:‬‬
‫این دستورات فایل دیگری را به وجود می اورند تا اطالعات را از فرم ایجاد شده دریافت‬
‫کند و ان را به همراه یک جمله نمایش دهد‪.‬‬
‫‪www.aduelect.ir‬‬
‫دکمه های رادیویی ‪radio button‬‬
‫این کنترل نیز شبیه کنترل ‪ checkbox‬است با این تفاوت که در فرمها باید از چندین دکمه‬
‫رادیویی تنها یکی را کلیک کرده وانتخاب کنیم‪.‬معموال زمانی بکار برده می شود که کاربر باید‬
‫از چند گزینه یکی را انتخاب کند‪.‬‬
‫مثال‪:‬‬
‫>"‪<input name="R1" type="radio" value="first‬‬
‫شما می توانید با دستور زیر برای دکمه رادیویی انتخاب پیش فرض تعیین کنید یعنی قبل از‬
‫اینکه کاربر یکی از دکمه های رادیویی را کلیک کند یکی از انها در حالت انتخاب شده باشد‪.‬‬
‫>‪<input name="R2" type="radio" value="second" checked‬‬
‫نکته‪:‬‬
‫شما می توانید در یک فرم چندین دکمه رادیویی با نام یکسان به وجود اورید و کاربر در جواب فقط‬
‫می تواند یکی از انها را انتخاب کند‪.‬‬
‫‪www.aduelect.ir‬‬
‫ دکمه رادیویی همنام می باشد که کابر می‬3 ‫ این دستورات فرمی را ایجاد می کند که دارای‬:‫مثال‬
.‫ ارسال می شود‬2.php ‫تواند یکی از انها را انتخاب کند سپس اطالعات به فایل‬
<html>
<head>
<title>New document</title>
</head>
<body>
<form method ="GET" action ="http://localhost/radiobutton/2.php">
select the best software company....
<br>
<br>
<input name="R" type="radio" value="microsoft"> microsoft <br>
<input name="R" type="radio" value="Adobe" > Adobe <br>
<input name="R" type="radio" value="GolsarGroup" checked >GolsarGroup<br>
<br>
<input type="submit" value="send">
</body>
</html>
www.aduelect.ir
<html>
<head>
<title>New document</title>
</head>
<body>
<?php
echo "the best company is GolsarGroup but you choose: $_GET[R]";
?>
</body>
</html>
:‫توضیح‬
‫این دستورات فایل دیگری را به وجود می اورند تا اطالعات را از فرم ایجاد شده دریافت‬
.‫کند و ان را به همراه یک جمله نمایش دهد‬
www.aduelect.ir
<html>
.‫ایجاد یک فرم سفارش با دستوراتی که خواندید‬
<head>
<title>New document</title>
</head>
<body>
<form method = "POST" action = "http://localhost/program1/2.php">
please enter the quantity..<br>
<br>
C++ <input name="c++" type="text">
<br>
adobe photoshop<input name="adobephotoshop" type="text">
<br>
Qbasic<input name="Qbasic" type="text">
<br>
<input type="submit" value="submit">
<input type="reset" value="reset">
</form>
<?php
?>
</body>
www.aduelect.ir
</html>
<html>
<head>
<title>New document</title>
</head>
<body>
<?php
$sum=$_POST['c++'] + $_POST['adobephotoshop'] + $_POST['Qbasic'];
$price=$_POST['c++']*1500 + $_POST['adobephotoshop']*6000 + $_POST['Qba
echo 'Quantity:'.$sum.'<br>';
echo 'price:'.$price;
?>
</body>
</html>
:‫توضیح‬
‫این دستورات فایل دیگری را به وجود می اورند تا اطالعات را از فرم ایجاد شده دریافت‬
‫کند و این اطالعات را پردازش کند و خروجی را که قیمت کل و تعداد کتابها می باشد را‬
.‫نمایش دهد‬
www.aduelect.ir
‫دستور ‪: if‬‬
‫یکی از دستوراتی که در صفحات وب برای گرفتن تصمیم بکار می رود دستور تصمیم گیری ‪if‬‬
‫می باشد‪.‬‬
‫روش اول‪:‬‬
‫) شرط ( ‪If‬‬
‫}‬
‫;دستورات‬
‫}‬
‫روش دوم‪:‬‬
‫) شرط ( ‪If‬‬
‫{‬
‫;دستورات‬
‫}‬
‫‪www.aduelect.ir‬‬
‫‪Else‬‬
‫{‬
‫;دستورات‬
‫}‬
<html>
<head>
<title>New document</title>
</head>
<body>
<form method= "POST" action ="http://localhost/program2/2.php">
please enter the quantity...<br>
<br>
C++ <input name="c++" type="text">
<br>
adobe photoshop<input name="adobephotoshop" type="text">
<br>
Qbasic<input name="Qbasic" type="text">
<br>
<input type="submit" value="submit">
<input type="reset" value="reset">
</form>
<?php
?>
</body>
www.aduelect.ir
</html>
:‫مثال‬
<html>
<head>
<title>New document</title>
</head>
<body>
<?php
$sum=$_POST['c++'] + $_POST['adobephotoshop'] + $_POST['Qbasic'];
$price=$_POST['c++']*1500 + $_POST['adobephotoshop']*6000 +
$_POST['Qbasic']*3500;
if ($price>5000)
{
$takhfif=$price-100;
}
else
{
$takhfif=0;
$price=$price-$takhfif;
}
echo 'Quantity:'.$sum.'<br>';
echo 'price:'.$price.'<br>';
echo 'takhfif:'.$takhfif;
?>
</body>
www.aduelect.ir
</html>
‫تعریف جدول‬
‫برای تعریف جدول در ‪ html‬از دستور >‪ </table> <table‬استفاده می کنیم که‬
‫سطرهای ان با دستور >‪ </tr> <tr‬مشخص می شود و همچنین عنوان ها توسط‬
‫دستور >‪ </th> <th‬و اطالعات درون خانه های جدول توسط دستور >‪</td‬‬
‫>‪<body‬‬
‫>‪ <td‬مشخص می شود‪.‬‬
‫>"‪<table border="1" width="100%" height="131‬‬
‫>‪<tr‬‬
‫>‪<td>1</td‬‬
‫>‪<td>2</td‬‬
‫>‪<td>3</td‬‬
‫>‪</tr‬‬
‫>‪<tr‬‬
‫>‪<td>4</td‬‬
‫>‪<td>5</td‬‬
‫>‪<td>6</td‬‬
‫>‪</tr‬‬
‫>‪<tr‬‬
‫>‪<td>7</td‬‬
‫>‪<td>8</td‬‬
‫>‪<td>3</td‬‬
‫>‪</tr‬‬
‫‪www.aduelect.ir‬‬
‫>‪</table‬‬
‫‪43‬‬
‫>‪</body‬‬
‫تمرین‪:‬‬
‫الف) برنامه ای بنویسید که در یک صفحه وب فرمی را ایجاد کند که در ان نام کتابهایی لیست شود‬
‫و برای هر کدام جعبه متنی تعریف کنید تا کاربر بتواند تعداد کتاب هایی را که نیاز دارد در ان‬
‫وارد کند و اطالعات گرفته شده را به فایلی ارسال کنید‪.‬‬
‫ب) برنامه ای بنویسید و صفحه وبی به وجود اورید که اطالعاتی را که از فرم طراحی شده در‬
‫الف ارسال شده را دریافت کند و نام کتابها و مجموع تعداد کتابهای انتخاب شده توسط کاربر را‬
‫چاپ نماید و همچنین برای هر کتاب قیمتی در نظر بگیرید و مجموع قیمت را نیز محاسبه کنید و‬
‫به همراه مجموع تعداد کتاب ها ؛ مجموع قیمت را نیز چاپ کند‪.‬‬
‫ج) در فایل دوم که در قسمت ب ایجاد کردید دستوراتی بنویسید که در صورتی که کاربر بیش از‬
‫‪ 5‬کتاب را انتخاب نمود و مجموع بهایی که باید بپردازد بیش از ‪ 10000‬تومان بود برای کاربر‬
‫‪ 2000‬تومان تخفیف در نظر بگیرید در نهایت مجموع پول پرداختی را با تخفیف نمایش دهید‪.‬‬
‫‪www.aduelect.ir‬‬
‫جلسه سوم‬
‫دستور ‪switch‬‬
‫دستور ‪while‬‬
‫دستور ‪do while‬‬
‫دستور ‪for‬‬
‫دستور ‪break , continue , exit‬‬
‫آرایه ها‬
‫تابع چیست؟‬
‫تعریف و فراخوانی تابع‬
‫‪www.aduelect.ir‬‬
‫دستور ‪switch‬‬
‫در بعضی مواقع نیاز داریم تا تساوی متغیری را با چندین متغیر بررسی کنیم و با توجه با‬
‫تساوی متغیر مورد نظر با یکی از مقادیر دستور خاصی را اجرا کنیم ساختار دستور ‪switch‬‬
‫به صورت زیر است‪:‬‬
‫)‪Switch (variable‬‬
‫{‬
‫‪Case 1:‬‬
‫‪…statments‬‬
‫;‪Break‬‬
‫‪Case 2:‬‬
‫‪…statements‬‬
‫;‪Break‬‬
‫‪Case 3:‬‬
‫‪…statements‬‬
‫;‪Break‬‬
‫‪Default:‬‬
‫‪…statements‬‬
‫;‪Break‬‬
‫}‬
‫‪www.aduelect.ir‬‬
<html>
.‫ دستور مناسب اجرا می شود‬$name ‫ با توجه به مقدار متغیر‬:‫مثال‬
<head>
</head>
<body>
<?php
$name="nina";
switch ($name)
{
case 'ali' :
echo '<p> your name is ali.<p>';
break;
case 'amir' :
echo '<p> your name is amir.<p>';
break;
case 'nina' :
echo '<p> your name is nina.<p>';
break;
default:
echo '<p> what is your name?.<p>';
break;
}
?>
</body>
www.aduelect.ir
</html>
‫ این دستورات صفحه ای را ایجاد می کند که کاربر در ان از یک منوی باز شونده از‬:‫مثال‬
.‫بین چند گزینه ؛ گزینه ای را انتخاب می کند که از طریق ان با سایت اشنا شده است‬
<html>
<head>
<title>New document</title>
</head>
<body>
<form action="http://localhost/switch/2.php" method=post>
<h5> please select a level for our site </h5>
<select name = "level">
<option value = "a"> BAD
<option value = "b"> Good
<option value = "c"> Very Good
<option value = "d"> excellent
</select
</form>
<br>
<br>
<input type="submit" value= "send">
</form>
</body>
</html></html>
www.aduelect.ir
<html>
<body>
:‫توضیح‬
<?php
‫این دستورات فایل دیگری را به وجود می اورند تا اطالعات‬
switch ($_POST['level'])
‫را از فرم ایجاد شده دریافت کند و این اطالعات را پردازش کند‬
{
.‫ چاپ کند‬switch ‫و پیغام مناسب را با توجه به انتخاب کاربربا دستور‬
case 'a' :
echo '<p> BAD <p>';
break;
case 'b' :
echo '<p> GOOD <p>';
break;
case 'c' :
echo '<p> Very Good <p>';
break;
case 'd' :
echo '<p> excellent <p>';
break;
default:
echo '<p> you dident choice! <p>';
break;
}
?>
</body>
www.aduelect.ir
</html>
‫ساختار های تکرار‬
‫در بسیاری از موارد دستورات ماهیت تکراری دارند و برای پیاده سازی انها به ساختارهای‬
‫تکرار نیاز داریم‪ .‬در ‪ php‬سه نوع ساختار تکرار به نام های ‪while , do while , for‬‬
‫وجود دارند ‪.‬‬
‫دستور ‪while‬‬
‫یکی از ساختارهای تکرار در ‪ php‬حلقه تکرار ‪ while‬می باشد و زمانی مورد استفاده قرار‬
‫می گیرد که تعداد دفعات اجرای دستورات مشخص نیست‪.‬‬
‫)شرط( ‪While‬‬
‫{‬
‫;‪Statement1‬‬
‫…‬
‫;‪Statement2‬‬
‫}‬
‫توضیح‪:‬‬
‫ابتدا شرطی که تعیین شده مورد بررسی قرار می گیرد و در صورت درست بودن دستورات‬
‫داخلی ساختار ‪ while‬اجرا می شود و بعد از اجرای دستورات دوباره شرط بررسی می شود‬
‫و در صورت درست بودن دوباره دستورات اجرا می شود و اگر شرط برقرار نباشد برنامه‬
‫از حلقه خارج می شود‪.‬‬
‫‪www.aduelect.ir‬‬
‫مثال‪ :‬این برنامه مقدار بنزین مصرفی خودرو پراید را از ‪ 0‬تا ‪ 1000‬کیلومتر را بر حسب لیتر نمایش می دهد‪.‬‬
‫‪<?php‬‬
‫;‪$km =100‬‬
‫) ‪while ($km <= 1000‬‬
‫{‬
‫;‪echo $km‬‬
‫;">==" ‪echo‬‬
‫;‪$litr=$km / 100‬‬
‫;‪$litr=$litr * 7‬‬
‫;‪echo $litr‬‬
‫;'>‪echo '<br‬‬
‫;‪$km=$km + 100‬‬
‫}‬
‫>?‬
‫‪www.aduelect.ir‬‬
‫دستور ‪do while‬‬
‫این دستور نیز مانند دستور ‪ while‬است تفاوت ان در بررسی شرط است در دستور ‪while‬‬
‫ابتدا شرط بررسی می شد و دستورات اجرا می شد در صورتی که در ‪ do- while‬ابتدا‬
‫یکبار دستورات اجرا می شود سپس شرط مورد بررسی قرار می گیرد اگر شرط برقرار بود‬
‫حلقه ادامه پیدا می کند در غیر اینصورت برنامه از حلقه خارج می شود‪.‬‬
‫‪do‬‬
‫{‬
‫;‪Statement1‬‬
‫‪.‬‬
‫‪.‬‬
‫;‪Statement2‬‬
‫‪.‬‬
‫‪.‬‬
‫) شرط ( ‪} While‬‬
‫‪www.aduelect.ir‬‬
‫دستور ‪for‬‬
‫این دستور معموال زمانی بکار برده می شود که تعداد دفعات تکرار مشخص باشد‪.‬در دستور ‪for‬‬
‫یک شمارنده وجود دارد که تعداد دفعات تکرار دستورات را شمارش می کند و شمارنده نام دارد‪.‬‬
‫)‪For ($i=0;$i<10;$i++‬‬
‫{‬
‫‪.‬‬
‫‪.‬‬
‫‪Statements‬‬
‫‪.‬‬
‫‪.‬‬
‫}‬
‫‪www.aduelect.ir‬‬
‫ این دستورات فرمی را ایجاد می کند و از کاربر تعداد تخصص های او را سوال می کند و با توجه به تعداد‬:‫مثال‬
.‫ نمایش می دهد تا او مهارتهای خود را در ان وارد کند‬textbox ‫مهارتهای کاربر برای او‬
<htmL>
<body>
<form method = post action ="http://localhost/for/2.php">
How many PROFICIENCY do you have?
<input name ="a" type="Text" size="4">
<br>
<br>
<input type = submit value="send">
<br>
</form>
</body>
</html>
www.aduelect.ir
<html>
<body>
<?php
$Num = $_POST['a'];
for ($counter=0; $counter < $Num; $counter++)
{
echo "<br><br> Please enter the name of your PROFICIENCY:
<br>";
echo "<input name = b type = text>";
}
?>
<br>
<br>
</body>
:‫توضیح‬
</html>
‫این دستورات فایل دیگری را به وجود می اورند تا اطالعات را از فرم ایجاد شده دریافت‬
‫کند و این اطالعات را پردازش کند و با توجه به مقداری که کاربر در فرم وارد کرده‬
.‫ ایجاد می کند‬textbox
www.aduelect.ir
‫دستور ‪break‬‬
‫این دستور برای خروج از حلقه بکار می رود همانطور که مشاهده کردید در دستور ‪ switch‬نیز‬
‫مورد استفاده قرار گرفت‪.‬‬
‫دستور ‪exit‬‬
‫این دستور زمانی استفاده میشود که می خواهید اجرای برنامه را متوقف کنید بطور مثال زمانی که‬
‫خطایی رخ می دهد‪.‬‬
‫‪www.aduelect.ir‬‬
:‫مثال‬
‫این دستورات برنامه ای را ایجاد می کند که از کاربر مقدار سن او را میگیرد و اگر سن او‬
‫ سال باشد به او اعالم می کند سنش از حد مجاز خارج هست وبرنامه خاتمه‬100 ‫بیشتر از‬
.‫میابد‬
<htmL>
<body>
<form action="http://localhost/exit/2.php" method=post>
name
<input type="text" name="name" size="3">
age
<input type="text" name="age" size="3">
<input type="submit" value="send">
</form>
</body>
</html>
www.aduelect.ir
<html>
<body>
<?php
$a = $_POST['age'];
$n = $_POST['name'];
if ($a < 1 || $a > 100 )
{
echo "Age $a is out of range";
exit;
}
else
echo "Age $a is in range";
echo "<br> Name is $n and Age is $a";
?>
</body>
</html>
www.aduelect.ir
‫تمرین‪:‬‬
‫صفحه ای را طراحی کنید که فرمی مانند فرم زیر در ان قرار داشته باشد این اطالعات را به فایلی دیگر‬
‫ارسال کنید تا مورد پردازش قرار گیرد‪.‬‬
‫سپس با توجه به مسافتی که کاربر تعیین کرده و با فرض اینکه هر‬
‫‪ 100‬کیلومتر به ‪ 7‬لیتر بنزین نیاز داریم محاسبه نمایید که برای‬
‫طی کردن مسافت تعیین شده چه مقدار بنزین نیاز داریم و در نهایت‬
‫مشخصات کاربر و بنزین مصرفی را چاپ کنید‪.‬‬
‫‪www.aduelect.ir‬‬
‫آرایه ها‬
‫در برنامه های قبلی که نوشتیم برای ذخیره داده ها از متغیر ها استفاده می کردیم که تنها یک مقدار‬
‫را در خود ذخیره می کردند‪ .‬حال ساختار ارایه ها را مرور می کنیم و طریقه استفاده از ان را شرح‬
‫می دهیم‪.‬‬
‫هر ارایه دارای چند عنصر است که هر عنصر می تواند حاوی مقداری باشد در ‪ php‬ارایه ها به‬
‫دو دسته تقسیم می شوند‪:‬‬
‫‪ .1‬ارایه های با اندیس عددی‬
‫‪ .2‬ارایه ها با اندیس انجمنی‬
‫ارایه با اندیس عددی ارایه ای می باشد که برای دستیابی به عناصر ان ها از یک اندیس عددی‬
‫استفاده می شود و ارایه های انجمنی ارایه ای می باشد که اندیس دستیابی به عناصر ارایه می تواند‬
‫غیر عددی باشد‪.‬‬
‫‪www.aduelect.ir‬‬
‫در ارایه با اندیس عددی برای دستیابی به عناصر ارایه از یک اندیس عددی استفاده می شود‬
‫اولین اندیس ارایه در ‪ php‬صفر است‪.‬‬
‫مثال‪ :‬اگر ‪ $test‬یک ارایه با طول ‪ 6‬باشد عناصر ان به صورت زیر خواهد بود‪.‬‬
‫]‪$test[0] $test[1] $test[2] $test[3] $test[4] $test[5‬‬
‫‪10‬‬
‫‪9‬‬
‫‪8‬‬
‫‪7‬‬
‫‪5‬‬
‫‪6‬‬
‫‪$test‬‬
‫برای ایجاد ارایه از دستور ‪ array‬استفاده می کنیم‪.‬‬
‫;)‪$test=array(5,6,7,8,9,10‬‬
‫با دستور انتساب نیز می توان ارایه تعریف کرد و به عناصر ارایه مقدار داد‪.‬‬
‫‪www.aduelect.ir‬‬
‫;‪$test[0]=5‬‬
‫;‪$test[1]=6‬‬
‫;‪$test[2]=7‬‬
‫;‪$test[3]=8‬‬
‫;‪$test[4]=9‬‬
‫;‪$test[5]=10‬‬
‫برای بازیابی و مشاهده مقادیر از ارایه نیز به صورت زیر عمل می کنیم‪:‬‬
‫;]‪echo $test[0‬‬
‫;]‪echo $test[1‬‬
‫;]‪echo $test[2‬‬
‫حلقه تکرار و ارایه‬
‫برای دستیابی به عناصر ارایه از اندیس استفاده می شود چون در ارایه با اندیس عددی؛ اندیس ها‬
‫به صورت دنباله ای از اعداد می باشند با یک حلقه تکرار می توان به سادگی به تمام عناصر ارایه‬
‫دست یافت‪.‬‬
‫‪<?php‬‬
‫;)‪$test=array(5,6,7,8,9,10‬‬
‫)‪for ($i=0;$i<6;$i++‬‬
‫{‬
‫;"]‪echo "$test[$i‬‬
‫;" >‪echo " <br‬‬
‫}‬
‫>?‬
‫‪www.aduelect.ir‬‬
.‫ نیز می توان مقادیر را از ارایه بازیابی نمود‬while ‫با استفاده از دستور‬
<?php
$test=array(5,6,7,8,9,10);
$i=0;
while ($i<6)
{
echo "$test[$i]";
echo " <br> ";
$i++;
}
?>
www.aduelect.ir
‫در این صفحه کاربر مشخصات خود را در فرم وارد می کند و این مشخصات در ارایه‬:‫مثال‬
<htmL>
.‫ ارسال می شود‬2.php ‫ قرار می گیرد و به صفحه‬info
<body>
<form method = post action ="2.php">
name:
<input name =" info[] " type="Text" size="10">
<br>
<br>
family:
<input name =" info[] " type="Text" size="10">
<br>
<br>
email:
<input name =" info[] " type="Text" size="30">
<br>
<br>
<input type = submit value="Send">
<br>
</form>
</body>
</html>
www.aduelect.ir
‫صفحه دوم‪ :‬در این صفحه اطالعات وارد شده در صفحه اول دریافت شده و از ارایه ‪info‬‬
‫بازیابی می شود و سپس چاپ می شود‪.‬‬
‫‪<?php‬‬
‫;]'‪$info = $_POST['info‬‬
‫)‪for ($i=0; $i < 3; $i++‬‬
‫{‬
‫;"]‪echo "$info[$i‬‬
‫;" >‪echo " <br‬‬
‫}‬
‫>?‬
‫‪www.aduelect.ir‬‬
‫تابع چیست؟‬
‫اگر شما برنامه ای بنویسید که در چندین قسمت برای انجام کاری از کدهای تکراری‬
‫استفاده کنید اینکار باعث نوشتن کدهای اضافی می شود و عالوه بر اینکه شما برای‬
‫نوشتن انها زمان بیشتری نیاز دارید ؛ اینکار باعث پیچیدگی برنامه می شود‪.‬‬
‫برای باال بردن سطح خوانایی برنامه؛ برنامه را به چندین قسمت کوچک تبدیل می کنند‬
‫که به ان تابع گفته می شود و هر جا که برنامه نویس به تابع خاصی نیاز داشته باشد‬
‫انرا فراخوانی می کند و تابع اطالعاتی را تحت عنوان ارگمان دریافت می کند و‬
‫محاسباتی بر روی ان انجام می دهد و خروجی را تحویل می دهد و نیازی به نوشتن‬
‫دوباره دستورات نیست‪.‬‬
‫مزایای استفاده از تابع‪:‬‬
‫‪.1‬می توان یک برنامه بزرگ را که برای نوشتن ان به زمان زیادی نیاز است ؛ به‬
‫توابع مختلف تقسیم کرد و چندین برنامه نویس با هم همکاری کنند‪.‬‬
‫‪.2‬توابع یکبار نوشته می شوند و چندین بار مورد استفاده قرار می گیرند‪.‬‬
‫‪.3‬رفع خطاهای برنامه سریع تر و راحت تر انجام می گیرد‪.‬‬
‫‪.4‬طراحی و پیاده سازی توابع راحت تر و ساده تر است‪.‬‬
‫‪www.aduelect.ir‬‬
‫انواع توابع ‪:‬‬
‫‪.1‬توابعی که که به صورت اماده در ‪ php‬وجود دارند‪.‬‬
‫‪.2‬توابعی که توسط کاربران با توجه به نیازیشان می نویسند‪.‬‬
‫نحوه تعریف تابع‪:‬‬
‫)ارگومان( ‪Function function-name‬‬
‫{‬
‫;‪Statements‬‬
‫;‪Return‬‬
‫}‬
‫توضیح‪:‬‬
‫برای تعریف تابع از عبارت ‪ function‬استفاده می کنیم و سپس نام تابع را وارد می‬
‫کنیم؛ برای وارد کردن نام تابع بر خالف متغیرها در ‪ php‬نباید از ‪ $‬استفاده کنیم‪ .‬اگر‬
‫تابع باید اطالعاتی را به عنوان ورودی دریافت کند باید متغیرهایی را به عنوان پارامتر‬
‫تعریف کنید‪.‬برای تعریف پارامترها نیز مانند تعریف متغیرها عمل می کنیم و برای‬
‫تعریف چند پارامتر بین انها از کاما استفاده می کنیم‪.‬قسمت ‪ return‬قسمت پایانی تابع‬
‫می باشد و اگر قرار باشد تابع مقداری را برگشت دهد باید نام ان پارامتر را جلوی‬
‫‪ return‬بنویسید‪.‬‬
‫‪www.aduelect.ir‬‬
‫مثال‪ :‬در این تابع هیچ مقداری را برگشت ندادیم و تنها دستوراتی را اجرا کردیم‪.‬‬
‫)‪Function test($a,$b‬‬
‫{‬
‫;‪$sum=$a*$b‬‬
‫;‪Echo $sum‬‬
‫}‬
‫مثال‪ :‬در این تابع پس از دریافت پارامتر ‪ $a‬محاسباتی انجام شد و این پارامتر برگشت داده‬
‫شد‪.‬‬
‫)‪Function test($a‬‬
‫{‬
‫;‪$a=$a+7+24‬‬
‫;‪Return $a‬‬
‫}‬
‫نکته ‪ :1‬همچنین تابع می تواند بدون پارامتر باشد و بدون گرفتن ورودی محاسباتی را انجام‬
‫دهد‪.‬‬
‫نکته ‪ :2‬توابع را هر جای برنامه که بخواهید می توانید معرفی کنید ولی معموال توابع را در‬
‫ابتدا قبل از بدنه اصلی برنامه و یا در اخر پس از دستورات بدنه برنامه تعریف می کنند‪.‬‬
‫‪www.aduelect.ir‬‬
‫فراخوانی تابع‪:‬‬
‫تابع تا زمانی که فراخوانده نشود اجرا نمی شود و برای اجرای دستورات یک تابع‬
‫باید انرا با توجه به ارگمان های ان فراخوانی کنید‪.‬‬
‫;)ارگومان(‪Function-name‬‬
‫به طور مثال اگر بخواهیم تابع ‪ test‬را فراخوانی کنیم بصورت زیر عمل می کنیم‪:‬‬
‫;‪$a=3‬‬
‫;)‪$sum=test($a‬‬
‫;‪Echo $sum‬‬
‫توضیح‪:‬‬
‫در ابتدا متغیر ‪ $a‬مقدار دهی شد سپس متغیری با نام ‪ $sum‬ایجاد کردیم و تابع‬
‫‪ test‬را با مقدار ‪ $a‬فراخوانی کردیم؛ پس از اجرا شدن تابع مقدار برگشتی تابع در‬
‫متغیر ‪ $sum‬قرار می گیرد و در نهایت هم متغیر ‪ $sum‬را چاپ کردیم‪.‬‬
‫‪www.aduelect.ir‬‬
‫تابع ‪ test‬را به شکلهای دیگری نیز می توان فراخوانی کرد‪.‬‬
‫مثال‪:‬‬
‫)‪$sum=test(24‬‬
‫;‪Echo $sum‬‬
‫مثال‪:‬‬
‫;‪$a=24‬‬
‫;)‪Echo test($a‬‬
‫مثال‪:‬‬
‫;)‪Echo test(24‬‬
‫‪www.aduelect.ir‬‬
‫ این دستورات صفحه ای را ایجاد می کند که کاربر در ان از یک منوی باز شونده از‬:‫مثال‬
.‫بین چند گزینه ؛ گزینه ای را انتخاب می کند که از طریق ان با سایت اشنا شده است‬
<html>
<head>
<title>New document</title>
</head>
<body>
<form action="http://localhost/switch/2.php" method=post>
<h5> please select a level for our site </h5>
<select name = "level">
<option value = "a"> BAD
<option value = "b"> Good
<option value = "c"> Very Good
<option value = "d"> excellent
</select
</form>
<br>
<br>
<input type="submit" value= "send">
</form>
</body>
</html></html>
www.aduelect.ir
‫‪<?php‬‬
‫توضیح‪:‬‬
‫;]'‪$a=$_POST['level‬‬
‫این دستورات فایل دیگری را به وجود می اورند تا اطالعات‬
‫)‪function choice($a‬‬
‫را از فرم ایجاد شده دریافت کند و این اطالعات را پردازش کند‪.‬‬
‫{‬
‫همانطور که مشاهده می کنید در این برنامه دستورات در یک تابع قرار گرفته است‬
‫)‪switch ($a‬‬
‫قبل از تعریف تابع برای واضح تر بودن برنامه مقداری را که از طریق منوی بازشو در‬
‫{‬
‫فایل قبلی ارسال شده را در متغیر ‪ $a‬قرار دادیم و سپس تابع ‪ choice‬در برنامه تعریف‬
‫‪case 'a' :‬‬
‫شد که دارای یک ارگومان به نام ‪ $a‬است‪.‬پس از تعریف تابع در پایان تابع ;'>‪echo '<p> BAD <p‬‬
‫;‪break‬‬
‫‪ choice‬را با مقدار ‪ $a‬فراخوانی کردیم‪.‬‬
‫‪case 'b' :‬‬
‫;'>‪echo '<p> GOOD <p‬‬
‫;‪break‬‬
‫‪case 'c' :‬‬
‫;'>‪echo '<p> Very Good <p‬‬
‫;‪break‬‬
‫‪case 'd' :‬‬
‫;'>‪echo '<p> excellent <p‬‬
‫;‪break‬‬
‫‪default:‬‬
‫;'>‪echo '<p> you dident choice! <p‬‬
‫} ;‪break‬‬
‫}‬
‫‪www.aduelect.ir‬‬
‫;)‪choice($a‬‬
‫>?‬
‫جلسه چهارم‬
‫طول عمر و حوزه متغیر ها‬
‫متغیرهای ایستا‬
‫استفاده کردن از فایلها در برنامه‬
‫کاربرد استفاده و ضمیمه کردن فایل‬
‫ذخیره و بازیابی داده ها‬
‫‪www.aduelect.ir‬‬
‫طول عمر و حوزه متغیر ها‬
‫از زمانی که به یک متغیر حافظه اختصاص داده می شود و تا زمانی که این حافظه از‬
‫ان گرفته شود را طول عمر متغیر می گویند‪.‬‬
‫هر متغیر عالوه بر طول عمر دارای یک حوزه می باشد که در واقع حوزه متغیر‬
‫جاهایی است که می توان از متغیر تعریف شده استفاده کرد‪.‬‬
‫حوزه های متغیر در ‪ php‬عبارتند از‪:‬‬
‫‪.1‬متغیرهای محلی‪ :‬این متغیرها در داخل تابع تعریف می شوند و حوزه انها در داخل‬
‫تابع است و تنها در ان تابع قابل استفاده هستند‪.‬‬
‫‪.2‬متغیرهای عمومی‪ :‬این متغیرها در داخل برنامه یا صفحه تعریف می شوند و حوزه‬
‫انها در داخل ان صفحه است و در سراسر برنامه به جز داخل توابع قابل استفاده می‬
‫باشند‪.‬‬
‫‪www.aduelect.ir‬‬
‫‪.3‬متغیرهای عمومی در داخل تابع که به صورت ‪ global‬تعریف می شوند‪:‬‬
‫فرض کنید یک متغیر با نام ‪ $test‬در برنامه تعریف کردید و یک تابع به نام )(‪ sina‬در‬
‫برنامه تعریف کردید‪.‬‬
‫شما نمی توانید از متغیر ‪ $test‬در داخل تابع استفاده کنید ؛ برای استفاده کردن از متغیر های‬
‫عمومی که در داخل تابع باید از دستور ‪ global‬استفاده کنید‪.‬‬
‫مثال‪:‬‬
‫;”‪$test=“name‬‬
‫;)‪Function sina($a,$b,$c‬‬
‫{‬
‫‪Statements‬‬
‫…‬
‫;‪Global $test‬‬
‫‪Statements‬‬
‫…‬
‫}‬
‫‪www.aduelect.ir‬‬
‫‪.4‬متغیر های فرا عمومی‪:‬‬
‫این متغیرها ؛ متغیر هایی هستند که از قبل تعریف شده اند و در هر جای برنامه که بخواهید‬
‫می توانید از انها استفاده کنید البته توجه داشته باشید که این متغیر ها توسط کابر تعریف نمی‬
‫شود و از قبل در ‪ php‬تعریف شده اند‪.‬‬
‫از جمله متغیر های فرا عمومی می توان متغیر های ‪ $GET,$POST‬را نام برد که در‬
‫جلسات قبل با ان اشنا شدید‪.‬‬
‫‪www.aduelect.ir‬‬
‫متغیرهای ایستا‪:‬‬
‫در داخل توابع می توان متغیرهای ایستا را نیز تعریف کرد حوزه این متغیرها در داخل تابع‬
‫است ولی دارای طول عمر بیشتری هستند و با از بین رفتن تابع از بین نمی روند و مقدار خود‬
‫را حفظ می کنند و زمانی که تابع دوباره فراخوانی شد می توان از مقدار قبلی که در ان ثبت‬
‫شده استفاده کرد توجه داشته باشید با این حال که این متغیرها با پایان یافتن تابع از بین نمی روند‬
‫و مقدار خود را حفظ می کنند ولی خارج از تابع نمی توان از ان استفاده کرد و نکته دیگر اینکه‬
‫فقط شما یکبار می توانید به این نوع توابع مقدار اولیه بدهید‪.‬‬
‫‪<?php‬‬
‫مثال‪:‬‬
‫)(‪function test‬‬
‫{‬
‫;‪static $a = 1‬‬
‫;‪$b = 1‬‬
‫;'>‪echo "a = " . $a . ' '."b = " . $b . '<br‬‬
‫;‪$b ++‬‬
‫;‪$a ++‬‬
‫}‬
‫)‪for($i = 0; $i < 10; $i++‬‬
‫;)(‪test‬‬
‫>?‬
‫‪www.aduelect.ir‬‬
‫ضمیمه کردن فایلها به برنامه‬
‫یکی از امکانات خوب در ‪ php‬می باشد که به وسیله ان می توان برنامه ها را به خوبی‬
‫سازماندهی کرد‪.‬مثال شما می توانید یک یا چند فایل متنی داشته باشید که بخواهید در قسمتهای‬
‫مختلف وب سایت خود از ان استفاده کنید‪ .‬برای ضمیمه کردن فایلها از دستور )(‪ require‬یا‬
‫)(‪ include‬می توانید استفاده کنید‪.‬‬
‫;)’مشخصات‘(‪require‬‬
‫;)’مشخصات‘(‪include‬‬
‫توضیح‪ :‬در قسمت مشخصات فایل باید نام فایل و نوع فایل و ادرس فایل را وارد کنید‪.‬‬
‫مثال‪:‬‬
‫;)’‪Require(‘test.txt‬‬
‫;)’‪Include(‘test.txt‬‬
‫توضیح‪ :‬با اجرای یکی از این دستورات فایل ‪ test.txt‬با توجه به محتویات ان مورد پردازش‬
‫قرار می گیرد و اگر حاوی متن ساده باشند ان متن را نمایش می دهد‪.‬‬
‫‪www.aduelect.ir‬‬
‫تفاوت )(‪require() , include‬‬
‫تفاوت این دو دستور در این است که اگر اگر در دستور )(‪ require‬فایل مورد نظر‬
‫پیدا نشود تا ضمیمه گردد پیام خطای ‪ fatal error‬رخ می دهد ولی در دستور‬
‫)(‪ include‬فقط یک ‪ warning‬یا اخطار صادر می شود‪.‬‬
‫کاربرد استفاده و ضمیمه کردن فایل‪:‬‬
‫یکی از کاربردهای ضمیمه کردن فایلها استفاده کردن از انها در قسمت سرصفحه و پا‬
‫صفحه می باشد که شما می توانید با قرار دادن دستورات در یک فایل و ضمیمه کردن‬
‫ان در تمام صفحات ؛ در صفحه به جای نوشتن تمام دستورات فایلی را به برنامه‬
‫ضمیمه کنید تا دستورات ان اجرا شود‪.‬‬
‫‪www.aduelect.ir‬‬
.‫ دستورات زیر را در یک فایل تایپ کنید و ذخیره کنید تا این فایل را به عنوان سر صفحه ضمیمه کنیم‬:‫مثال‬
<table border="1" width="100%" height="238">
<tr>
<td>
<p dir="ltr">
<img border="0" src="B6.jpg" width="770" height="122">
</td>
</tr>
<tr>
<td>
<p dir="ltr">
<object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" id="obj1"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.
cab#version=6,0,40,0" border="0" width="772" height="160">
<param name="movie" value="banner-golsar.swf">
<param name="quality" value="High">
<embed src="banner-golsar.swf"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" name="obj1" width="772"
‫ادامه در صفحه بعد‬
height="160"></object>
</td>
</tr>
www.aduelect.ir
</table>
.‫ دستورات زیر را در یک فایل تایپ کنید و ذخیره کنید تا این فایل را به عنوان پا صفحه ضمیمه کنیم‬:‫مثال‬
<table border="1" width="100%">
<tr>
<td>
<p dir="ltr">
<b>
<font size="4">
Copyright © 2007 GolsarGroup.com . All
rights reserved Best viewed in IE5+1024*768 32bit colors
</font>
</b>
</td>
</tr>
</table>
www.aduelect.ir
‫برای اینکه سر صفحه و پا صفحه را ضمیمه کنیم باید دستورات زیر را در صفحه اصلی‬
‫تایپ کنید‪.‬‬
‫‪<?php‬‬
‫;)'‪require('header.txt‬‬
‫;"‪echo "Welcome‬‬
‫;)'‪require('foter.txt‬‬
‫>?‬
‫‪www.aduelect.ir‬‬
‫ارتباط ‪ php‬با ‪: mysql‬‬
‫مراحل تقاضا از بانک اطالعاتی‬
‫برای دستیابی به بانک اطالعاتی در صفحه وبی که طراحی می کنید باید مراحل زیر انجام شود‪:‬‬
‫‪.1‬بررسی و فیلتر کردن داده ها ی کاربر‬
‫‪.2‬برقراری اتصال با سرور ‪mysql‬‬
‫‪.3‬انتخاب بانک اطالعاتی‬
‫‪.4‬انجام تقاضا از بانک اطالعاتی‬
‫‪.5‬بازیابی نتایج تقاضا‬
‫‪.6‬ارسل نتایج به کاربر‬
‫‪.7‬بستن اتصا ل‬
‫‪www.aduelect.ir‬‬
‫برقراری اتصال با سرور ‪: mysql‬‬
‫برای برقراری اتصال برقرار کردن با سرور ‪ mysql‬از تابع )(‪ mysql_connect‬استفاده‬
‫می شود‪.‬‬
‫;)'‪$db=mysql_connect('host', 'user','pass‬‬
‫توضیح‪:‬‬
‫در قسمت اول نام میزبان و در قسمت دوم نام کاربر بانک اطالعاتی و در قسمت سوم کلمه‬
‫عبور را وارد می کنیم‪.‬نتیجه تابع در متغیر ‪ $db‬قرار می گیرد‪.‬‬
‫نکته‪ :‬پس از اجرای دستور )(‪ mysql_connect‬باید بررسی کنیم که ایا اتصال برقرار شده‬
‫یا خیر‪.‬‬
‫‪<?php‬‬
‫;)''‪$db= mysql_connect('localhost','root',‬‬
‫)‪if (!$db‬‬
‫{‬
‫;'‪echo ‘ Error:connection failed‬‬
‫;‪exit‬‬
‫}‬
‫‪else‬‬
‫{‬
‫;'‪echo 'connected‬‬
‫}‬
‫‪www.aduelect.ir‬‬
‫>?‬
‫انتخاب بانک اطالعاتی‬
‫برای کار کردن با بانک اطالعاتی پس از بر قراری ارتباط باید بانک اطالعاتی مورد نظر را‬
‫انتخاب کنید برای انتخاب بانک اطالعاتی باید از تابع )(‪ mysql_select_db‬استفاده کنیم‪.‬‬
‫;)]‪mysql_select_db('dbname'[,serverconnection‬‬
‫‪ Dbname‬نام بانک اطالعاتی است که می خواهید باز شود و ‪ serverconnection‬متغیر‬
‫اتصال ‪ php‬با سرور ‪ mysql‬می باشد‪.‬‬
‫‪www.aduelect.ir‬‬
‫انجام تقاضا از بانک اطالعاتی‬
‫برای انجام اعمال مختلف بر روی بانک اطالعاتی مانند بازیابی ؛ تغییر؛ اضافه کردن رکوردها‬
‫به جدول؛ و‪ ...‬باید مراحل زیر را انجام دهید‪.‬‬
‫‪.1‬بوجود اوردن رشته تقاضای مورد نظر با توجه به عملی که می خواهید انجام دهید‪.‬‬
‫مثال‪:‬‬
‫;"‪$test="select * from t1‬‬
‫‪.2‬اجرای تقاضایی که بوجود اوردید با استفاده از تابع )(‪ mysql_query‬به صورت زیر‪:‬‬
‫;)]‪$result=mysql_query($test[,$db‬‬
‫توضیح‪:‬‬
‫‪ $test‬رشته تقاضایی می باشد که شما ایجاد کرده بودید و ‪ $db‬نام اتصال به سرور می باشد‬
‫پس از اجرای دستور نتایج در ‪ $result‬قرار می گیرد‪.‬‬
‫‪www.aduelect.ir‬‬
‫بازیابی نتایج تقاضا‬
‫پس از انجام تقاضا نتایج در متغیری که انرا با دستور تقاضا انتساب کردید قرار می گیرد حاال‬
‫باید داده ها را از ان متغیر بازیابی کنید برای بازیابی داده ها توابع مختلفی وجود دارد‪.‬‬
‫تابع )(‪: mysql_num_rows‬‬
‫این تابع مشخص می کند که چند رکورد توسط تقاضا برگردانده شده‪.‬‬
‫;)‪$num=mysql_num_rows($result‬‬
‫نکته‪ :‬با استفاده از این تابع می توانید تعداد رکوردهایی را که در نتیجه تقاضا بدست امده را‬
‫بیابید و با استفاده از یک حلقه ‪ for‬رکوردهای نتیجه را بازیابی کنید‪.‬‬
‫‪www.aduelect.ir‬‬
‫تابع ‪: mysql_fetch_row‬‬
‫این تابع سطری را از متغیر حاصل تقاضا را بر می گرداند و در ارایه ای ذخیره می کند‪.‬‬
‫;)‪$row=mysql_fetch_row($result‬‬
‫تابع )(‪: mysql_affected_rows‬‬
‫این تابع مشخص می کند چند سطر تحت تاثیر دستورات ‪insert , update , delete‬‬
‫قرار گرفته اند‪.‬‬
‫بستن اتصا ل‪:‬‬
‫بعد از اتصال و استفا ده کردن از سرور ‪ mysql‬باید اتصال خود را قطع کنید برای این‬
‫کار از دستور )(‪ mysql_close‬به صورت زیر استفاده کنید‪.‬‬
‫;)‪Mysql_close($db‬‬
‫‪www.aduelect.ir‬‬
test ‫ صفحه ای طراحی می کنیم که اطالعاتی را از کاربر بگیرد و اطالعات را در بانک اطالعاتی‬:‫مثال‬
.‫ ایجاد کردیم وارد کند و پس از وارد کردن اطالعات پیغامی را صادر کند‬mysql ‫که قبال در‬
<html>
<body>
<form method = "post" action = "http://localhost/database/2/2.php">
<b>name</b>
<input type = "text" name = "name" size = "13">
<b>fname</b>
<input type = "text" name = "fname" size = "20">
<input type = "submit" value = "Submit"></b>
</body>
</html>
www.aduelect.ir
.‫ در این صفحه اطالعاتی ارسالی از فرم دریافت می شود و مورد پردازش قرار می گیرد‬:‫توضیح‬
<?php
$name = $_POST['name'];
$fname = $_POST['fname'];
if (strlen($name) == 0 or strlen($fname) == 0)
{
echo "please check your information you didn't enter your name or family name
exit;
}
$connect= mysql_connect('localhost','root','');
if(!$connect)
{
echo " Error : cannot open connection.";
exit;
}
mysql_select_db('test');
$query = " insert into t1
(name,fname) values
('".$name."', '". $fname."')";
$result = mysql_query($query);
if($result)
echo mysql_affected_rows(). '<b> record inserted into database.</b>';
mysql_close($connect);
www.aduelect.ir
?>
‫ را بازیابی می کند و با‬t1 ‫ و در جدول‬test ‫در این مثال رکوردهای موجود در بانک اطالعاتی‬:‫مثال‬
.‫ رکوردها را در یک جدول به کاربر نمایش می دهد‬html ‫استفاده از دستورات‬
<html>
<body>
<table border = "1" >
<tr>
<th> Name</th>
<th> Family Name</th>
</tr>
<?php
$db= mysql_connect('localhost','root','');
if(!$db)
{
echo " Error : cannot open connection.";
exit;
}
mysql_select_db('test');
$query = "select * from t1";
$result = mysql_query($query);
if(!$result)
{
www.aduelect.ir
echo "Query not executed.";
‫ادامه‬
$num = mysql_num_rows($result);
for($i = 0; $i < $num; $i ++)
{
$row = mysql_fetch_row($result);
echo '<tr>';
echo "<td><b> $row[0]</b> </td>";
echo "<td><b> $row[1]</b> </td>";
echo '</tr>';
}
mysql_close();
?>
</table>
</body>
</html>
www.aduelect.ir
‫در این مثال یک صفحه رای گیری طراحی می کنیم که رای ها را از کاربران دریافت می کند و و در بانک‬:‫مثال‬
.‫اطالعاتی ذخیره می کند و مجموع رای ها از بانک اطالعاتی دریافت می کند و نمایش می دهد‬
‫طراحی صفحه اصلی‬
<html>
<head>
<title> New document</title>
</head>
<body>
<h3>
<form method ="GET" action ="http://localhost/rayg/2.php">
please select a level for our website....
<br>
<br>
<input name="R" type="radio" value="bad"> bad <br>
<input name="R" type="radio" value="good" > Good <br>
<input name="R" type="radio" value="excellent" checked
>excellent<br>
<br>
<input type="submit" value="send">
<a href="http://localhost/rayg/3.php">Votes</a></p>
</h3>
www.aduelect.ir
</body>
‫رای را از فرم صفحه اصلی دریافت میکند و تغییرات الزم را در‬:‫طراحی صفحه دوم‬
.‫بانک اطالعات انجام می دهد‬
<html>
<head>
<title> New document</title>
</head>
<body>
<?php
$ray=$_GET['R'];
$db= mysql_connect('localhost','root','');
if(!$db)
{
echo " Error : cannot open connection.";
exit;
}
mysql_select_db('ray');
$query = "select * from ray";
$result = mysql_query($query);
if(!$result)
{
echo "Query not executed.";
exit;
www.aduelect.ir
}
}
$row = mysql_fetch_row($result);
$bad=$row[0];
$good=$row[1];
$excellent=$row[2];
switch ($ray)
{
case 'bad' :
$bad=$bad+1;
break;
case 'good' :
$good=$good+1;
break;
case 'excellent' :
$excellent=$excellent+1;
break;
default:
echo '<p> you dident choice! <p>';
break; }
www.aduelect.ir
mysql_select_db('ray');
$query = " UPDATE ray SET bad='$bad', good='$good', excellent='$excellent';";
$result = mysql_query($query);
if($result)
echo '<b> record inserted into database.</b>';
mysql_close($db);
?>
<p><a href="http://localhost/rayg/1.php">Back</a></p>
</body>
</html>
www.aduelect.ir
.‫ این صفحه نتایج امار را نمایش می دهد‬:‫طراحی صفحه سوم‬
<html>
<head>
<title> New document</title>
</head>
<body>
<?php
$db= mysql_connect('localhost','root','');
if(!$db)
{
echo " Error : cannot open connection.";
exit;
}
mysql_select_db('ray');
$query = "select * from ray";
$result = mysql_query($query);
if(!$result)
{
echo "Query not executed.";
exit;
}
www.aduelect.ir
$row = mysql_fetch_row($result);
$bad=$row[0];
$good=$row[1];
$excellent=$row[2];
echo "<h1><center>BAD= $bad<br>Good=$good<br>excellent=$excellent</h1>";
mysql_close($db);
?>
<p><a href="http://localhost/rayg/1.php">Back</a></p>
</body>
</html>
www.aduelect.ir
‫تمرین‪:‬‬
‫الف) بانک اطالعاتی در ‪ mysql‬ایجاد کنید که شماره دانشجویی و نام و نام خانوادگی‬
‫را در یک جدول ذخیره کند‪.‬‬
‫ب) صفحه وبی طراحی کنید که دارای یک فرم باشد و نام و نام خانوادگی را دریافت‬
‫کند و در بانک اطالعاتی که به وجود اوردید ذخیره کند‪.‬‬
‫ج) صفحه وبی را طراحی کنید که دارای یک جعبه متنی باشد و کاربر بتواند در جعبه‬
‫متنی دستور ‪ select‬را با شرط دلخواه خود وارد کند و نتایج ان دستور به کاربر‬
‫نمایش داده شود‪.‬‬
‫‪www.aduelect.ir‬‬
‫‪99‬‬
‫جلسه پنجم‬
‫مفهوم کوکی‬
‫استفاده از کوکی ها‬
‫کنترل های تماس‬
‫پیاده سازی تماس ساده‬
‫متغیرهای تماس‬
‫تشخیص هویت با کنترل تماس‬
‫‪www.aduelect.ir‬‬
‫‪100‬‬
‫مفهوم کوکی ها‬
‫کوکی بخشی از دادها است که اسکریپت می تواند در کامپیوتر سرویس گیرنده ذخیره کند‪.‬‬
‫کوکی ها معموال در فایلی در دیسک سخت کامپیوتر سرویس گیرنده ذخیره می شوند و‬
‫همچنین وب سایت ها فقط کوکی های خودشان را دستکاری می کنند‪.‬‬
‫بعضی از کاربرد های کوکی عبارتند از‪:‬‬
‫‪.1‬ذخیره اولویت های کاربر در یک سایت خاص‪.‬‬
‫‪.2‬ذخیره کلید کاربر که می تواند کاربران را با داده های شخصی انها پیوند دهد‪.‬‬
‫‪.3‬ذخیره کردن داده های کمکی و کوچک که چندان حیاتی نیستند!‬
‫‪www.aduelect.ir‬‬
‫‪101‬‬
‫تنظیم کوکی ها‬
‫برای تنظیم کوکی ها در ‪ php‬از تابع )(‪ setcookie‬استفاده می شود‪:‬‬
‫)]]]]] ‪Set cookie(name [, value [, expire [,path [,domain [,secure‬‬
‫توضیح‪:‬‬
‫‪ :Name‬نام کوکی می باشد‪.‬‬
‫‪ :Value‬مقدار کوکی را تعیین می کند‪.‬‬
‫‪ :Expire‬زمان از بین رفتن کوکی یا به عبارتی طول عمر کوکی را مشخص می کند‪.‬‬
‫‪ :Path‬مسیر ذخیره کوکی را تعیین می کند‪.‬‬
‫‪ :Domain‬دامنه ای را مشخص می کند که کوکی اعمال می شود‪.‬‬
‫‪ :Secure‬اگر مقدارش یک تعیین گردد معنایش این است که از طریق اتصال ساده ارسال نمی‬
‫گردد‪.‬‬
‫‪www.aduelect.ir‬‬
‫‪102‬‬
‫مثال‪ :‬این دستور کوکی با نام ‪ test‬و با مقدار ‪ value‬ایجاد می کند‪.‬‬
‫;)'‪setcookie("test",'value‬‬
‫مثال‪ :‬این دستور کوکی با نام ‪ font‬و با مقدار ‪ arial‬ایجاد می کند که انقضای تا یک ساعت‬
‫بعد می باشد‪.‬‬
‫;)‪setcookie("font",'arial',time() + 3600‬‬
‫وقتی کاربر صفحه بعدی سایت شما را میبیند می توان از طریق متغیر های زیر به کوکی‬
‫دسترسی داشت‪:‬‬
‫;]"‪$HTTP_COOKIE_VARS["test‬‬
‫یا‬
‫‪www.aduelect.ir‬‬
‫‪103‬‬
‫;]'‪$_COOKIE['test‬‬
‫حذف کوکی ها‬
‫به دو طریق می توان کوکی ها را حذف کرد‪:‬‬
‫‪.1‬تنظیم مجدد کوکی ها فقط با ذکر نام کوکی‬
‫;)'‪setcookie('font‬‬
‫‪.2‬تنظیم مجدد کوکی به طوری که تاریخ انقضای ان گذشته باشد‬
‫;)‪setcookie("font",‘0',time() - 3600‬‬
‫مشکالت کوکی ها‬
‫‪.1‬بعضی از مرورگرها امکان استفاده از کوکی ها را ندارند‪.‬‬
‫‪.2‬ممکن است تنظیمات مرورگرها به گونه ای باشد که از ورود کوکی به سیستم جلوگیری کند‪.‬‬
‫‪www.aduelect.ir‬‬
.‫ و با مقداری که کاربر وارد کرده ایجاد می کند‬name ‫ این دستور کوکی با نام‬:‫مثال‬
<html>
<head>
<title> New document</title>
</head>
<body>
<form method = "POST">
who is your best friend?
<input name="friend" type="text">
<br>
<input type="submit" value="submit">
</form>
<?php
$f = $_POST['friend'];
setcookie ("name",$f,time() + 3600);
$n=$_COOKIE['name'];
echo " cookie value is: $n";
?>
</body>
</html>
www.aduelect.ir
‫کنترل های تماس‬
‫کنترل تماس توانایی ردیابی کاربر در اثنای یک تماس با وب سایت است به این ترتیب می‬
‫توان هنگام ورود کاربر که با تشخیص هویت صورت می گیرد بر اساس هویت او محتویات‬
‫سایت را بر اساس خواسته های او نمایش داد ‪.‬‬
‫عملکرد تماس‬
‫تماس ها در ‪ php‬با شناسه تماس مشخص می شوند که یک عدد تصادفی رمزنگاری شده است‬
‫این شناسه توسط ‪ php‬تولید شده و در کامپیوتر سرویس گیرنده ذخیره می گردد‪.‬‬
‫متغیر های تماس در یک فایل در سرویس گیرنده و یا در صورت لزوم ان را در یک بانک‬
‫اطالعاتی ذخیره کرد‪.‬‬
‫‪www.aduelect.ir‬‬
‫پیاده سازی تماس های ساده‬
‫مراحل استفاده از تماس ها عبارتند از‪:‬‬
‫‪.1‬شروع تماس‬
‫‪.2‬ثبت متغیر های تماس‬
‫‪.3‬استفاده از متغیر های تماس‬
‫‪.4‬حذف متغیر های تماس و خاتمه تماس‬
‫‪www.aduelect.ir‬‬
‫شروع تماس‬
‫قبل از استفاده از یک تماس باید ان را اغاز کنیم که از چند روش انجام می شود ‪:‬‬
‫‪.1‬در این روش برنامه باید با تابع )(‪ session_start‬شروع شود‪ .‬این تابع بررسی می کند که ایا فعال‬
‫شناسه تماس وجود دارد یا خیر‪ .‬اگر وجود نداشته باشد انرا ایجاد می کند و اگر وجود داشته باشد‬
‫متغیرهای تماس ثبت شده را بارگذاری می کند‪.‬‬
‫‪ .2‬می توان ‪ php‬را طوری تنظیم کرد که وقتی شخصی وارد سایت می شود به طور خودکار یک‬
‫تماس را شروع کند‪ .‬برای این کار باید گزینه ‪ session.auto_start‬را در فایل ‪ php.ini‬تنظیم کنیم‪.‬‬
‫نکته‪:‬‬
‫مسیر ذخیره سازی متغیرهای تماس را در فایل ‪ php.ini‬در قسمت گزینه ‪session.save_path‬‬
‫می توان به دلخواه تنظیم کرد‪.‬‬
‫‪www.aduelect.ir‬‬
‫ثبت متغیر های تماس‬
‫متغیر های تماس در یک ارایه فرا عمومی به نام ‪ $_SESSION‬یا در ارایه ‪ $_SESSION_VARS‬ذخیره‬
‫می شوند برای ایجاد متغیر تماس باید عنصری از این ارایه ها را مقدار دهید‪:‬‬
‫;‪$_SESSION[‘test’]=3‬‬
‫یا‬
‫;‪$HTTP_SESSION_VARS[‘test’]=3‬‬
‫نکته‪:‬‬
‫در نسخه های قدیمی ‪ php‬برای ردیابی متغیر از صفحه به صفحه ای دیگر از تابع )(‪session_register‬‬
‫می توان استفاده کرد‪.‬‬
‫مثال‪:‬‬
‫;‪$test‬‬
‫;)’‪Session_register(‘test‬‬
‫‪www.aduelect.ir‬‬
‫استفاده از متغیر های تماس‬
‫برای استفاده از متغیر های تماس ابتدا باید تماسی را اغاز کرد و سپس از طریق ارایه های‬
‫‪ $_SESSION‬یا ‪ $HTTP_SESSION_VARS‬انها را بکار گرفت‪:‬‬
‫;]’‪$HTTP_SESSION_VARS[‘test‬‬
‫یا‬
‫;]’‪$_SESSION[‘test‬‬
‫تابع )(‪: session_is_registered‬‬
‫توسط این تابع می توانید مشخص کنید که ایا متغیری یک متغیر تماس ثبت شده است یا خیر ‪:‬‬
‫;(’‪$result= session_is_register)‘test‬‬
‫اگر ‪ $test‬یک متغیر تماس ثبت شده باشد این تابع ارزش ‪ true‬وگرنه ‪ false‬را بر می گرداند‪.‬‬
‫‪www.aduelect.ir‬‬
‫اگر از ارایه های ‪ $HTTP_SESSION_VARS‬یا ‪ $_SESSION‬استفاده می کنید کافی است تا‬
‫اندیس متناظر را در این ارایه ها کنترل کنید‪:‬‬
‫))]’‪If (isset ($HTTP_SESSION_VARS[‘test‬‬
‫یا‬
‫))]’‪If (isset ($SESSION[‘test‬‬
‫نکته‪ :‬اگر عنصر متناظر ان مقدار داشته باشد تابع ارزش ‪ true‬و در غیر اینصورت ارزش ‪ false‬را‬
‫بر می گرداند‪.‬‬
‫‪www.aduelect.ir‬‬
‫حذف متغیر های تماس و خاتمه تماس‬
‫وقتی دیگر با متغیرهای تماس کارتان تمام شد می توانید انرا از حالت ثبت خارج کنید‪ .‬اگر از‬
‫ارایه های ‪ $HTTP_SESSION_VARS‬یا ‪ $_SESSION‬استفاده می کنید برای خارج‬
‫کردن متغیر ها از ثبت به صورت زیر عمل می کنیم‪.‬‬
‫;)]’‪Unset($HTTP_SESSION_VARS[‘test‬‬
‫یا‬
‫;)]’‪Unset($_SESSION[‘test‬‬
‫خاتمه تماس‬
‫برای پایان دادن به تماس ابتدا باید متغیر های تماس را از حالت ثبت خارج کنیم و سپس برای‬
‫خاتمه تماس از تابع )(‪ session_destroy‬استفاده می کنیم‪.‬‬
‫;)(‪Session_destroy‬‬
‫‪www.aduelect.ir‬‬
‫در این مثال چند صفحه طراحی می کنیم که در این صفحات تماسی را اغاز می کنیم و از کاربر‬:‫مثال‬
‫نام او را دریافت می کنیم و در یک متغیر تماس قرار می دهیم و پس از دستیابی به متغیرتماس و چاپ‬
. ‫ان؛ تماس را پایان می دهیم‬
‫صفحه اول‬
<html>
<head>
<title> New document </title>
</head>
<body>
<form method = "GET" action = "http://localhost/session/2.php">
what is your name?
<input name="name" type="text">
<br>
<input type="submit" value="submit">
</form>
</body>
</html>
www.aduelect.ir
‫صفحه دوم‬
‫در این صفحه اطالعات ارسالی فرم صفحه قبل را دریافت می کنیم و تماسی را اغاز می کنیم و‬
‫اطالعات دریافتی را در یک متغیر تماس قرار می دهیم‪.‬‬
‫‪<?php‬‬
‫;]"‪$n=$_GET["name‬‬
‫;)(‪session_start‬‬
‫;‪$_SESSION['n']=$n‬‬
‫>?‬
‫>‪<a href="3.php">Next page</a‬‬
‫صفحه سوم‬
‫در این صفحه به متغیر تماس دسترسی پیدا می کنیم و انرا چاپ می کنیم و سپس این متغیر تماس را‬
‫حذف می کنیم و اتصال را پایان می دهیم‪.‬‬
‫‪<?php‬‬
‫;)(‪session_start‬‬
‫;]'‪echo 'your name is= '.$_SESSION['n‬‬
‫;)]'‪unset($_SESSION['n‬‬
‫;)(‪session_destroy‬‬
‫>?‬
‫>‪<a href="4.php">Next page</a‬‬
‫‪www.aduelect.ir‬‬
‫صفحه چهارم‬
‫در این صفحه به متغیر تماس دسترسی پیدا می کنیم و انرا چاپ می کنیم ولی در خروجی اخطاری را‬
‫مشاهده می کنید که به این دلیل است که در صفحه قبل متغیر تماس را حذف کردیم‪.‬‬
‫‪<?php‬‬
‫;)(‪session_start‬‬
‫;]'‪echo ‘ your name is= '.$_SESSION['n‬‬
‫;)(‪session_destroy‬‬
‫>?‬
‫‪www.aduelect.ir‬‬
‫تشخیص هویت با تماس‬
‫یکی از کاربردهای تماس استفاده کردن از ان در تشخیص هویت کاربران پس از ورود به سیستم‬
‫می باشد که در مثالی به ان می پردازیم‪.‬‬
‫این مثال شامل ‪ 3‬صفحه می باشد که در صفحه اول متغیر تماسی را ثبت می کنیم و از این متغیر‬
‫در صفحات دیگر استفاده می کنیم و همچنین دارای یک بانک اطالعاتی می باشد که در ان نام‬
‫کاربران و رمز ورود انها ثبت می شود و وقتی که کاربر نام و رمز خود را وارد می کند برنامه‬
‫نام و رمز را با بانک اطالعاتی بررسی می کند اگر کاربر نام و رمز را درست وارد کرده باشد نام‬
‫کاربر در متغیر تماس قرار می گیرد و در صفحات دیگر با بررسی متغیر های تماس می توان‬
‫تشخیص داد که شخص از کاربران است یا خیر‪.‬‬
‫‪www.aduelect.ir‬‬
‫صفحه اول‬
<?php
session_start();
if (isset($HTTP_POST_VARS['userid']) && isset($HTTP_POST_VARS['password']))
{
// if the user has just tried to log in
$userid = $HTTP_POST_VARS['userid'];
$password = $HTTP_POST_VARS['password'];
$db_conn = mysql_connect('localhost','root','');
mysql_select_db('user');
$query = 'select * from list '
."where uname='$userid' "
." and password = '$password'";
$result = mysql_query($query, $db_conn);
if (mysql_num_rows($result) >0 )
{
$HTTP_SESSION_VARS['valid_user'] = $userid;
}
}
‫ادامه در صفحه بعد‬
?>
www.aduelect.ir
‫صفحه اول‬
<html>
<body>
<h1> Home page </h1>
<?
if (isset($HTTP_SESSION_VARS['valid_user']))
{
echo ‘You are logged in as: '.$HTTP_SESSION_VARS['valid_user'].' <br />';
echo '<a href="logout.php">Log out</a><br />';
}
else
{
if (isset($userid))
{
echo ‘Could not log you in';
}
else
{
echo ‘You are not logged in.<br />';
}
www.aduelect.ir
‫صفحه اول‬
echo '<form method="post" action="1.php">';
echo '<table>';
echo '<tr><td> Userid: </td>';
echo '<td><input type="text" name="userid"></td></tr>';
echo '<tr><td>Password:</td>';
echo '<td><input type="password" name="password"></td></tr>';
echo '<tr><td colspan="2" align="center">';
echo '<input type="submit" value="Log in"></td></tr>';
echo '</table></form>';
}
?>
<a href = "members.php">Members section</a>
</body>
</html>
www.aduelect.ir
‫این صفحه با استفاده از متغیرتماس بررسی می کند و اگر شخص از کاربران سایت باشد‬:‫صفحه دوم‬
. ‫اطالعاتی را به او نمایش می دهد و در غیر اینصورت پیغامی را چاپ می کند‬
<?php
session_start();
echo '<h1> Members only </h1>';
if (isset($HTTP_SESSION_VARS['valid_user']))
{
echo '<p> You are logged '.$HTTP_SESSION_VARS['valid_user'].'</p>';
echo '<p> Members only content goes here</p>';
}
else
{
echo '<p> You are not logged in.</p>';
echo '<p> Only logged in members may see this page.</p>';
}
echo '<a href="1.php">Back to main page</a>';
?>
www.aduelect.ir
‫ ابتدا یک تماس اغاز می شود و نام کاربر از متغیر تماس در یک متغیر قرار می گیرد‬:‫صفحه سوم‬
‫سپس متغیر تماس حذف می شود و به کاربر پیغام می دهد که خارج شده اگر شخصی که وارد این‬
.‫صفحه شده کاربر نباشد به او پیغامی مناسب داده می شود‬
<?php
session_start();
$old_user = $HTTP_SESSION_VARS['valid_user'];
unset($HTTP_SESSION_VARS['valid_user']);
echo "<h1> Logout Page</h1>";
if (!empty($old_user))
echo ‘You have been logged out.<br />';
else
echo ‘You were not logged in, and so have not been logged out.<br />';
echo '<a href="1.php"> Back to main page </a>';
session_destroy();
?>
www.aduelect.ir
‫تمرین‪:‬‬
‫صفحاتی را طراحی کنید که در ان یک قسمت برای ثبت نام در سایت و قسمتی‬
‫برای ورود کاربران در نظر بگیرید که کاربران بعد از ثبت نام در سایت با نام‬
‫کاربری خود وارد سایت شوند و با توجه به اینکه که کاربران از اعضا سایت می‬
‫باشند یا افرادی هستند که بدون نام کاربری وارد سایت شده اند به انها پیغام مناسب‬
‫را بدهید‪.‬‬
‫موفق و سربلند باشید ‪ :‬رضا علیپور‬
‫‪www.aduelect.ir‬‬