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