توابع کار با فایل ها در PHP
آموزش نصب PHP
به چه چیزی نیاز دارم؟
برای شروع کار با PHP می توانید یکی از موارد زیر را استفاده نمایید:
- می توانید از یک وب هاست که PHP و MYSQL را پشتیبانی می کند، استفاده نمایید.
- یک web server مانند Apache، روی کامپیوترتان نصب کنید و سپس PHP و MYSQL را نصب نمایید.
- می توانید از پکیج هایی مانند Xampp یا Wamp استفاده نمایید.
1- وب هاستی که PHP را پشتیبانی می کند
اگر سرور شما PHP را پشتیبانی می کند به چیز دیگری نیاز ندارید.
فقط باید یک فایل PHP ایجاد نمایید و آنرا در دایرکتوری وب قرار دهید. سرور بطور اتوماتیک آنرا ترجمه خواهد کرد.
بخاطر اینکه PHP رایگان است و اغلب سرورها آنرا پشتیبانی می کنند نیاز به کامپایل یا نصب ابزار های اضافی ندارید.
به هر حال اگر سرور شما PHP را پشتیبانی نمی کند، باید PHP را نصب نمایید.
2- نصب جداگانه Web Server و PHP و MYSQL
اگر کامپیوترتان، PHP را پشتیبانی نمی کند باید کارهای زیر را انجام دهید:
- نصب وب سرور (Apache)
- نصب PHP
- نصب بک پایگاه داده، مانند MYSQL
دانلود Apache Server:
برای دانلود رایگان Appache از لینک روبرو استفاده کنید: http://httpd.apache.org/download.cgi
دانلود PHP:
برای دانلود رایگان PHP از لینک روبرو استفاده کنید: http://www.php.net/downloads.php
دانلود MySQL :
برای دانلود رایگان MySQL از لینک روبرو استفاده کنید: http://www.mysql.com/downloads
توجه: به جای نصب جداگانه PHP , MySQL, Apache می توانید از پکیج هایی مانند Xampp یا Wamp استفاده نمایید که کار شما را بسیار ساده تر می نمایند، البته در مطلب PHP & IIS چگونگی اجرای فایلهای PHP روی IIS توضیح داده شده است.
3- استفاده از Xampp یا Wamp
همانطور که قبلاً گفته شد برای شروع کار با php نیاز به نصب مفسر آن داریم که پکیج Xampp برای این منظور مناسب می باشد.
مراحل نصب XAMPP:
برای دانلود رایگان XAMPP از لینک روبرو استفاده کنید: https://www.apachefriends.org/download.html
1- در اولین مرحله، خوش آمدگویی داریم، پس Next را مطابق شکل زیر کلیک کنید.
2- مسیر نصب را مطابق شکل زیر البته به صورت دلخواه مشخص کنید.
3- در صورتی که میخواهید Apache و MySQL به عنوان سرویس های ویندوز نصب بشوند گزینه های Install Apache as Service و Install MySQL as Service را تیک بزنید، در غیر این صورت اگر تیک Install as Service را نزده باشید باید هر بار که ویندوز بالا می آید Apache و MySQL را فعال کنید، یعنی باید دکمه Start کنارشون را در کنترل پانل XAMPP کلیک کنید، در نهایت کلید Install را مطابق شکل زیر کلیک کنید.
نکته1: در صورتیکه IIS روی سیستم شما نصب است و XAMPP را نصب کنید، در نهایت برای اجرای فایل های PHP به مشکل برخواهید خورد، بنابراین باید IIS را Stop کنید.
نکته2:اگر SQL Server روی سیستم شما نصب است باید سرویس Reporting Services Configuration Manager آنرا Stop کنید تا XAMPP به درستی فایلهای PHP را اجرا کند.
در شکل زیر کنترل پنل Xampp را می بینید که می توانید Apache و MySQL را Start یا Stop کنید.
حالا مرورگرتان را باز کنید و در آدرس بار مرورگر localhost یا 127.0.0.1 را تایپ کنید و یا می توانید در شکل بالا دکمه Admin را کلیک کنید اگر همه چیز خوب پیش رفته باشه صفحه زیر را خواهید دید که می توانید زبان صفحات Xampp را انتخاب کنید پس روی English کلیک کنید!
در نهایت صفحه ای مانند شکل زیر نمایش داده می شود.
ایجاد و اجرای یک فایل PHP:
- یک فایل PHP ساده ایجاد کنید، به عنوان مثال در ادیتور NOTEPAD کد زیر را تایپ کنید و با نام hello و با پسوند php ذخیره کنید(hello.php):
<?php
echo "Hello";
?> - فایل ایجاد شده در بالا را در مسیر C:\xampp\htdocs کپی کنید. (مسیر نصب XAMPP خواهد بود)
- در آدرس بار مرورگر، آدرس localhost/hello.php را وارد کنید.
- اگر همه چیز درست پیش رفته باشد، خروجی زیر را خواهید داشت:
Hello
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
توابع کار با فایل ها در PHP
مقدمه ی توابع کار با فایل ها در PHP یا (Filesystem)
توابع مربوط به فایل ها در PHPبه شما امکان می دهند تا filesystem را دستکاری کرده و تغییر دهید.
نحوه نصب کردن
توابع filesystem جزئی از هسته ی php هستند. و نیازی نیست تا برای استفاده از این توابع آنها را نصب کنید.
توابع filesystem در php5
تابع توضیحات basename تابع ()basename، نام فایل مورد نظر را از یک مسیر، برمی گرداند.
chgrp تابع ()chgrp درواقع usergroup را از فایل مشخص شده تغییر می دهد.
chmod تابع ()chmod دسترسی های یک فایل مشخص را تغییر می دهد.
chown تابع ()chown مالکیت یک فایل مشخص را تغییر می دهد.
clearstatcache تابع ()clearstatcatche درواقع وضعیت کش شدن فایل را مشخص می کند.
copy تابع ()copy یک فایل را کپی می کند.
delete به جای آن به تابع unlink یا unset مراجعه کنید.
dirname تابع ()dirname، نام دایرکتوری را از یک مسیر برمی گرداند.
disk_free_space تابع ()disk_free_space از یک دایرکتوری مشخص، مقدار فضای خالی را به بایت برمی گرداند.
disk_total_space تابع ()disk_total_space فضای کلی یک دایرکتوری مشخص را با بایت برمی گرداند.
diskfreespace یک نام مستعار تابع disk_free_space است.
fclose تابع ()fclose یک فایل باز شده را می بندد.
feof تابع ()feof بررسی می کند که آیا به EOF رسیده ایم یا نه.
fflush تابع ()fflush تمام خروجی بافر شده را دریک فایل باز شده(open) می نویسد.
fgetc تابع ()fgetc یک کاراکتر تکی از یک فایل باز شده را برمی گرداند.
fgetcsv تابع ()fgetcsv یک خط از داده های یک فایل باز شده ی csv را تجزیه می کند.
fgets تابع ()fgets یک خط از یک فایل باز شده را برمی گرداند.
fgetss تابع ()fgetss از یک فایل باز شده، یک خط را برمی گرداند به طوری که تگ های HTML و PHP آن خذف شده اند.
file تابع ()file یک فایل را درون یک آرایه، می خواند.
file_exists تابع ()file_exists بررسی می کند که آیا یک فایل یا یک دایرکتوری، موجود است یا نه.
file_get_contents تابع ()file_get_contents یک فایل را در یک رشته می خواند.
file_put_contents تابع ()file_put_contents یک رشته را درون یک فایل می نویسد.
fileatime تابع ()fileatime زمان آخرین دسترسی به یک فایل مشخص را برمی گرداند.
filectime تابع ()filectime آخرین زمانی که یک فایل مشخص مورد تغییر واقع شده است را برمی گرداند.
filegroup تابع ()filegroup از یک فایل مورد نظر، group ID را برمی گرداند.
fileinode تابع ()fileinode مقدار inode از یک فایل مورد نظر را برمی گرداند.
filemtime تابع ()filemtime آخرین زمانی که محتوای فایل مورد نظر تغییر کرده است را برمی گرداند.
fileowner تابع ()fileowner درواقع user ID(مالک) را از یک فایل مشخص برمی گرداند.
fileperms تابع ()fileperms مجوزهای(permissions) یک فایل یا دایرکتوری را برمی گرداند.
filesize تابع ()filesize سایز یک فایل مشخص را برمی گرداند.
filetype تابع ()filetype نوع فایل را از یک فایل یا دایرکتوری مشخص برمی گرداند.
flock تابع ()flock یک فایل را قفل کرده و یا آزاد می کند.
fnmatch تابع ()fnmatch نام یک فایل یا رشته را با استفاده از یک الگوی(pattern) مشخص، مورد تطابق قرار می دهد.
fopen یک فایل یا url را باز می کند.
fpassthru تابع ()fpassthru تمام داده ها را از مکان کنونی، در یک فایل باز شده می خواند تا هنگامی که به پایان فایل(EOF) برسد و سپس نتیجه را در خروجی می نویسد.
fputcsv تابع ()fputcsv، یک خط داده را به فرمت CSV در می آورد و آن را در یک فایل باز، می نویسد.
fputs این تابع یک نام مستعار از تابع fwrite است.
fread تابع ()fread عمل خواندن را از یک فایل باز شده انجام می دهد.
fscanf Parses input from an open file according to a specified format
fseek تابع ()fseek در یک فایل باز شده پویش می کند.
fstat تابع ()fstat اطلاعاتی را درباره ی یک فایل باز شده برمی گرداند.
ftell تابع ()ftell مکان کنونی(current position) را در یک فایل باز شده، برمی گرداند.
ftruncate تابع ()ftruncate یک فایل باز شده را به یک طول مشخص کوتاه می کند.
fwrite تابع ()fwrite در درون یک فایل باز شده، عمل نوشتن را انجام می دهد.
glob تابع ()glob یک آرایه از نام فایل ها یا دایرکتوری هایی که با یک الگوی مشخص تطابق دارند را برمی گرداند.
is_dir تابع ()is_dir بررسی می کند که آیا فایل مشخص شده یک دایرکتوری است یا نه.
is_executable تابع ()is_executable بررسی می کند که آیا فایل مشخص شده قابل اجرا(executable) است یا نه.
is_file تابع ()is_file بررسی می کند که آیا یک فایل مشخص، یک فایل حقیقی است یا نه.
is_link تابع ()is_link بررسی می کند که آیا فایل مشخص شده یک لینک است یا نه.
is_readable تابع ()is_readable بررسی می کند که آیا فایل مشخص شده قابل خواندن است یا نه.
is_uploaded_file تابع ()is_uploaded_file بررسی می کند که آیا فایل مورد نظر، به وسیله ی HTTP POST آپلود شده است یا نه.
is_writable تابع ()is_writeable بررسی می کند که آیا فایل مورد نظر قابل خواندن است ی نه.
is_writeable یک مستعار از تابع is_writable است.
lchgrp Changes group ownership of symlink
lchown Changes user ownership of symlink
link Creates a hard link
linkinfo تابع ()linkinfo اطلاعاتی را درباره ی یک hard link برمی گرداند.
lstat تابع ()lstat اطلاعاتی را درباره ی یک فایل یا یک لینک سمبلیک برمی گرداند.
mkdir تابع ()mkdir یک دایرکتوری را ایجاد می کند.
move_uploaded_file تابع ()move_uploaded_file یک فایل آپلود شده را به یک مکان جدید حرکت می دهد.
parse_ini_file تابع ()parse_ini_file یک فایل پیکربندی(ini) را تجزیه کرده و تنظیمات درون آن را به صورت یک آرایه برمی گرداند.
parse_ini_string یک رشته ی پیکربندی را تجزیه می کند.
pathinfo تابع ()pathinfo یک آرایه را برمی گرداند که دربردارنده ی اطلاعاتی درباره ی یک مسیر(path)است.
pclose تابع ()pclose یک pipe را که به وسیله ی popen باز شده است را می بندد.
popen تابع ()popen یک pipe را که در برنامه ای که در پارامتر command مشخص شده است را باز می کند.
readfile تابع ()readfile یک فایل را می خواند و آن را در خروجی می نویسد.
readlink تابع ()readlink در واقع target مورد نظر از یک لینک سمبلیک را برمی گرداند.
realpath تابع ()realpath نام مسیر(phathname) مطلق را برمی گرداند.
realpath_cache_get Returns realpath cache entries
realpath_cache_size Returns realpath cache size
rename تابع ()rename یک فایل یا دایرکتوری را تغییر نام می دهد.
rewind تابع ()rewind مکان اشاره گر فایل را به ابتدای فایل برمی گرداند.
rmdir تابع ()rmdir یک دایرکتوری خالی را حذف می کند.
set_file_buffer تابع ()set_file_buffer اندازه ی بافر یک فایل باز شده را ست می کند.
stat تابع ()stat اطلاعاتی را درباره ی یک فایل برمی گرداند.
symlink تابع ()symlink از target موجود به وسیله ی link مشخص شده، یک لینک سمبلیک را ایجاد می کند.
tempnam تابع ()tempnam یک فایل موقت را با یک نام یکتا در یک دایرکتوری مشخص ایجاد می کند.
tmpfile تابع ()tmpfile یک فایل موقت را با یک نام یکتا در حالت read-write یا +w، ایجاد می کند.
touch تابع ()touch زمان دسترسی(access) و زمان اصلاح(modification) فایل مورد نظر را ست می کند.
umask تابع ()umask دسترسی ها را برای فایل ها تغییر می دهد.
unlink تابع ()unlink یک فایل را حذف می کند.
طراحی زیرمنوها به صورت داینامیک
جلسه ی ششم طراحی یک فروشگاه اینترنتی-طراحی زیرمنوها به صورت داینامیک
در قسمت دوم از این جلسه، به آموزش 'طراحی زیرمنوها به صورت داینامیک' خواهیم پرداخت.
آنچه که در قسمت قبل طراحی شد
در قسمت قبل، موارد کلی زیر آموزش داده شدند:
- پیاده سازی منوهای html با استفاده از php با استفاده از یک جدول در داخل دیتابیس
مشاهده ی آنچه که در قسمت قبل طراحی شد:
آنچه که در قسمت 'طراحی زیرمنوها به صورت داینامیک' خواهید آموخت
در قسمت 'طراحی منو به صورت داینامیک' موارد زیر آموزش داده خواهند شد:
توضیح اجمالی:
در این قسمت به تکمیل داینامیک نمودن منوی اصلی سایت می پردازیم.در قسمت قبل منوها را داینامیک نمودیم و اما در این بخش قصد داریم زیرمنوها را نیز به صورت داینامیک از دیتابیس دریافت کنیم و به کاربران نمایش دهیم.
توضیح تفصیلی:
- ایجاد table جدیدی با نام tblzirmenu در دیتابیس جهت ذخیره سازی زیرمنوها
- ایجاد سه فیلد id,title,parent از نوع int,varchar,varchar در جدول فوق
- insert نمودن برخی از زیرمنوها در این table
- یافتن تعداد زیرمنوهای هرمنو با استفاده از دستور rowCount در PDO
- استفاده از دستور شرطی if جهت نمایش یا عدم نمایش زیرمنو در صورت وجود یا عدم وجود
- استفاده از کوئری select جهت اتصال به دیتابیس و فراخوانی زیرمنوها
- کاربرد حلقه while تو در تو جهت fetch کردن زیرمنوها از tblzirmenu
- نحوه نوشتن مقدار متغیرهای غیرعددی در یک کوئری با استفاده از سینگل کوتیشن یا دابل کوتیشن ها
- توضیحاتی در مورد ترکیب متغیرها و دستورات مربوط به php و رفع ایرادات احتمالی یا باگ ها
- prepare نمودن و سپس execute کردن و هم چنین fetch کردن اطلاعات با استفاده از PDO در php
طراحی زیرمنوها به صورت داینامیک
منوهای زیر را در نظر داشته باشید:
حالا می خواهیم ببینیم که به چه صورت می توانیم این زیرمنوها را با استفاده از php پیاده سازی کنیم. پس نرم افزار دریم ویور را باز می کنیم و به سراغ فایل top.php می رویم، یعنی همان فایلی که منوهای ما را در داخل خودش جا داده بود.
قبل از شروع به نوشتن کدها، باید به سراغ دیتابیس برویم و یک table جدید ایجاد کنیم تا زیر منو ها را در داخل آن ذخیره کنیم. بنابراین یک table به نام tblzirmenu ایجاد می کنیم:
پس tblzirmenu جدولی است که قرار است در آن زیرمنوها را ایجاد کنیم.
یک فیلد که باید برای آن در نظر بگیریم عبارت است از فیلد id. ما از فیلد id اکثرا در جدول استفاده می کنیم. دلیل آن هم این است که موقعی که داریم سطرهای جدیدی را در table خود insert می کنیم، اگر که یک فیلد داشته باشیم که به صورت auto increment باشد، سطرها به صورت اتوماتیک افزایش پیدا می کنند. و علاوه بر آن، چون id منحصر به فرد است، به همین دلیل می توانیم با استفاده از id، هر سطری را به طور خاص تشخیص دهیم.
به طور فرضی، اگر بخواهیم که در جدول tblmenu همان طور که در زیر مشاهده می کنید، مشخص کنیم که سطر مربوط به لپتاپ، برابر است با سطر id شماره ی 2، چون این سطر منحصر به فرد است و سطر دیگری وجود ندارد که id آن برابر با 2 باشد، همین سطر مربوط به لپتاپ را برای ما مشخص می کند:
بنابراین id هویت یا شناسه ی هرکدام از این سطرها است به طور منحصر به فرد. درواقع این یکی از مزایای اصلی id است که در ادامه بیشتر با این فیلد آشنا خواهیم شد...
دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:
- شماره جلسه: 6
- نام فایل ویدئو: 19
- فرمت فایل: mp4.
نقطه ی شروع بحث بالا (طراحی زیرمنوها به صورت داینامیک) در ویدئو: 01:41
طراحی کالاهای پیشنهادی
جلسه ی چهارم طراحی یک فروشگاه اینترنتی-طراحی کالاهای پیشنهادی
در قسمت اول از این جلسه، به آموزش 'طراحی کالاهای پیشنهادی' می پردازیم.
آنچه که در قسمت قبل طراحی شد
در قسمت قبل موارد زیر آموزش داده شدند:
- نحوه ی ایجاد قسمت جدیدترین کالاها
- نحوه ی اضافه کردن قسمت اسلایدشو
مشاهده ی آنچه که در قسمت قبل طراحی شد:
آنچه که در قسمت 'طراحی کالاهای پیشنهادی' خواهید آموخت
در قسمت 'طراحی کالاهای پیشنهادی' موارد زیر آموزش داده خواهند شد:
توضیح اجمالی:
- ایجاد div دربردارنده ی قسمت کالاهای پیشنهادی
- ایجاد قسمت 'کالاهای پیشنهادی'
توضیح تفصیلی:
- ایجاد یک تگ div جدید با id به نام underslide و همچنین div دیگری با آی دی underslide1 درون آن با width برابر با 1100 پیکسل.
- تفکیک underslide1 به دو ستون راست و چپ با id های right و left
- استایل دهی به بخش های فوق با استفاده از دستورات css
- ایجاد تگ h2 جهت نمایش عنوان مربوط به کالاهای پیشنهادی
- مثال هایی دیگر از دستور float جهت نمایش المان ها در یک ردیف در کنار یکددیگر.
- عیب یابی کدنویسی قالب و رفع مشکل با استفاده از فایرباگ.
- ایجاد زیرخط زیبا و گرافیکی جهت جدا کردن عنوان از بخش های درون کالاهای پیشنهادی
- مثالی دیگر از دستور box-shadow برای ایجاد سایه در اطراف یک المان
- کار با دستور list-style و نحوه ی حذف نقاط توپر سیاه رنگ کنار تگ های li
- کاربردی دیگر از دستور direction و مشخص نمودن جهت شروع کدنویسی html
- استایل دهی به تگ ul و liهای درون آن و همچنین مشخص نمودن padding یا همان حاشیه داخلی
2.ایجاد قسمت 'کالاهای پیشنهادی'
در این قسمت، به سراغ ایجاد عنوان 'کالاهای پیشنهادی' و نقاط رنگی که در کنار این عنوان مشاهده می شوند می رویم:
به دلیل اینکه این کار را برای قسمت جدیدترین کالاها، یک بار انجام داده ایم، پس می توانیم دوباره از آن استفاده کنیم. کاری که قبلا انجام دادیم این بود که یک تگ h2 ایجاد کردیم و برای آن یک استایل تعریف کردیم. حالا می خواهیم برای ایجاد قسمت 'جدیدترین کالاها' دوباره از آنها استفاده نماییم. قبل از انجام این کار، یک div جدید را باز می کنیم و مقدار id آن را برابر با 'pishnahad' قرار می دهیم،حالا در داخل این div از تگ h2 مورد نظر استفاده می کنیم:
مشاهده ی کد نویسی:
اکنون از div با آی دی pishnahad شروع می کنیم و یک استایل دهی مختصر را به آن اضافه می کنیم، به صورت زیر:
- width یا همان پهنای آن را برابر با % 100 قرار می دهیم.
- مقدار border آن را برابر با 1px solid #ccc قرار می دهیم که درواقع یک کادر به اندازه ی یک پیکسل را ایجاد می کند.
- مقدار دستور border-radius را برابر با 7px قرار می دهیم که باعث گرد شدن حاشیه ها می شود.
مشاهده ی کدنویسی:
با انجام این تنظیمات، اگر که صفحه را دوباره رفرش(refresh) کنیم، تغییرات زیر را مشاهده می نماییم:
مشاهده ی نتیجه:
همان طور که مشاهده می کنید، تگ h2 مورد نظر به نمایش درمی آید. حالا می توانیم استایل مربوط به این تگ h2 را نیز همان طور که قبلا آن را ایجاد کرده بودیم، در اینجا پیاده سازی کنیم. پس همان استایلی را که به تگ h2 داده بودیم از آن استفاده می کنیم درست مثل عکس زیر:
مشاهده ی کد نویسی:
بعد از تعریف استایل برای تگ h2 در داخل div با آی دی 'pishnahad'، تغییرات را ذخیره می کنیم و دوباره صفحه را رفرش(refresh)می کنیم. همان طور که در تصویر زیر می بینید، استایل این تگ h2 مشابه قسمت جدیدترین کالاها شد:
مشاهده ی نتیجه:
به یک نکته ی حائز اهمیت توجه داشته باشید که، دستور float ممکن است ما را دچار سردرگمی کند، الان اگر که کلید F12 را فشار دهیم تا افزونه ی Firebog اجرا شود...
دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:
- شماره جلسه: 4
- نام فایل ویدئو: 12
- فرمت فایل: mp4.
نقطه ی شروع بحث بالا (طراحی کالاهای پیشنهادی) در ویدئو: 8:52
فایل ها در PHP
باز کردن فایل در PHP
تابع ()fopen برای باز کردن فایل ها در php مورد استفاده قرار می گیرد.
پارامتر اول این تابع شامل نام فایلی است که می خواهیم باز شود و پارامتر دوم مشخص می کند که فایل در چه حالتی باز شود:
<html>
<body>
<?php
$file=fopen("welcome.txt","r");
?>
</body>
</html>فایل ممکن است در یکی از حالات زیر باز شود:
حالت توضیحات r فقط خواندنی. از ابتدای فایل آغاز می شود
r+ خواندنی/نوشتنی. از ابتدای فایل آغاز می شود
w فقط نوشتنی. فایل را باز و محتویات آن را پاک می کند، یا اگر فایلی وجود نداشت آن را ایجاد می کند
w+ خواندنی/نوشتنی. فایل را باز و محتویات آن را پاک می کند، یا اگر فایلی وجود نداشت آن را ایجاد می کند
a افزودن(الحاق). فایل را باز و در انتهای آن می نویسد، یا اگر فایلی وجود نداشت آن را ایجاد می کند
a+ خواندنی/افزودنی. محتویات فایل را با نوشتن در انتهای آن حفظ می کند
x فقط نوشتنی. یک فایل جدید ایجاد می کند.اگر فایل درحال حاضر وجود داشته باشد false و یک خطا برمیگرداند
x+ خواندنی/نوشتنی. یک فایل جدید ایجاد می کند. اگر فایل درحال حاضر وجود داشته باشد false و یک خطا برمیگرداند
نکته:اگر تابع ()fopen قادر به باز کردن فایل مشخص شده نباشد٫ مقدار "0" یا (false) را برمی گرداند.
مثال:
در مثال زیر اگر تابع ()fopenقادر به باز کردن فایل مشخص شده نباشد یک پیغام تولید می کند:
<html>
<body>
<?php
$file=fopen("welcome.txt","r") or exit("Unable to open file!");
?>
</body>
</html>بستن فایل در PHP
تابع ()fclose برای بستن یک فایل باز استفاده می شود:
<?php
$file = fopen("test.txt","r");
//some code to be executed
fclose($file);
?>چک کردن پایان فایل
تابع ()feof بررسی می کند که آیا به پایان فایل (eof) رسیده ایم یا نه.
تابع ()feof برای ایجاد حلقه در داده های با طول نامشخص مناسب است.
توجه:شما نمی توانید از فایل هایی که در حالت w و a و x باز شده اند، بخوانید!
if (feof($file)) echo "End of file";
خواندن خط به خط یک فایل
تابع ()fgets برای خواندن یک خط از یک فایل، مورد استفاده قرار می گیرد.
نکته: بعد از هر بار فراخوانی این تابع، اشاره گر فایل، به خط بعدی جابه جا می شود.
مثال:
مثال زیر یک فایل را تا پایان فایل، خط به خط می خواند:
<?php
$file = fopen("welcome.txt", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
while(!feof($file))
{
echo fgets($file). "<br />";
}
fclose($file);
?>خواندن کاراکتر به کاراکتر یک فایل
تابع ()fgetc برای خواندن یک کاراکتر تنها از یک فایل، مورد استفاده قرار می گیرد.
نکته: بعد از فراخوانی این تابع، اشاره گر فایل به کاراکتر بعدی جابه جا می شود.
مثال:
مثال زیر یک فایل را تا پایان فایل، کاراکتر به کاراکتر می خواند:
<?php
$file=fopen("welcome.txt","r") or exit("Unable to open file!");
while (!feof($file))
{
echo fgetc($file);
}
fclose($file);
?>برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHPکلیک کنید.
فرم های html در PHP
فرم های HTML در PHP
مهمترین چیز موقع کار کردن با فرمهای HTML و PHP این است که هر عنصر در فرم HTML به طور اتوماتیک در فرم PHP قابل دسترس و ردیابی است.
در PHP با استفاده از متغیرهای POST_$ و GET_$ می توان به اطلاعات فرم های HTML دسترسی داشت.
مثال:
در مثال زیر یک فرم HTML با سه عنصر زیر تعریف شده است:
- فیلد input از نوع text که با نام "fname" در کد PHP قابل ردیابی است.
- فیلد input از نوع text که با نام "age" در کد PHP قابل ردیابی است.
- فیلد input از نوع submit که محتویات textها را به صفحه "welcome.php" می فرستد.
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>توجه: در مثال بالا از دو خصوصیت در تگ form استفاده شده ولی به صورت کلی خصوصیات تگ form به صورت زیر است:
- action: اگر submit اتفاق افتاد، اطلاعات فرم HTML به صفحه ای که در این خصوصیت مشخص شده ارسال می شود.(به صورت پیش فرض صفحه جاری در نظر گرفته می شود)
- method: با استفاده از این خصوصیت مشخص می کنیم که ارسال اطلاعات از فرم HTML به صفحه PHP به چه شکل باشد، اگر آنرا با مقدار "get" پر کنیم، اطلاعات فرم در آدرس صفحه قرار می گیرد و ارسال می شود، و برعکس اگر آنرا با مقدار "post" پر کنیم، اطلاعات به صورت یک آرایه ارسال می شود.(به صورت پیشفرض Get در نظر گرفته می شود)
- name: نام فرم است كه برای php نیازی به آن نداریم ولی اگه بخواهیم از جاوا اسكریپت استفاده كنیم نیاز می شود (مثل چك كردن صحت ایمیل قبل از ارسال)
- target: نوع باز شدن صفحه مقصد را مشخص می کند كه شامل صفحه جاری ، صفحه جدید ، صفحه پدر ، یك فریم خاص و... است.
- ...
فایل "welcome.php" می تواند چیزی شبیه زیر باشد:
<html>
<body>
Welcome <?php echo $_POST["fname"]; ?>!<br />
You are <?php echo $_POST["age"]; ?> years old.
</body>
</html>اگر در فرم HTML تعریف شده تکس باکس ها را به صورت "fname=Amir" و "age=28" مقدار دهی کنیم خروجی برنامه بعد از کلیک روی دکمه "submit" به صورت زیر خواهد بود:
Welcome Amir!
You are 28 years old.همانطور که قبلاً گفته شد متغیرها با علامت "$" شروع می شوند، در صفحه PHP بالا نیز از متغیری بنام "post_$" استفاده شده که در فصل بعد توضیح داده خواهد شد.
اعتبار سنجی فرم (Validation Form)
اعتبار سنجی فرم یا Validation Form یعنی چک کردن ورودی های کاربر، قبل از اینکه در دیتابیس ذخیره شود، مثلاً در بالا برای تکس باکس "age" باید حتماً کاراکترهای عددی وارد شود، در غیر این صورت برنامه باید پیغام خطا بدهد.
به دو صورت می توان اعتبار سنجی کرد:
- client scripts: اعتبار سنجی سمت سرویس گیرنده انجام می شود که در این صورت سرعت بیشتر خواهد بود.
- server validation: اعتبار سنجی سمت سرویس دهنده انجام می شود، در حقیقت این وظیفه را یک صفحه PHP که روی سرور قرار دارد انجام می دهد.
در فصل های آینده راجع به این موضوع به صورت کامل توضیح داده خواهد شد.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
متغیرهای جلسه در PHP
متغیرهای جلسه (session) در php
وقتی یک Application تحت ویندوز را باز می کنید و چند تغییر روی آن می دهید و سپس آنرا می بندید، کامپیوتر می داند شما چه کسی هستید، چه موقع درخواست را آغاز و چه موقع آن را به اتمام رسانده اید. اما در اینترنت یک مشکل وجود دارد، سرور وب نمی داند شما که هستید و چه می کنید چون آدرس HTTP، حالت State را پشتیبانی نمی کند.
یک جلسه یا session این مشکل را برای شما حل می کند، در حقیقت اطلاعات کاربر(مثل: نام کاربری و غیره) بر روی سرور برای استفاده های بعدی ذخیره می شود. اما اطلاعات جلسه موقتی اند و پس از اینکه کاربر، وب سایت را رها کند، اطلاعات حذف خواهند شد، اگر نیاز به ذخیره سازی دائمی دارید باید داده ها را در یک پایگاه داده ذخیره کنید.
جلسه ها با ایجاد یک شماره ID منحصر به فرد برای هر بیننده و ذخیره متغیرها براساس این شماره ها کار می کنند.
نکته: در یک پروژه تحت وب، بعد از ایجاد یک متغیر جلسه، مقدار آن برای همه ی صفحات پروژه قابل دستیابی است.
آغاز یک جلسه (session) در php
قبل از اینکه بتوانید اطلاعات کاربر، را در جلسه تان ذخیره کنید، ابتدا باید یک جلسه آغاز شود، تابع ()session_start برای این منظور استفاده می شود.
نکته:تابع ()session_start باید قبل از تگ <html> بیاید:
<?php session_start(); ?>
<html>
<body>
</body>
</html>تعریف یک متغیر جلسه (session) در PHP
روش صحیح برای ذخیره و بازیابی متغیرهای جلسه، استفاده از SESSION_$ است:
<?php
session_start();
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>خروجی کد بالا:
Pageviews=1
در مثال زیر یک "شمارنده بازدید صفحه" ایجاد کرده ایم، تابع ()isset بررسی می کند که آیا متغیر "views" در حال حاضر تنظیم شده است یا نه:
<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>از بین بردن جلسه (session) در PHP
برای از بین بردن جلسه ها در PHP می توان از توابع زیر استفاده کرد:
- ()unset: یک جلسه مشخص را به عنوان پارامتر دریافت می کند و آنرا از بین می برد.
- ()session_destroy: کلیه جلسه های ایجاد شده را از بین می برد.
<?php
unset($_SESSION['views']);
?><?php
session_destroy();
?>برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHPکلیک کنید.
متغیرهای رشته ای در PHP
متغیرهای رشته ای در PHP
متغیر های رشته ای برای ذخیره مجموعه ای از کاراکترها استفاده می شود.
در این فصل قصد داریم متداولترین توابعی که برای دستکاری رشته ها(String) در PHP استفاده می شود را نشان دهیم.
بعد از اینکه یک متغیر رشته ای(String Variable) ایجاد کردید می توانید آنرا دستکاری کنید، یک رشته می تواند مستقیماً در یک تابع استفاده شود یا می توانید آنرا در یک متغیر ذخیره کنید.
در کد PHP زیر کلمه "سلام" را به یک متغیر رشته ای(String Variable) بنام TXT$ انتساب داده و سپس آنرا چاپ می کنیم:
<? php
$TXT = "سلام";
echo $TXT;
?>خروجی کد بالا:
سلام
حالا اجازه دهید تا بعضی از توابع و عمل کننده هایی(Operators) که برای دستکاری رشته ها بکار می رود را نشان دهیم:
عمل کننده الحاق(نقطه)
در PHP تنها یک عمل کننده برای رشته ها وجود دارد، و برای الحاق دو رشته بکار می رود، در کد زیر دو رشته "سلام" و "روز خوبی داشته باشید" به هم الحاق شده اند:
<? php
echo "روز خوبی داشته باشید" . " " . "سلام";
?>خروجی کد بالا:
سلام روز خوبی داشته باشید
تابع ()strlen
این تابع برای بازگرداندن طول یک رشته استفاده می شود.
<?php
echo strlen("سلام!");
echo "<br />";
echo strlen("beyamooz.com");
?>خروجی کد بالا:
9
12توجه: در خط اول مثال بالا، چون در رشته "!سلام" از کاراکترهای فارسی استفاده شده است و به ازای هر کاراکتر فارسی 2 بیت فضا در نظر گرفته می شود، خروجی تابع ()strlen به ازای رشته مذکور 9 خواهد شد. یعنی 8 بیت برای رشته "سلام" و 1 بیت برای کاراکتر "!" در نظر گرفته خواهد شد.
تابع ()strpos
این تابع برای پیدا کردن مکان یک کاراکتر یا یک کلمه در یک رشته استفاده می شود.
<?php
echo strpos("beyamooz.com","m");
?>خروجی کد بالا:
4
توجه: همانطور که مشاهده می شود کاراکتر "m" در مکان 4 یافت شد. توجه داشته باشید که اولین مکان در رشته از 0 شروع می شود و نه 1.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.