|
صفحه 3
صفحه 2
صفحه 1
گروه بندی
شما با قرار دادن سمبلهایی كه تا كنون آموخته اید ،در
داخل پرانتز ها، می توانید طرح های جدیدی را ایجاد
كنید.
كلاس ها
فرض كنید كه شما بخواهید مثلا طرحی ایجاد كنید كه با
استفاده
از چهار كاراكتر خاص متناظر شود ، در این صورت باید از
كلاس ها استفاده كنید.
متناظر كردن و جایگزینی طر ح ها
هر چند توابعereg()
وeregi()
برای بررسی تناظر بین یك رشته و یك طرح مناسب می باشد
ولی شما می
توانید
به عنوان یك گام فراتر از توابع دیگری استفاده كنید كه
بعد از متناظر كردن رشته وطرح ،رشته را با یك طرح دیگر
و یا یك متن خاص جایگزین
کند
.
Ereg_replace(“pattern ” , “replace” , “string”) ;
برای مثال یك طرح دقیق برای متناظر كردن آدر س های
E_mail
به صورت زیر است :
$pattrn =
“^([0-9a-z]+)([0-9a-z\._]+)@([0-9a-z\.-]+)\ .
([0-9a-z]+) “ ;
كوكی ها
كوكی ها از جمله قابلیت هایی هستند كه
با وجود موارد استفاده متعدد ،كمتر كسی اقدام به
یادگیری آنها می كنند .
قبل از ایجاد كوكی ها ،تاریخچه ای از
مراجعات كاربران در سایت های وب ثبت نمی شد.
جلسات
Session
جلسات وکوکی ها قا بلیت یادآوری اطلاعات در باره
کاربران را فراهم می آورند که هر یک فراهم کننده روش
متفاوتی برای ذخیره متغیر ها برای استفاده از چندین
صفحه هستند . جلسات ,داده ها را در فایل های موقتی روی
درایور سخت سرویس دهنده ذخیره می کنند .
کوکی ها فایل ها ی کوچک را روی کامپیوتر سرویس دهنده
ذخیره می کنند که مرورگر طبق
در خواست سرویس دهنده آن را پس خواهد فرستاد .
در
php
حمایتی
از جلسات به عمل نمی آمد .حمایت از جلسات توسط یک
کتابخانه اسکریپتی به تام
phplib
بدست آمد . توابع جلسه ای
phplib
در اسکریپت هایی که باید درون هر اسکریپت مورد نیاز
حمایت جلسه لحاظ شود , تعریف شده بودند. پشتیبانی در
php4
سریعتر و آسان تر از توابع جلسه ای
phplib
است .
جلسات , گروه هایی از متغیر ها هستند که برای دسترسی
متوالی به کار می روند ,حتی اگر اسکریپت
php
به اجرای خود پایان داده باشد .یک متغیر از یک صفحه به
صفحه دیگر بدون انتقال فیزیکی آن اطلاعات پایدار می
ماند.
افزودن پشتیبانی جلسه به
php
بسیاری از توزیع
های
php
با صفحات پیکر بندیی
می آیند که می توانیم در آْنها مواردی را که می خواهیم
در داخل ساختار
php
لحاظ نماییم را انتخاب کنیم .
برای فهمیدن این که آیا گزینه های ضروری برای پشتیبانی
جلسه فعال هستند یا خیر ,phpinfo.php
را بررسی کنید .
یک فرمان خاص پیکربندی استاندارد
php4
که خصوصیات جلسه
خاصی را فعال می کند به صورت زیر است :
$./
configure—enable-track-vars—enable-trans-sid—enable-register-globals\--[other
configuration options]
■
–enable-track-vars
این دستور به
php
می گوید که ثبت خودکار متغیر های منتقل شده از طریق در
خواست های
get
ویا
post
وهمچنین از متغیرهای ذخیره شده در کوکی ها و جلسات را
فعال کند .
■
-- enable-trans-sid
این گزینه به
php
امکان منتقل نمودن
id
جلسه را به طور شفاف به خودش می دهد .این دستور
پیکربندی به ما اجازه می دهد که جلسه رااز طریق
URL
انتقال دهیم .در غیر این صورت ,id
جلسه
بوسیله
متد
getوURL
بوسیله متد
POST
منتقل شود . و یا با استفاده از کوکی ها این کار صورت
پذیرد که همیشه قابل اتکا نیست .
■
–enable-register-globals
این گزینه پیکربندی به متغیر های محیطی
get,post,cookie,session
امکان می دهد به عنوان متغیر های عمومی ثبت شوند.
ثبت متغیر جلسه
Boolean session_register(mixed name [, mixed…])
مااز
session_register(“username”)
برای ثبت یک متغیر حاوی نام
login
یک کاربر استفاده می کنیم .در
اینجا از
$username
استفاده نمی کنیم ,بلکه در عوض به
session_register()
می گوییم تا یک متغیر با نام
username
را ثبت کند .هر گونه تغییری که روی متغیر های
session_register
اعمال می گردد , به صورت خودکار توسط
php
بروزرسانی می گردد و برای صفحات دیگری که از متغیرها
استفاده می کنندذخیره می گردد.
ایجاد یك كوكی و خواندن از
آن
نكته مهم در موردكوكی ها این است كه باید آنها را قبل
هر اطلاعات دیگری ،از سرویس دهنده به سیستم كاربر
منتقل كرد .اگر شما بخواهید یك كوكی را پس از دریافت
مثلا قسمتی از یك صفحهhtml
،توسط مرورگر ،به سیستم كاربر
ارسال
كنید، یك پیغام خطا نمایش داده می شود.
كوكی ها توسط تابع
setcookie()
ارسال می شوند :
Setcookie(“name”,”value”) ;
این دستور یك كوكی ، دو مقدار
name,value
به سیستم كاربر ارسال می كند .
پروتكل های وب محدودیت ارسال حداكثر 20 كوكی ،از یك
سرویس دهنده به یك كاربر را تعیین می كند برای بازیابی
اطلاعات یك كوكی باید به متغیر نام كوكی اشاره كنید
.این متغیر مانند متغیر های مربوط به عناصر یك فرم
html
، تولید می شود برای مثال اگر یك كوكی با استفاده از
كد زیر تولید شده باشد
Setcookie(“username” , “larry”) ;
شما برای بازیابی این اطلاعات باید از متغیر
$username
استفاده
کنید.
توجه
مقادیر یك كوكی به
صورت خودكار ،در هنگام ارسال رمزگذاری می شود و همچنین
در هنگام بازیابی توسط
php
رمزگشایی می شوند .
افزودن پارامتر به یك كوكی
با وجود اینكه در
اكثر موارد ،استفاده از دو آرگومان اول تابع
setcookie()
نیاز های ما را برآورده می كند ، ولی باید بدانید كه
این تابع دارای چهار آرگومان است:
Setcookie(“name”,”value” ,”expiration” , “path” ,
“domain”, “secure”) ;
آرگومان
expiration
یك زمان مشخص را برای موجود بودن
كوكی ،تعیین می كند .
اگر مقداری برای این آرگومان مشخص نشود ، كوكی تا
زمانی كه كاربر مرورگر را نبندد ،به كار خود ادامه می
دهد .
آرگومانهای
”expiration” , “path”
كوكی ها را محدود به یك شاخه و یا حوزه خاص می كنند
.مقدار آرگومان
secure
مشخص میكند كه آیا از طریق اتصالات امن
HTTP
ارسال شود . مقدار1
برای این آرگومان ،استفاده از چنین اتصالی را الزامی
می كند .اما مقدار0
مشخص می كند كه چنین اتصالی لازم نیست . برای مثال :
Setcookie(“name”,”value” ,”time()-+00” , “” , “”,
“1”) ;
در اینجا برای نسبت دادن یك مقدار به آرگومان آخر
مجبور شدیم از كوتیشن خالی استفاده كنیم .
پاك كردن یك كوكی
با وجود اینكه یك كوكی به صورت خودكار بعد از بسته شدن
مرورگر كاربر ویا بعد از زمان انقضای
آن
پاك می شود ،اما در مواردی هم شما می خواهید این عمل
را خودتان انجام دهید .
برای پاك كردن یك كوكی می توان از یك كوكی كه حاوی هیچ
مقداری برای
value
نمی باشد ،استفاده كرد برای مثال برای پاك كردن یك
كوكی كه توسط دستور زیر ایجاد شده است :
Setcookie(“username” , “larry”) ;
می توان از چنین دستوری استفاده كرد :
Setcookie(“username” , “ ”) ;
فایل ها و دایركتوری
ها
در
phpدو
روش برای ذخیره داده ها وجود دارد :استفاده از فایل ها
و استفاده از پایگاه داده0
روش اول در مقابل روش دوم دارای دو مزیت می باشد:
مزیت اول این است كه شما اگر از فایل ها برای ذخیره
داده استفاده كنید دیگر لازم نیست
كه
با پایگاه
داده كار كنید ومزیت دوم این است كه دیگر لازم نیست
مبلغ اضافی را كه میزبانهای وب از شما برای دسترسی
به پایگاه داده در خواست می كنند ، پرداخت كنید ولی
با این حال پایگاه داده امنیت بیشتری نسبت به فایل دارد
.
مجوز های فایل
مجوزهای فایل و دایركتوری ،مشخص می كنند كه چه كسی ،
چه كاری روی فایل ویا
دایركتوری
می تواند انجام دهد .گزینه ها ی موجود عبارت هستند از
: خواندن ،نوشتن ،واجرا . معمولا به طور پیش
فرض به صاحب فایل اجازه خواندن و نوشتن داده می شود .
نوشتن بر روی یك فایل
برای نوشتن بر روی یك فایل كه در سرویس دهنده قرار
دارد ،سه مرحله را باید طی كنید : در مرحله اول فایل
را باز كنید ،سپس داده های خود را بر روی آن بنویسید و
در آخر هم آن را ببندید .
خوشبختانه توابع پیش ساخته شده
php
برای انجام هر یك از این مراحل ،دارای نام واضحی می
باشند :
$firstName = “data.txt” ;
filepointer =fopen($filename ,”mode”) ;
fwrite ($filepointer , “data tobe witten”)
;
fclose ($filepointer) ;
ابتدا برای راحتی كار ،نام فایل را در یك متغیر ذخیره
می كنیم .مسیر این فایل به صورت نسبی مشخص می شود .
بعد از مشخص كردن فایل ،باید باید یك اشاره گر فایل در
زمان باز كردن فایل ،ایجاد كنید . مساله مهم به هنگام
باز كردن فایل انتخاب یك حالت برای آن می باشد . مد
چگونگی باز كردن فایل رامشخص می كند .معمولا از
a+برای
حا لت باز كردن استفاده
می شود .در این حالت شما می توانید از فایل برای
خواندن ونوشتن استفاده كنید . در جدول زیر تمام حالت
ها ی ممكن مشخص می شود :
| |
|
حالت های فایل |
|
حالت |
برای ....اجازه می دهد |
|
R |
خواندن از
فایل |
|
w
|
نوشتن بر روی فایل (اگر فایل موجود نباشد
آن را ایجاد می كند ولی اگر موجود باشد در
انتهای آن می نویسد) |
|
A |
افزودن داده های جدید به مطالب قبلی در
صورت وجود فایل ،وایجاد یك فایل در صورت
عدم وجود فایل |
|
R+ |
خواندن از و نوشتن بر روی فایل |
|
W+ |
خواندن از و نوشتن بر روی فایل |
|
A+ |
خوندان
از
و نوشتن بر روی فایل |
|
توجه
با استفاده از تابع
is_writeable
قبل
از
باز كردن فایل ، می توانید بررسی كنید كه آیا سرویس
دهنده اجازه نوشتن بر روی فایل را می دهد ، یا خیر.
خواندن از فایل ها
برای خواندن از روی فایل ها نیز همانند نوشتن بر روی
فایل ها ،باید سه مرحله را طی كنید
:
باز كردن فایل ،خواندن فایل ، بستن آن
.
$filename =”data.txt” ;
$filepointer = fopen ($filename , “mode”) ;
$Array = file ($filename) ;
fclose ($filepointer) ;
تابع فایل یكی از توابع از پیش ساخته
شده
php
است كه تما م داده های یك فایل را می خواند و آنها را
در خانه های یك آرایه قرار می دهد .محدوده هر یك از
عناصر آرایه با یكی از كاراكتر ها ی خط جدید مشخص می
شود.
برای مثال اگر فایل
data.txt
دارای دو خط باشد كه در انتهای هر خط یك كاراكتر خط
جدید
(/n)
قرار گرفته شده باشد ، نتیجه اجرای تابع فایل
file()
، یك آرایه با دو خانه خواهد بود كه در هر خانه یكی از
خط های فایل قرار دارد .
دایركتوری
ها
دایركتوری در این قسمت به معنای یك بخش از دیسك سخت می
باشد كه فایل ها و دایركتوریها ی دیگر را در خود ذخیره
كرده است .
دستوری كه در
php
برای ایجاد دایركتوری به كارمی رود ، به این صورت می
باشد :
Mk (“path” , “permissions” ) ;
پارامتر
path
،شامل نام و مسیر دایركتوری می شود . در حالی كه
پارامتر
permission
مجوز لازم برای این دایركتوری را مشخص می كند .
كنترل
upload
فایل ها
در
php
كنترل اطلاعات ارسال شدده توسط فرم های
html
بسیار ساده است . این سادگی در مورد فایل هایی كه
كاربر از طریق فرم های
html
،upload
می كند نیز صادق است .
برای اینكه این قابلیت راایجاد كنیم كه كاربران
بتوانند از طریق فرم های
html
، یك فایل را ارسال كنند ،باید دو متغیر در فرم های
استاندارد اعمال كنید.
اولا دربرچس
<FORM>
باید ازعبارت
=”multipart/form-data ENCTYPE
استفاده كنید تا بدین وسیله مشخص كنید كه به همراه
داده های دیگر یك فایل نیز توسط فرم ارسال می
شود.همچنین برای ایجاد یك فیلد برای مشخص كردن فایل از
كدی مانند
<inpute type=file name= “name” >
باید
استفاده كنید .یك فایل بعد از مشخص شدن توسط كاربر ،در
هنگام ارسال همراه داده های دیگر به سرویس دهنده
upload
می شود و شما می توانید توسط اسكریپت های
php
،این فایل را به راحتی كنترل كنید و در اختیار خود
بگیرید .
یك فایل بعد از
uploade
شدن در یك دایركتوری به صورت موقت ،جای می گیرد
.اولین كاری كه شما باید بكنید این است كه آن را به
صورت دایم در یك دایركتوری دیگر ذخیره كنید .
برای كپی كردن یك فایل،از یك مكان به مكان دیگر ،از
تابع
copy()
استفاده می شود :
Copy( “sourceName” , “DestinationName”) ;
سپس با استفاده از تابع
unlink()
،باید نسخه موقت این فایل را پاك كرد .
تغییر نام و حذف فایل و دایركتوری
ها
در
php
توابع از پیش ساخته شده ای برای تغییر نام و پاك كردن
فایل ها و یا دایركتوریها وجود دارد همچنین تابعی نیز
برای نمایش فایل ها ی یك دایركتوری در نظر گرفته شده
است .
تابعی كه برای تغییر نام فایل ها و یا دایركتوریها به
كار می رود ، تابع
rename()
می باشد از این تابع به صورت زیر استفاده می شود:
Rename(“ old name” , “naw name” ) ;
تابع دیگر ،تابع
filesize()
است كه برای مشخص كردن اندازه یك فایل بر حسب بایت به
كار می رود . برای مثال:
$number = filesize(“filename”) ;
برای خواندن و یا به عبارت بهتر دریافت نام فایل هایی
كه در یك دایركتوری وجود دارند ،باید ایتدا دایركتوری
را باز كنید .در این مورد به جای استفاده از یك اشاره
گر فایل از یك كنترل كننده دایركتوری استفاده می شود .
بعد از باز كردن دایركتوری ،تمام نام فایل ها را می
خوانیم و سپس دایركتوری را می بندیم .
$handle =opendir (“path”) ;
readdir ($handle) ;
closedir ($handle) ;
ازآنجایی
كه تابع
readdir()
،هر بار ، تنها یك نام فایل را می خواند شما برای دریافت
تمام نام فایل
ها
، باید این تابع را در داخل یك حلقه قرار دهید .
While(readdir ($handle) ) {
Statements;
String Getcwd( )
می توان دایرکتوری فعلی را با استفاده از تابع بالا به
دست
آورد
.این تابع دایرکتوری فعلی را برمی گرداند .
Int opendir()
برای خواندن محتویات یک دایرکتوری را باز کنید .تابع
بالا دایرکتوری مشخص شده بوسیله آرگومان
path
را باز می کند .این تابع یک اداره کننده دایرکتوری را
در صورت موفقیت باز می گرداند .که می تواند برای اشاره
به دایرکتوری باز شده در فراخوانی های بعدی تابع به
کار رود .
String readdir()
هنگامی که دایرکتوری را باز کردید می توانید محتویات
آن را با تابع
readdir
بخوانید . این تابع نام ورودی بعدی در دایرکتوری را بر
می گرداند .
استفاده از
include
و
require
برای استفاده یک صفحه ,از کد صفحه دیگر از توابع
include()وrequire()
استفاده می شود :
Include(“file.php”) ;
Require(“file.php”) ;
این دوتابع همانند یکدیگر عمل می کنند , با این تفاوت
که تابع
require()
اگر در هر جای برنامه استفاده شود , حتما فراخوانی می
شود , حتی اگر داخل یک ساختار شرطی با شرط همیشه
نادرست قرار گیرد .اما تابع
include()
مانند توابع دیگر فراخوانی می شود . بنابر این از تابع
require()
زمانی استفاده می شود که حتما بخواهیم فایل را به صفحه
الحاق کنیم و از تابع
include
زمانی استفاده می شود , که الحاق به شرایطی بستگی
داشته باشد .
هر یک از دو تابع
reqire()
و
include()
فایل ذکر شده را به فایل اصلی , الحاق شده به صورت
html
در نظر گرفته می شود , مگر اینکه داخل برچسب های
php
قرار داده می شود .مگر اینکه داخل برچسب های
php
قرار داده شده باشند . بعد از فراخوانی هر یک از این
توابع متغیر های هر یک از فایل ها در داخل فایل دیگر
نیز قابل دسترسی هستند .
استفاده از عنوانهای
http
یک عنوان
Hypertxet Transfer
گیرنده وسرویس دهنده به کار می رود . این اطلاعات
معمولا به صورت
html
می باشند .به همین دلیل است که آدر س های صفحات وب با
http:\
آغاز می شوند
مبحث عنوان های
http
بسیار گسترد است و کاربرد های زیادی برای آن در نظر
گرفته می شود .یکی از معمولی ترین کاربرد های عنوان
های
HTTP
هدایت کاربر از یک صفحه به صفحه دیگر
می باشد
.
در
php
برای بکار بردن عنوانها از تابع
header()
استفاده می شود .
برای هدایت مرورگر کاربر , در
php
از این کداستفاده می شود :
Header(“location:page.php”) ;
شما هخچنین می توانید برای ارسال کوکی ها از تابع
header
استفاده کنید .
نکته حائز
اهمیت در مورد تابع
header
این است که این تابع ,همانند تابع
setcookie()
باید قبل از ارسال هر گونه اطلاعاتی از صفحه به مرورگر
کاربر
فراخوانی شود .
String getcwd()
می توان دایرکتوری فعلی را با استفاده از تابع بالا به
دست
آورد
.این تابع دایرکتوری فعلی را برمی گرداند .
Int opendir()
برای خواندن محتویات یک دایرکتوری را باز کنید .تابع
بالا دایرکتوری مشخص شده بوسیله آرگومان
path
را باز می کند .این تابع یک اداره کننده دایرکتوری را
در صورت موفقیت باز می گرداند که می تواند برای اشاره
به دایرکتوری باز شده در فراخوانی های بعدی تابع به
کار رود .
String readdir()
هنگامی که دایرکتوری را باز کردید می توانید محتویات
آن را با تابع
readdir
بخوانید .این تابع نام ورودی بعدی در دایرکتوری را بر
می
گرداند.
صفحهي قبل |