رفتن به مطلب

lion

کاربر سایت
  • تعداد ارسال ها

    112
  • تاریخ عضویت

  • آخرین بازدید

پست ها ارسال شده توسط lion

  1. به وسیله تابع ( ) ftp_connect به سرور FTP خود متصل شده و می توانید فایل های مورد نظر خود را آپلود ، دانلود ، جا به جا و ... نمایید .

    این تابع یک اتصال ( Connection ) به سرور باز کرده و پس از آن می توانید از سایر تابع های FTP در زبان PHP برای ارتباط با سرور استفاده نمایید .

    شکل کلی استفاده از این تابع به صورت زیر است :

     

     

    ftp_connect( host , port , timeout ) ;

     

    host

    این پارامتر سرور FTP ای که می خواهید به آن متصل شوید را مشخص می کنید . می تواند به صورت یک دامنه اینترنتی یا IP بوده و نباید شامل کاراکترهای " //:ftp" یا " // " باشد .

    استفاده از این پارامتر اجباری است .

    port

    این پارامتر شماره پورت سرور را مشخص می کند . مقدار پیش فرض آن ، 21 است .

    استفاده از این پارامتر اختیاری است .

    timeout

    این پارامتر مدت زمانی را تعیین می کند که پس از اتصال به سرور ، چنانچه تبادل اطلاعاتی با سرور انجام نشود ، ارتباط ( connection ) به سرور ، به صورت خود به خود قطع می شود . مقدار پیش فرض این خاصیت 90 ثانیه است .

    استفاده از این پارامتر اختیاری است .

     

    مثال عملی :

     

    در مثال زیر ، با استفاده از تابع ( ) ftp_connect به سرور FTP مورد نظر خود متصل شده ایم . اگر به هر دلیل ، ارتباط با سرور برقرار نشود ، تابع ( ) die یک پیام خطا را به کاربر نمایش می دهد .

    نکته : از متغیر conn$ برای قرار دادن اطلاعات اتصال ( Connection ) به سرور در آن استفاده کرده ایم ، که در پایان عملیات توسط تابع ( ) ftp_close آن را ببندیم .

     

     

    < ? php     $conn = ftp_connect( "ftp.testftp.com") or die( "Could not connect" ) ;    // سایر کدهای برنامه ...    ftp_close( $conn ) ;? >

     

  2. در این بخش مهمترین و پرکاربردترین توابع زبان PHP برای مدیریت خطاهای رخ داده در برنامه را معرفی کرده ایم . برای دریافت اطلاعات بیشتر بر روی نام هر تابع کلیک نمایید :

    به وسیله این توابع می توانید خطاهای رخ داده در کدهای PHP را شناسایی و مدیریت کرده و اطلاعات مربوط به آنها را در log سرور ذخیره کرده و یا برای ایمیل کاربر ارسال نمایید .

    نکته : تمامی توابع مدیریت خطای PHP ، به صورت پیش فرض بر روی سرورهای این زبان نصب شده و نیاز به هیچ نصب اضافه ای نیست .

     

     

    debug_backtrace ( ) این تابع اطلاعات کاملی راجع به خطای رخ داده را ، به صورت یک آرایه نمایش می دهد .

    error_get_last ( ) این تابع اطلاعات آخرین خطای رخ داده در کد برنامه را بر می گرداند .

    error_log ( ) این تابع اطلاعات خطاهای رخ داده در صفحه را در یک فایل بر روی سرور ذخیره کرده و یا به ایمیل کاربر ارسال می کند .

    error_reporting ( ) این تابع مشخص می کند که چه خطاهایی به سیستم گزارش شوند .

    set_error_handler ( ) این تابع یک تابع را به عنوان تابع پیش فرض برای مدیریت خطاها در صفحه تعیین می کند .

    set_exception_handler ( ) این تابع ، یک تابع تعیین شده از سوی طراح را به عنوان تابع مدیریت کننده استثناها در صفحه تعیین می کند .

    trigger_error ( ) این تابع برای شناسایی یک خطا یا فراخوانی تابع مربوط به آن به کار می رود .

    user_error ( ) این تابع برای شناسایی یک خطا یا فراخوانی تابع مربوط به آن به کار می رود . عملکرد آن همانند تابع ( ) trigger_error است .

     

    مقادیر ثابت ( Constants ) در کد نویسی خطا یابی PHP :

     

    زبان PHP دارای تعدادی مقدار ثابت یا Constants در زمینه مدیریت خطا یابی است . هر یک از این ثابت ها ، دارای مفهوم و کاربرد خاصی هستند . لیست زیر این ثابت ها به همراه توضیحات آنان را ارائه کرده است :

     

    2 E_WARNING خطا با شدت اهمیت کم بوده و مانع اجرای اسکریپت نخواهد شد .

    8 E_NOTICE پیام خطا یک اعلان مشکل . برنامه ممکن است ایرادی پیدا کرده باشد که از نظرش خطاست ، ولی مشکل خاصی ایجاد نمی کند .

    256 E_USER_ERROR این خطا یک خطا مهم بوده و توسط کاربر پیش بینی شده است . به احتمال زیاد اجرای روند اسکریپت را متوقف می کند .

    512 E_USER_WARNING یک پیام اخطار معمولی که معمولا باعث توقف اجرای اسکریپت نشده و توسط طراح پیش بینی شده است .

    1024 E_USER_NOTICE یک اعلان بروز خطا یا مشکل معمولی که توسط طراح پیش بینی شده است .

    4096 E_RECOVERABLE_ERROR یک خطای مهم و از کار اندازنده ، که قابل پیش بینی و مدیریت می باشد . معمولا این خطا توسط یک مدیریت کننده خطا طراحی شده توسط طراح برنامه ، شناسایی می شود .

    8191 E_ALL همه نوع خطا و اخطار را شامل می شود .

  3. به صورت پیش فرض ، PHP یک پیام حاوی اطلاعات خطا رخ داده را به سیستم logging سرور یا یک فایل خاص ، بسته به اینکه فایل php.ini ، بر روی سرور چگونه تنظیم شده باشد ، ارسال می کند .

    به وسیله تابع ( ) error_log ، می توانید پیام های خطا رخ داده را به یک فایل خاص یا به ایمیل کاربر ارسال نمایید . ارسال یک ایمیل حاوی اطلاعات خطا می تواند یکی از کارآمدترین روش ها باشد . البته فقط این کار را برای خطاهای مهم و از کار اندازنده انجام دهید ، نه هر خطای معمولی ! .

    در مثال زیر ، نحوه استفاده از تابع ( ) error_log را در عمل نمایش داده و در صورت بروز خطا ، ایمیلی حاوی اطلاعات آن به آدرس ایمیل کاربر ، ارسال می شود :

     

     

    < ? php    // تابع مدیریت کننده خطا و فرستنده ایمیل   function customError($errno, $errstr)       {           echo " Error: [$errno] $errstr<br>";           echo "Webmaster has been notified";           error_log("Error: [$errno] $errstr",1, " someone@example.com " , " From: webmaster@example.com " ) ;       }   // تعیین تابع پیش فرض خطا   set_error_handler("customError",E_USER_WARNING);   // مکان بروز خطا   $test=2;   if ($test>1)       {           trigger_error("Value must be 1 or below",E_USER_WARNING);       }? >

     

     

     

    خروجی خطای رخ داده در سیستم به صورت زیر خواهدد بود :

     

     

    Error: [512] Value must be 1 or belowWebmaster has been notified

     

     

    همچین کاربر ایمیلی با محتویات زیر را دریافت خواهد کرد :

     

     

    Error: [512] Value must be 1 or below

     

  4. در این بخش کار با تابع ( ) error_trigger را فرا خواهید گرفت . از تابع ( ) error_trigger در زمانی استفاده می شود که بروز خطا را پیش بینی کرده و کد لازم را برای مدیریت آن تعیین می کنیم .

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

    در مثالی زیر کدی طراحی کرده ایم تا در صورتی که مقدار متغیر test$ از 10 بیشتر بود ، یک پیام خطا توسط رویداد ( ) error_trigger صادر شود .

     

     

    < ? php     $test=20;         if ( $test > 10 )              {                   trigger_error( "Value must be 10 or below" ) ;              }? >

     

     

     

     

    خروجی این خطا ، به صورت زیر خواهد بود :

     

     

    Notice: Value must be 1 or belowin C:\webfolder\test.php on line 6

     

     

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

    در مثال زیر ، شکل کاملتری از مثال فوق را ارائه دادیم .

     

    در کد زیر ، به علت اینکه تابع ( ) customError را به عنوان تابع مدیریت کننده پیش فرض کد تعریف کرده ایم ، در هنگام بروز خطا ، تابع ( ) error_trigger پارامترهای لازم را درباره خطا به تایع ( ) customError فرستاده و این بار این تابع خروجی خطا را اعلام کرده و آن را مدیریت می کند :

     

     

    < ? php    // تابع مدیریت کننده خطا    function customError( $errno , $errstr )         {              echo "Error: [$errno] $errstr<br>";              echo "Ending Script";              die( );          }    // تعیین تابع مدیریت کننده پیش فرض    set_error_handler( "customError",E_USER_WARNING ) ;    // بروز خطا و ارسال پارامترهای لازم     $test = 20 ;         if ( $test > 10 )              {                   trigger_error( "Value must be 10 or below",E_USER_WARNING ) ;              }? > 

     

     

    خروجی کد ، این بار به صورت زیر خواهد بود :

     

     

    Error: [512] Value must be 10 or belowEnding Script

     

  5. ساخت یک مدیریت کننده خطا نسبتا ساده است . به طور معمول ، تابعی را طراحی می کنیم تا در هنگام بروز خطا در صفحه ، فراخوانی شود .

    تابع طراحی شده بایستی حداقل دو پارامتر ورودی را دریافت و مدیریت کند :

     

    شدت اهمیت خطا ( error level ) .

    پیام خطا ( error message ) .

    همچین چندین پارامتر اختیاری نیز می تواند داشته باشد :

     

    نام فایل ( file name ) .

    شماره خطی از برنامه که خطا در آن رخ داده است ( line number ) .

    محتوای خطا ( error context ) .

    شکل کلی یک تابع طراحی شده برای مدیریت خطا در PHP می تواند به صورت زیر باشد :

     

     

    error_function ( error_level , error_message , error_file , error_line , error_context ) ;

     

     

    error_level

    این پارامتر شدت اهمیت خطا را تعیین می کند . یک مقدار عددی است و شرح موارد آن در جدول راهنمای شماره 1 آمده است .

    استفاده از این پارامتر اجباری است .

    error_message

    این پارامتر پیام خطا را که حاوی اطلاعاتی راجع به آن است را تعیین می کند .

    استفاده از این پارامتر اجباری است .

    error_file

    این پارامتر نام فایلی که خطا در آن رخ داده است ، را مشخص می کند .

    استفاده از این پارامتر اختیاری است .

    error_line

    این پارامتر شماره خطی که خطا در آن رخ داده است را مشخص می کند .

    استفاده از این پارامتر اختیاری است .

    error_context

    این پارامتر نیز تمامی متغیرها و مقدارهایشان که در کد برنامه ای که خطا در آن رخ داده است را شامل می شود .

    استفاده از این پارامتر اختیاری است .

     

    جدول راهنمای شماره 1 : جدول زیر انواع مقادیر مختلف برای شدت اهمیت خطای رخ داده و توضیحات آنها را نشان می دهد :

     

     

     

    پارامتر پارامتر توضیح

    2 E_WARNING خطا با شدت اهمیت کم بوده و مانع اجرای اسکریپت نخواهد شد .

    8 E_NOTICE پیام خطا یک اعلان مشکل . برنامه ممکن است ایرادی پیدا کرده باشد که از نظرش خطاست ، ولی مشکل خاصی ایجاد نمی کند .

    256 E_USER_ERROR این خطا یک خطا مهم بوده و توسط کاربر پیش بینی شده است . به احتمال زیاد اجرای روند اسکریپت را متوقف می کند .

    512 E_USER_WARNING یک پیام اخطار معمولی که معمولا باعث توقف اجرای اسکریپت نشده و توسط طراح پیش بینی شده است .

    1024 E_USER_NOTICE یک اعلان بروز خطا یا مشکل معمولی که توسط طراح پیش بینی شده است .

    4096 E_RECOVERABLE_ERROR یک خطای مهم و از کار اندازنده ، که قابل پیش بینی و مدیریت می باشد . معمولا این خطا توسط یک مدیریت کننده خطا طراحی شده توسط طراح برنامه ، شناسایی می شود .

    8191 E_ALL همه نوع خطا و اخطار را شامل می شود .

    نحوه طراحی یک مدیریت کننده خطا :

     

    تابع زیر یک مدیریت کننده خطای معمولی را نشان می دهد که میزان شدت اهمیت خطا و پیام آن را در خروجی چاپ می کند :

     

     

    function customError( $errno , $errstr )  {     echo "Error : [$errno] $errstr ";     echo "Ending Script";     die( );  }

     

     

    هنگامی که خطایی رخ می دهد ، تابع فوق شدت اهمیت خطا را توسط پارامتر $errno و پیام خطا را توسط پارامتر $errstr دریافت کرده و در خروجی نشان می دهد .

    اکنون که تابع مدیریت خطا را طراحی کردیم ، باید کد فراخوان آن را در جاهایی که می خواهیم ، قرار داده تا در صورت بروز خطا ، تابع فوق فراخوانی شود .

     

    تنظیم فراخوان کننده تابع مدیریت خطا ( event handler ) :

     

    مدیریت کننده پیش فرض برای خطا در PHP تعیین شده است . اما در مثال این بخش ، ما قصد داریم تا تابعی به نام ( ) customError را که خود برای اجرا در زمان بروز خطا ، طراحی کرده ایم را به عنوان مدیریت کننده پیش فرض خطا قرار دهیم .

    لازم به ذکر است که این امکان وجود دارد تا شما برای هر بخش از کد یا دسته ای از توابع یک مدیریت کننده خطا پیش فرض تعیین کنید ، تا در مواقع مختلف بروز خطا ، به گونه های مختلف با آن برخورد نمایید .

    اما در این مثال به وسیله تابع ( ) set_error_handler ، ما تابع ( ) customError را به عنوان مدیریت کننده خطای پیش فرض اسکریپت تعیین کرده ایم :

     

     

    set_error_handler( " customError " ) ;

     

     

    مثال عملی کاملتر :

     

    مثال : در مثال زیر ، پس از اینکه تابع مدیریت کننده خطا پیش فرض را برای برنامه تعیین کردیم ، در خط آخر مثال ، به برنامه دستور داده ایم تا مقدار متغیری که تعریف نشده است را چاپ کند !! این کار باعث بروز یک خطا شده و تابع مدیریت خطا را فراخوانی می کند :

     

     

    <?php  // تابع مدیریت کننده خطا function customError($errno, $errstr)   {     echo "<b>Error:</b> [$errno] $errstr";   } // تعیین تابع پیض فرض برای مدیریت خطا set_error_handler("customError"); // بروز و فراخوانی خطا echo($test);?>

     

     

    پس از اجرای کد فوق و بروز خطا ، پیام زیر به عنوان پیام خطا توسط تابع ( ) customError اعلام می شود .

     

     

    Error : [8] Undefined variable : test

     

  6. مدیریت خطاهای احتمالی در کدها و اسکریپت های PHP ساده و روان است . در حالت پیش فرض یک پیام خطا همراه با نام فایلی که خطا در آن رخ داده ، شماره خط خطا و پیامی که تشریح کننده خطا است ، به مرورگر ارسال می شود .

     

    نحوه مدیریت خطا در PHP :

     

    در زمان نوشتن اسکریپت ها و برنامه های تحت وب ، مدیریت خطا یک بخش مهم به حساب می آید . اگر کد شما ، نقص مدیریت خطا داشته باشد ، برنامه طراحی شده بسیار مبتدی به نظر آمده و خطراتی ممکن است آن را تهدید نماید .

    در این بخش مهمترین و پرکاربردترین متدهای مدیریت خطادر PHP را بررسی می کنیم ، که عبارتند از :

     

    تابع ساده ( ) die .

    برخورد با خطاهای گوناگون و فعال کننده های خطا .

    گزارش دهی خطا .

     

    ساده ترین روش مدیریت خطا در PHP - تابع ( ) die :

     

    نحوه کار با تابع ( ) die را با یک مثال ساده نمایش می دهیم .

    کد زیر یک مثال ساده را نشان می دهد که یک فایل متنی را باز می کند :

     

     

    < ? php    $file = fopen( "welcome.txt" , "r" ) ; ? >

     

     

    حال اگر فایل به هر دلیلی وجود نداشته و یا از روی سرور پاک شده باشد ، برنامه پیام خطایی مشابه پیام زیر صادر می کند :

     

     

    Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:No such file or directory in C:\webfolder\test.php on line 2

     

     

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

     

     

    < ? php     if( !file_exists( "welcome.txt" ) )        {            die("File not found");        }    else      {           $file = fopen( "welcome.txt" , "r" ) ;      }? >

     

     

    حال اگر در باز کردن فایل مورد نظر ، خطایی رخ دهد ، به جای پیام طولانی فوق ، پیام ملموس و کوتاه زیر نمایش داده می شود :

     

     

    File not found

     

     

    البته لازم به ذکر است که روش فوق برای خطاهای معمولی قابل استفاده بوده و در موارد مهمتر باید از مدیریت کننده های خطاهای پیشرفته تر استفاده نمود .

    در بخش بعدی ، بخش طراحی مدیریت کننده خطا ها در PHP به تشریح روش های حرفه ای تر خواهیم پرداخت .

  7. مرجع توابع کار با فایل ها در PHP :

     

    توابع کار با فایل ها در PHP ، امکان دسترسی و کار با فایل ها را در این زبان به شما می دهند . به وسیله این توابع ، می توانید فایل های روی سرور را باز کرده ، بخوانید ، تغییر دهید و ... .

     

    پیش نیاز نصب :

     

    مجموعه توابع کار با فایل ها ، جزء هسته اصلی زبان 8 بوده و برای استفاده از آنها به نصب یا تغییر خاصی در تنظیم سرورتان نیست .

     

    فهرست توابع :

     

     

    basename ( ) این تابع ، نام یک فایل که آدرس آن تعیین شده را بر می گرداند .

    chgrp ( ) این تابع ، گروه کاربرانی که امکان دسترسی به یک فایل خاص را دارند ، تعیین می کند .

    chmod ( ) این تابع ، سطح دسترسی به یک فایل خاص را مشخص می کند .

    chown ( ) این تابع ، مالک ( owner ) فایل مورد نظر را تغییر می دهد .

    clearstatcache ( ) این تابع ، میزان حافظه اشغال شده توسط یک تابع یا فایل در حافظه موقت را آزاد می کند .

    copy ( ) این تابع ، محتویات یک فایل مورد نظر را در مکانی دیگر بر روی سرور ، کپی می کند .

    dirname ( ) این تابع ، نام پوشه جاری در یک آدرس داده شده به آن را بر می گرداند .

    disk_free_space ( ) این تابع ، میزان فضای خالی در یک پوشه که آدرس آن داده شده را بر حسب bytes بر می گرداند .

    disk_total_space ( ) این تابع ، میزان فضای کلی یک پوشه که آدرس آن داده شده را بر حسب bytes بر می گرداند .

    diskfreespace ( ) این تابع ، میزان فضای خالی در یک پوشه که آدرس آن داده شده را بر حسب bytes بر می گرداند . عملکرد این تابع همانند تابع ( ) disk_free_space است .

  8. به وسیله قابلیت های کار با فایل ها در PHP ، شما می توانید فایل های متنی و یا سایر فایل ها را باز کرده ، خوانده ، ویرایش نموده و یا جستجو نمایید .

    در این بخش قصد داریم تا متدها و توابعی که برای کار با فایل ها در PHP در نظر گرفته شده اند ، را تشریح نماییم .

     

     

    باز کردن یک فایل - متد ( ) fopen :

     

    به وسیله تابع ( ) fopen در PHP ، می توانید یک فایل را باز کنید .

    این تابع دو پارامتر اصلی دارد . پارامتر اول تعیین کننده نام و آدرس فایل و پارامتر دوم تعیین کننده نحوه باز کردن فایل است . در ادامه به توضیح این پارامترها خواهیم پرداخت .

    برای کار با این تابع ، باید خروجی آن را در یک متغیر ذخیره نمود و سپس آن متغیر را در سطح برنامه استفاده نمود .

     

    شکل کلی استفاده از این متد به صورت زیر است :

     

     

    < ? php  $ نام یک متغیر دلخواه = fopen ( " نحوه باز کردن فایل " , " نام یا آدرس فایل مورد نظر " )  ;? > ? > مثال : < ? php  $My_File = fopen ( " Example.txt " , " r" ) ;? >

     

     

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

     

     

    r در این حالت فایل به صورت فقط خواندنی و از ابتدای آن باز می شود . در این حالت امکان تغییر فایل برای کاربر وجود ندارد .

    +r در این حالت فایل به صورت خواندنی ، قابل ویرایش و از ابتدا باز می شود . در این حالت امکان تغییر فایل برای کاربر وجود دارد .

    w در این حالت فایل به صورت فقط نوشتنی و قابل تغییر باز می شود . در این حالت چنان فایل از قبل وجود داشته باشد ، محتویات آن پاک می شود . و اگر وجود نداشته باشد ، یک فایل جدید ایجاد می شود .

    +w در این حالت فایل به صورت خواندنی و نوشتنی و قابل تغییر باز می شود . در این حالت چنان فایل از قبل وجود داشته باشد ، محتویات آن پاک می شود . و اگر وجود نداشته باشد ، یک فایل جدید ایجاد می شود .

    a در این حالت فایل باز شده و متن تعیین شده به انتهای آن اضافه می شود .

    x در این حالت یک فایل جدید با نام تعیین شده ایجاد و به صورت فقط نوشتنی باز می شود . چنانچه فایل از قبل وجود داشته باشد ، برنامه پیام error صادر کرده و مقدار false را بر می گرداند .

    +x در این حالت یک فایل جدید با نام تعیین شده ایجاد و به صورت خواندنی و نوشتنی باز می شود . چنانچه فایل از قبل وجود داشته باشد ، برنامه پیام error صادر کرده و مقدار false را بر می گرداند .

     

    اگر سرور فایل را پیدا نکرده و یا وجود نداشت ، چه می شود :

     

    که در تابع ( ) fopen تعیین کرده ایم ، وجود نداشت و یا سرور موفق نشد ، آن را پیدا کند ، برنامه یک پیام error صادر کرده و مقدار false یا 0 را بر می گرداند .

    اسکریپت زیر ، در صورتی که فایل وجود نداشته باشد ، یک پیام هشدار را به کاربر نمایش می دهد :

     

     

    < ? php  $file = fopen ( " welcome.txt " , " r " ) or exit ( " Unable to open file ! " ) ;? >

     

     

    بستن یک فایل باز شده - متد ( ) fclose :

     

    پس از اینکه یک فایل را با دستور ( ) fopen باز کردیم ، می توانیم آن را با دستور ( ) fclose ببندیم .

    برای این منظور باید نام متغیری که در هنگام باز کردن فایل به کار بردیم و محتویات فایل را درون آن ذخیره نمودیم را در پرانتز مقابل تابع ( ) fclose قرار دهیم .

    شکل کلی استفاده از این متد به صورت زیر است :

     

     

    < ? php  fclose ( " نام متغیری که فایل باز شده را در آن قرار داده بودیم" ) ;? > مثال : < ? php  $My_File = fopen ( " Example.txt " , " r" ) ;         // یک فایل را با این دستور باز کرده ایم .... fclose ( $My_File ) ;                 // فایل باز شده را بسته ایم? >

     

     

    چک کردن اینکه به آخر فایل رسیده ایم یا خیر ؟ - متد ( ) feof :

     

    تابع ( ) feof ، چک می کند که آیا برنامه به آخر یک فایل رسیده است یا خیر .

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

    نکته : از این تابع در زمانی که فایل را با حالت های w , a و x باز کرده اید ، نمی توانید استفاده نمایید .

    شکل کلی استفاده از این متد به صورت زیر است :

     

     

    < ? php  feof ( نام فایل مورد نظر ) ; ? >

     

     

    مثال : در مثال زیر یک اسکریپت طراحی شده است که فایل My_File$ را بررسی کرده و چنانچه برنامه به آخر آن رسیده باشد ، یک پیام صادر می کند :

     

     

    < ? php  if ( feof ( $ My_File ) ) echo " End of file " ; ? >

     

     

    خواندن یک فایل به صورت خط به خط :

     

    به وسیله تابع ( ) fgetc در PHP ، می توانید یک فایل متنی را باز کرده و به صورت خط به خط ، بخوانید . سپس در صورت نیاز در خروجی چاپ نمایید .

    این تابع فایل را به صورت خط به خط خوانده و پس از خواندن یک خط ، اشاره گر به ابتدای خط بعدی منتقل می شود .

     

    مثال : اسکریپت مثال زیر یک فایل متنی را به وسیله یک دستور حلقه ، به صورت خط به خط خوانده و سپس در خروجی چاپ می نماید :

     

     

    < ? php  $file = fopen( "welcome.txt", "r" ) or exit ( "Unable to open file!" ) ; // حلقه زیر فایل را به صورت خط به خط تا رسیدن به آخر آن می خواند و در خروجی نمایش می دهد  while ( !feof ( $file ) )   {     echo fgets ( $file ) . "< br />" ;   } fclose( $file ) ; ? >

     

  9. تابع ( ) JDMonthName

     

    این تابع یک تاریخ معین را دریافت کرده و نام ماه مربوط به آن تاریخ را نشان میدهد.

    برای مثال میخواهید ماه تاریخ بخصوصی را نمایش دهید.

    شکل کلی استفاده از این تابع به صورت زیر است :

     

     

    jdmonthname ( jd , mode ) ;

     

    jd

    این پارامتر تعداد روزهای سپری شده از تاریخ اول تقویم ژولیایی را تعیین میکند .

    استفاده از این پارامتر اجباری است .

    mode

    این پارامترها نحوه خروجی نام ماه را تعیین میکند که مثلا نام کامل باشد و یا بصورت حروف اختصاری.

    انواع مقادیر قابل استفاده در این پارامتر عبارتند از :

    0 : نام ماه بصورت اختصاری و بر مبنای تقویم مسیحی (Jan, Feb, Mar, etc ) .

    1 : نام کامل ماه بر مبنای تقویم مسیحی (January, February, March, etc ) .

    2 : نام ماه بصورت اختصاری و بر مبنای تقویم ژولیانی (Jan, Feb, Mar, etc ) .

    3 : نام کامل ماه بر اساس تقویم ژولیانی (January, February, March, etc ) .

    استفاده از این پارامتر اختیاری است .

     

     

    مثال : در مثال زیر ، نحوه استفاده از تابع ( ) JDMonthName را در عمل نمایش داده ایم . در مثال زیر ابتدا یک تاریخ خاص را در متغیر jd$ ذخیره کرده ایم . سپس با استفاده از تابع ( ) JDMonthName ، نام ماه آن تاریخ را در خروجی چاپ کرده ایم :

     

     

    < ? php  $jd = cal_to_jd (CAL_GREGORIAN , date("m") , date("d") , date("Y") ) ;  echo ( jdmonthname ( $jd , 1 ) ) ; ? >

     

     

    خروجی:

     

     

    January

     

  10. این تابع یک تاریخ معین را گرفته و نام روز آن تاریخ را برمیگرداند.

    شکل کلی استفاده از این تابع به صورت زیر است :

     

    jddayofweek ( jd , mode ) ;

     

    jd

    این پارامتر تعداد روزهای سپری شده از تاریخ اول تقویم ژولیایی را تعیین میکند .

    استفاده از این پارامتر اجباری است .

    jd

    این پارامتر خروجی تابع را مشخص میکند. اینکه خروجی بصورت حروفی(نام روز) و یا عددی (شماره روز در هفته) باشد.

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

    0: این مقدار مقدار پیش فرض است و باعث میشود تا خروجی تابع شماره روز در هفته را برگرداند . ( 0 برای یکشنبه ، 1 برای دوشنبه ، ... )

    1 : قرار دادن مقدار 1 باعث میشود تا تابع نام روز در هفته را برگرداند.

    استفاده از این پارامتر اختیاری است .

     

    مثال : در مثال زیر ، نحوه استفاده از تابع ( ) JDDayOfWeek را در عمل نمایش داده ایم . در مثال زیر ابتدا یک تاریخ خاص را در متغیر jd$ ذخیره کرده ایم . سپس با استفاده از تابع ( ) JDDayOfWeek ، نام روز آن تاریخ را در خروجی چاپ کرده ایم :

     

     

    < ? php  $jd = cal_to_jd (CAL_GREGORIAN , date("m") , date("d") , date("Y") ) ;  echo ( jddayofweek ( $jd , 1 ) ) ; ? >

     

     

    خروجی:

     

     

    Thursday

     

  11. این تابع یک تاریخ معین را گرفته ، سپس تعداد روزهای سپری شده از اول تقویم ژولیانی تا روز مورد نظر را نمایش میدهد.

    اولین روز در تقویم ژولیانی اول فوریه سال 4713 قبل از میلاد مسیح است.

    شکل کلی استفاده از این تابع به صورت زیر است :

     

     

    cal_to_jd ( calendar , month , day , year ) ;

     

    calendar

    این پارامتر تقویم مورد استفاده را مشخی می سازد .

    انواع فرمت های دیگر تقویم PHP عبارتند از :

    CAL_GREGORIAN : تقویم گریگوری یا مسیحی

    CAL_JULIAN : تقویم ژولیانی

    CAL_JEWISH : تقویم یهودی

    CAL_FRENCH : تقویم فرانسوی

    استفاده از این پارامتر اجباری است .

    month

    این پارامتر ماه تاریخ مورد نظر را تعیین میکند.

    استفاده از این پارامتر اجباری است .

    day

    این پارامتر روز تاریخ مورد نظر را تعیین میکند.

    استفاده از این پارامتر اجباری است .

    year

    این پارامتر سال تاریخ مورد نظر را تعیین میکند.

    استفاده از این پارامتر اجباری است .

     

    مثال : در مثال زیر ، نحوه استفاده از تابع ( ) cal_to_jd را در عمل نمایش داده ایم . در مثال زیر تعداد روزهای سپری شده از ابتدای تقویم ژولیانی تا یک تاریخ خاص را نمایش داده ایم :

     

     

    < ? php $d=cal_to_jd ( CAL_GREGORIAN , 10 , 03 ,2005 ) ; echo ( $d ) ; ? >

     

     

    خروجی:

     

     

    2453647

     

  12. این تابع یک روز معین از تقویم ژولیانی را به فرمت هر تقویم مورد نظر دیگر ، تبدیل میکند.

    برای مثال فرض کنید میخواهید یک تاریخ در تقویم ژولیانی را به تاریخ آن در تقویم مسیحی تبدیل کنید .

    شکل کلی استفاده از این تابع به صورت زیر است :

     

     

    cal_from_jd ( jd , calendar ) ;

     

    jd

    این پارامتر تعداد روزهای سپری شده مورد نظر شما در تقویم ژولیانی را تعیین میکند .

    استفاده از این پارامتر اجباری است .

    calendar

    این پارامتر تقویم مقصد که میخواهید تاریخ جاری را به فرمت آن تبدیل کند را مشخص میکند .

    انواع فرمت های دیگر تقویم PHP عبارتند از :

    CAL_GREGORIAN : تقویم گریگوری یا مسیحی

    CAL_JULIAN : تقویم ژولیانی

    CAL_JEWISH : تقویم یهودی

    CAL_FRENCH : تقویم فرانسوی

     

    استفاده از این پارامتر اجباری است .

     

    مثال : در مثال زیر ، نحوه استفاده از تابع ( ) cal_from_jd را در عمل نمایش داده ایم . در مثال زیر ابتدا یک تاریخ خاص را در متغیر d$ ذخیره کرده ایم . سپس با استفاده از تابع ( ) cal_from_jd آن را به روز مربوطه در تقویم گریگوری تبدیل کرده ایم :

     

     

    < ? php $d = unixtojd ( mktime ( 0,0,0,1,18,2006 ) ) ; print_r ( cal_from_jd ( $d , CAL_GREGORIAN ) ) ; ? >

     

     

    d

    Array (    [date] => 1/18/2006    [month] => 1    [day] => 18    [year] => 2006    [dow] => 3    [abbrevdayname] => Wed    [dayname] => Wednesday    [abbrevmonth] => Jan    [monthname] => January )

     

  13. این تابع تعداد روزهای یک ماه مورد نظرتان ، مربوط به یک سال و تقویم خاص را نشان میدهد .

    برای مثال فرض کنید میخواهید بدانید ماه july در سال 2005 در تقویم ژولیانی چند روز بوده است .

    شکل کلی استفاده از این تابع به صورت زیر است :

     

     

    cal_days_in_month ( calendar , month , year ) ;

     

     

    calendar

    این پارامتر تقویم مورد نظر را مشخص میکند.

    استفاده از این پارامتر اجباری است .

    month

    این پارامتر ماه مورد نظر را مشخص میکند.

    استفاده از این پارامتر اجباری است .

    year

    این پارامتر سال مورد نظر را مشخص میکند.

    استفاده از این پارامتر اجباری است .

     

     

    مثال : در مثال زیر ، نحوه استفاده از تابع ( ) cal_days_in_month را در عمل نمایش داده ایم . در مثال زیر با استفاده از تابع ( ) cal_days_in_month تعداد روزهای ماه دهم از سال 2005 را در تقویم ژولیانی را نمایش داده ایم :

     

     

    < ? php   $d = cal_days_in_month ( CAL_GREGORIAN , 10 , 2005 ) ;   echo ( " There was $d days in October 2005 " ) ; ? >

     

     

    خروجی:

     

    There was 31 days in October 2005

     

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

    فرض کنید میخواهید یک تاریخ میلادی را به فرانسوی و ... تبدیل کرده و یا تعداد روزهایی که از یک تاریخ خاص تا تاریخ جاری گذشته را حساب کنید.

    تقویم و تاریخ در php بصورت استاندارد بر اساس تقویم ژولیانه ( Julian day count ) تعریف شده است. Julian day count تعداد روزهای سپری شده از تاریخ 1 جولای سال 4713 قبل از میلاد میباشد.

    نکته : برای تغییر فرمت بین تقویم ها و تبدیل تاریخ ابتدا باید تاریخ خود را به Julian day count تغییر داده سپس آن را به فرمت جدید تبدیل کنید.

     

    آیا به نصب برنامه خاص نیاز است؟

     

    نسخه تحت ویندوز PHP بصورت استاندارد و پیش فرض تمامی توابع تقویم را شامل شده و بدون نیاز به تغییر خاص کار میکند.اما اگر از نسخه لینوکس PHP استفاده میکنید باید خروجی را با نسخه enable calendar آن کامپایل کنید .

     

    لیست توابع اصلی و مهم کار با تقویم calendar در PHP :

     

     

    نام تابع کاربرد

    cal_days_in_month ( ) این تابع تعداد روزهای یک ماه خاص از یک تقویم و سال مورد نظر را برمیگرداند .

    ccal_from_jd ( ) این تابع یک روز داه شده از تقویم Julian را به هر فرمت دیگر تقویم تبدیل میکند .

    ccal_to_jd ( ) این تابع یک تاریخ معین را گرفته و سپس تعداد روزهای سپری شده در تقویم Julian از آن روز خاص را حساب میکند .

    GregorianToJD ( ) این تابع یک تاریخ معین تقویم گریگوری یا مسیحی را به تعداد روزهای سپری شده از اول تقویم ژولیانی(Julian day count) تبدیل میکند .

    JDDayOfWeek ( ) این تابع نام روز جاری از هفته را نمایش میدهد .

    JDMonthName ( ) این تابع نام ماه جاری از سال را نمایش میدهد .

  15. تابع ( ) time در PHP ، میزان ثانیه سپری شده از تاریخ اولین ثانیه روز اول سال میلادی 1970 را بر می گرداند . این تاریخ در کار با زمان و تاریخ در PHP یک مقدار پیش فرض است .

    کاربرد تابع time در PHP ، بیشتر برای تعیین یا تنظیم زمان مورد در صفحات PHP است . برای مثال ، تعیین زمان برای اعتبار کوکی ها ( cookies ) در یک صفحه PHP است . به این صورت که در هنگام تعریف یک کوکی ، میزان ثانیه ای که کوکی باید اعتبار داشته باشد را به وسیله تابع time تعیین می کنیم . برای دریافت اطلاعات بیشتر راجع به استفاده از این تابع در تنظیم کوکی ها به بخش آموزش نحوه ایجاد کوکی cookie در PHP بروید .

    شکل کلی تعریف و استفاده از تابع ( ) date در PHP به صورت زیر است :

     

     

    < ? php time ( ) ;? >

     

     

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

     

     

    مثال عملی : در مثال عملی زیر تابع time را به کار برده و به وسیله آن مقدار ثانیه های گذشته از تاریخ 01/01/1970 را نمایش داده ایم . برای این منظور این مقدار را ابتدا در متغیر t$ ذخیره کرده و و سپس آن را در خروجی چاپ کرده ایم :

     

     

    < ? php   $ t = time ( ) ;   echo ( $t . " ") ;   echo date ( " Y / m / d " ) ; ? >

     

     

    خروجی:

     

     

    113861808102/03/2012 

     

  16. از تابع ( ) date در PHP ، برای نمایش و یا دستکاری ساعت و تاریخ استفاده می شود .

    از تابع ( ) date می توانید برای انجام اموری مثل نمایش تاریخ جاری سرور ، نمایش یک تاریخ خاص ، محاسبه زمان ، ایجاد یک برچسب زمانی و ... استفاده نمایید . این تابع یکی از توابع پیش ساخته و اصلی زبان PHP است .

    شکل کلی تعریف و استفاده از تابع ( ) date در PHP به صورت زیر است :

     

     

    < ? php date ( format ) ;? >

     

     

    پارامتر format تعیین کننده نحوه نمایش تاریخ توسط تابع ( ) date است . در این پارامتر کاراکترهای زیر را می توانید به کار ببرید :

    تعیین این پاامتر برای تابع اجباری است .

    کاراکتر d : این کاراکتر ، نمایشگر شماره روز در تابع date بوده و عددی بین 01 تا 31 است .

    کاراکتر m : این کاراکتر نمایشگر عدد ماه در تابع date بوده و عددی بین 01 تا 12 است .

    کاراکتر Y : کاراکتر Y نمایشگر عدد سال در تابع date بوده و یک عدد چهار رقمی است .

    کاراکترهای جدا کننده : از کاراکترهایی مثل " / " ، " - " ، " . " و ... می توان برای جدا نمودن عددهای سال و ماه و روز در تایع date است نمود.

     

    توابع مهم و کاربردی زیر مجموعه تابع ( ) date :

     

     

    نام تابع کاربرد

    checkdate ( ) این تابع ، تاریخ داده شده به آن را طبق تقویم میلادی بررسی کرده و صحت آن را اعلام می کند .

    date_default_timezone_get ( ) این تابع زمان محلی ( timezone ) سرور را نمایش می دهد .

    date_default_timezone_set ( ) این تابع زمان محلی ( timezone ) سرور را بر طبق مقدار داده شده ، تنظیم می کند .

    date_sunrise ( ) این تابع زمان طلوع آفتاب در یک تاریخ خاص را ، بر حسب موقعیت جغرافیایی سرور نمایش می دهد .

    date_sunrset ( ) این تابع زمان غروب آفتاب در یک تاریخ خاص را ، بر حسب موقعیت جغرافیایی سرور نمایش می دهد .

    getdate ( ) این تابع زمان و تاریخ دقیق جاری سرور را در یک آرایه به کاربر نمایش می دهد .

    mktime ( ) این تابع برای تعیین تاریخ جاری و یا تعیین یک تاریخ در آینده به کار می رود .

  17. به وسیله php ، می توانید مقادیر که کاربر در یک کادر متن وارد می کند را اعتبار سنجی کرده و در صورت صحیح بودن ، این مقادیر را به سرور ارسال کرده و استفاده نمایید .

    اعتبار سنجی از دو جهت صورت می گیرد :

     

    در مرحله اول باید مطمئن شوید که کاربر اصلا چیزی در کادر متن مورد نظرتان وارد نموده است یا خیر . به عبارت دیگر کادر متن را خالی رها نکرده باشد . در این صورت می توانیم یک پیام هشدار به کاربر بدهیم تا مقادیر لازم را وارد کند .

    در مرحله دوم باید اطمینان حاصل شود که مقادیر وارد شده با داده ای که می خواهیم ، تطابق دارد یا خیر .

    برای مثال در یک کادر متن کاربر بایستی حداقل 8 کاراکتر وارد نماید . یا در یک کادری که کاربر باید آدرس ایمیل خود را وارد نماید ، مقادیر وارد شده با فرمت یک ایمیل سازگاری دارد . به وسیله تابع های پیش فرضی که در php وجود دارند ، می توان به سهولت این امور را کنترل کرد .

  18. مقدمه:

     

    همانطور که در بخش قبل درباره عملیات اعتبار سنجی داده های ورودی در فرم ها در PHP ، توضیح دادیم ، این زبان دارای تعداد زیادی تابع و فیلتر پیش ساخته و آماده استفاده است که به راحتی و بدون نیاز به کدنویسی ، انواع عملیات های اعتبار سنج داده را برای کاربر انجام می دهند .

    این توابع و فیلترها ، بخشی از هسته اصلی PHP بوده و برای استفاده از آنها ، نیاز به نصب و یا استفاده از برنامه و ابزار جانبی خاصی وجود ندارد .

     

    لیست توابع اعتبار سنج در PHP :

     

    قسمت پایین شامل انواع تابع های پیش ساخته اعتبار سنج در PHP می باشد .

     

     

    نام تابع شرح عملکرد

    filter_has_var ( ) این تابع کنترل می کند که آیا کاربر مقدار لازم را در کادر داده ورودی وارد کرده و یا آن را خالی رها نموده است .

    filter_input ( ) این تابع مقادیر و متغیرهایی که به صفحه وارد می شوند مثل کوکی ها و یا مقادیر وارد شده در کادر های متن را دریافت کرده و اعتبار سنجی می نماید .

    filter_input_array ( ) این تابع مقدار آرایه ای از متغیر ها یا اطلاعاتی که به صفحه وارد می شوند مثل کوکی ها و یا مقادیر وارد شده در یک سری کادر متن را دریافت کرده و اعتبار سنجی می نماید .

    filter_list ( ) تابع ( ) filter_list ، آرایه ای از کلیه فیلترهای اعتبار سنجی که سرور PHP و مرورگر کاربر پشتیبانی می کند ، را بر می گرداند .

    filter_var ( ) این تابع مقدار یک متغیر را گرفته و براساس مورد نظر برنامه ریزی شده ، اعتبار سنجی می نماید .

    filter_var_array ( ) این تابع مقدار چندین متغیر ( آرایه ای از متغیر ها ) را گرفته و براساس مورد نظر برنامه ریزی شده ، اعتبار سنجی می نماید .

  19. مقدمه:

     

    اعتبار سنجی داده های ورودی که کاربر یا برنامه در صفحات وب وارد می نمایند ، یکی از مهمترین مسائل در زمینه طراحی صفحات وب امن می باشد .

    برای روشن شدن مسئله به چند مثال اشاره می کنم .

    فرض کنید که شما یک فرم ثبت نام در سایت خود ایجاد کرده اید . کاربر در زمان ثبت نام باید یکسری اطلاعات خواسته شده را در فرم وارد نماید . مسلما اطلاعات ورودی باید با شرایط و معیارهای مورد نظر شما ، تطابق داشته باشد .

    برای مثال نام ورودی کاربر بایستی حداکثر 15 کاراکتر باشد . یا مثلا رمز عبور در دو کادر به صورت یکسان بوده و یا در نهایت باید ایمیلی که توسط وی وارد می شود ،، فرمت یک ایمیل واقعی را داشته باشد و ... .

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

    در این بخش قصد داریم تا شما را نحوه انجام این عملیات آشنا سازیم .

     

    چه اطلاعاتی را باید اعتبار سنجی نمود :

     

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

    در لیست زیر ، انواع داده های ورودی به یک صفحه وب را بررسی کرده ایم . عموما شما باید این اطلاعات را اعتبار سنجی نمایید :

     

    داده های که کاربر در فرم های وب وارد می نماید .

    کوکی هایی که مرورگر می فرستد .

    داده های سرویس های وب .

    نتایج جستجو در پایگاه داده های سرور ( Query Results ) .

     

    معرفی تابع های اصلی در عملیات اعتبار سنجی در PHP :

     

    در لیست زیر چهار تابع اصلی ، در عملیات اعتبار سنجی متغیر ها و کادر های ورود اطلاعات در PHP را به شما معرفی کرده ایم . این تابع ها دارای بیشترین کاربرد در عملیات اعتبار سنجی هستند . در ادامه به توضیح کامل این توابع خواهیم پرداخت :

     

    تابع ( ) filter_var : این تابع یک متغیر را با یک فیلتر اعتبار سنج خاص ، اعتبار سنجی می کند .

    تابع ( ) filter_var_array : این تابع آرایه ای از متغیرها را با یک یا چند فیلتر اعتبار سنج خاص ، اعتبار سنجی می کند .

    تابع ( ) filter_input-Get : این تابع مقدار یک کادر دریافت داده را با یک فیلتر اعتبار سنج خاص ، اعتبار سنجی می کند .

    تابع ( ) filter_input_array : این تابع مقدار چندین کادر دریافت داده را با یک یا چند فیلتر اعتبار سنج خاص ، اعتبار سنجی می کند .

     

    یک مثال ساده و ابتدایی از اعتبار سنجی داده :

     

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

    در این مثال ابتدا یک متغیر معمولی تعریف شده است . سپس توسط یک دستور با استفاده از تابع "FILTER_VALIDATE_INT" که یکی از تابع های اعتبار سنج پیش فرض در PHP است ، این مسئله بررسی شده است که آیا متغیر تعریف شده ، عدد است یا خیر . در صورت عدد بودن آن عبارت "Integer is valid" و در صورت عدد نبودن آن عبارت "Integer is not valid" در خروجی چاپ خواهد شد :

     

     

    < ? php $int = 123;   if ( filter_var ( $int , FILTER_VALIDATE_INT ) )     {       echo ( " Integer is not valid " ) ;     }   else     {       echo ( " Integer is valid " ) ;     }?>

     

  20. در بخش قبل در قسمت آموزش فرم ها در PHP به شما نمایش دادیم که چگونه یک فرم ساده HTML را طراحی کرده و اطلاعات آن را به یک صفحه دیگر برای پردازش و استفاده انتقال دهید .

    همانطور که گفتیم 2 روش برای انتقال اطلاعات فرم ها در PHP وجود دارد . متد get و متد post . در این بخش می خواهیم نحوه ارسال اطلاعات یک فرم توسط متد post و سپس دریافت اطلاعات در صفحه مقصد ، توسط متغیر POST_$ را تشریح کنیم .

     

    نحوه کار متد post :

     

    هنگامی که یک فرم را به وسیله متد post ارسال می کنید ، مرورگر به صورت اتوماتیک نام کنترل های درون فرم به همراه مقادیرشان را خوانده و کد می کند . سپس صفحه را به صفحه مقصد ارسال می کند . در این حالت مرورگر جفت نام کنترل های فرم و مقدار را به صورت مخفی و کد شده ، برخلاف متد get که به صورت نمایان این کار را انجام می دهد ، به صفحه مقصد ارسال می کند . د این روش اطلاعات از دید کاربر و سایرین مخفی خواهد بود و برای انتقل اطلاعات حساس مانند رمز عبور مناسب است .

    فرض کنید که یک فرم به شکل زیر طراحی کرده اید . در این فرم دو کنترل کادر متن داریم که از کاربر نام و سن آن را پرسیده است .

     

     

     <form action="recevie.php" method="post" >     Name:     <input type="text" name="fname" />     Age:     <input type="text" name="age" />     <input type="submit" />   </form>

     

     

    هنگامی که کاربر اطلاعات خواسته شده را در فرم وارد نموده و آن را submit می کند ، 2 اتفاق می افتد :

     

    اول اینکه مرورگر به صفحه تعیین شده در خاصیت action یعنی صفحه receive.php ارسال می شود .

    دوم اینکه مرورگر نام کنترل های متن و مقادیرشان را به صورت کد شده و مخفیانه به صفحه مقصد ارسال می کند :

    آدرس در نوار آدرس مرورگر به صورت زیر در خواهد آمد . در این مثال فرض کرده ایم که کاربر برای نام مقدار ali و برای سن مقدار 22 را وارد کرده است :

     

     

     لینک ها تنها برای اعضای سایت قابل نمایش است.  

     

     

     

    در روش ارسال post ، اطلاعات درون فرم کد شده و مخفی ارسال می شوند .بنابراین در معرض دید سایرین نبوده و همچنین اطلاعت به راحتی حک نخواهند شد . به همین دلیل باید از این روش در ارسال اطلاعات حساس مثل رمز عبور و ... استفاده کرد .

    دوم اینکه حجم اطلاعاتی که با این روش می توانید ارسال نمایید ، نا محدود است .

    امکان bookmark کردن صفحه در این روش وجود ندارد .

    دریافت اطلاعات ارسالی در صفحه مقصد و استفاده از آنها - متغیر POST_$ :

     

     

    پس از اینکه کاربر با استفاده از متد post اطلاعات فرم خود را به صفحه مقصد ارسال نمود ، باید آن اطلاعات را در صفحه مقصد دریافت کرده و از آنها استفاده نماید .

    برای این منظور در صفحه مقصد از متغیر از پیش تعیین شده ، POST_$ برای دریافت اطلاعات ارسالی استفاده می شود . می توانید به تعداد متغیر های ارسالی به صفحه از متغیر POST_$ استفاده نمایید . فقط باید همان نامی که در فرم صفحه مبدا برای متغیر تعیین شده ، استفاده نمایید .

  21. در بخش قبل در قسمت آموزش فرم ها در PHP به شما نمایش دادیم که چگونه یک فرم ساده HTML را طراحی کرده و اطلاعات آن را به یک صفحه دیگر برای پردازش و استفاده انتقال دهید .

    همانطور که گفتیم 2 روش برای انتقال اطلاعات فرم ها در PHP وجود دارد . متد get و متد post . در این بخش می خواهیم نحوه ارسال اطلاعات یک فرم توسط متد get و سپس دریافت اطلاعات در صفحه مقصد ، توسط متغیر GET_$ را تشریح کنیم .

     

    نحوه کار متد get :

     

    هنگامی که یک فرم را به وسیله متد get ارسال می کنید ، مرورگر به صورت اتوماتیک نام کنترل های درون فرم به همراه مقادیرشان را به آدرس صفحه اضافه کرده و سپس صفحه را به صفحه مقصد ارسال می کند . در این حالت مرورگر جفت نام کنترل های فرم و مقدار آنها را با علامت & از هم جدا می کند .

    فرض کنید که یک فرم به شکل زیر طراحی کرده اید . در این فرم دو کنترل کادر متن داریم که از کاربر نام و سن آن را پرسیده است .

     

     

       <form action="recevie.php" method="get" >     Name:     <input type="text" name="fname" />     Age:     <input type="text" name="age" />     <input type="submit" />   </form>

     

     

    هنگامی که کاربر اطلاعات خواسته شده را در فرم وارد نموده و آن را submit می کند ، 2 اتفاق می افتد :

     

    اول اینکه مرورگر به صفحه تعیین شده در خاصیت action یعنی صفحه receive.php ارسال می شود .

    دوم اینکه مرورگر نام کنترل های متن و مقادیرشان را به صورت زیر به آدرس صفحه اضافه کرده وآن صفحه را به مقصد ارسال می کند :

    آدرس در نوار آدرس مرورگر به صورت زیر در خواهد آمد . در این مثال فرض کرده ایم که کاربر برای نام مقدار ali و برای سن مقدار 22 را وارد کرده است :

     

     

     لینک ها تنها برای اعضای سایت قابل نمایش است.   fname = Ali & age = 22

     

     

     

    در روش ارسال get ، اطلاعات درون فرم از طریق نوار آدرس مرورگر نمایش داده شده و بنابراین در معرض دید سایرین بوده و همچنین اطلاعت به راحتی حک می شوند . به همین دلیل نباید از این روش در ارسال اطلاعات حساس مثل رمز عبور و ... استفاده کرد و برای ارسال آنها از متد post استفاده کرد .

    دوم اینکه حجم اطلاعاتی که با این روش می توانید ارسال نمایید ، محدود است .

  22. از فرم ها در PHP ، برای دریافت اطلاعات از کاربر استفاده می شود . فرم های HTML می توانند شامل یک یا چندین کنترل کادر متن ، دکمه های انتخابی و یا منوهای کرکره ای باشند . کاربر بایستی مقادیر لازم را در کنترل های تعیین شده وارد کند .

    پس از وارد نمودن اطلاعات لازم ، کاربر باید فرم را ارسال ( Submit ) کنند . پس از ارسال فرم ، اطلاعات آن به یک فرم و یا صفحه دیگری ارسال می شود تا در مقصد مورد استفاده قرار گیرند .

    برای مثال شما اطلاعات ثبت نام در سایت را از کاربر دریافت کرده و سپس در یک صفحه دیگر همان اطلاعات را به کاربر نمایش داده تا در صورت تایید نهایی ، در پایگاه داده ذخیره شوند .

    همانطور که در HTML و در قسمت فرم های HTML ، نحوه استفاده از تگ < form > برای ایجاد فرم های HTML رامیدانید . کلیه کنترل های دریافت اطلاعات و محتویات فرم باید در دورن تگ فرم قرار بگیرند .

    شکل کلی و نمونه طراحی یک فرم HTML ساده در صفحات PHP به صورت زیر است . این فرم دارای دو کادر متن برای دریافت نام و سن از کاربر و یک دکمه ارسال ( Submit ) است ، که با فشردن آن فرم به مقصد ارسال می شود :

     

     

    <form action="welcome.php" method="post">   Name: <input type="text" name="fname" />   Age: <input type="text" name="age" />   <input type="submit" /></form>

     

     

    تگ فرم دو خاصیت مهم دارد که تعیین کننده نحوه عملکرد فرم است . خاصیت action و method . در ابتدا به تشریح کارایی این دو خاصیت کلیدی در فرم ها می پردازیم :

     

    خاصیت action : این خاصیت از نوع آدرس ( URL ) بوده و تعیین کننده آدرس فرم یا صفحه ای است که قرار است اطلاعات فرم به آن ارسال شود . اطلاعات ارسال شده در صفحه مقصد مورد استفاده و پردازش قرار می گیرد .

    برای مثال اگر مقدار آن را برابر با submit.php قرار دهیم ، اطلاعات فرم پس از submit شدن به صفحه تعیین شده ارسال شده و مرورگر نیز به همان صفحه هدایت می شود .

    تعیین مقدار این خاصیت اجباری است و اگر مقدار آن را خالی رها کنیم ، برنامه دچار نقص می شود . در این حالت فرم به یک آدرس پیش فرض مثل form.html می رود .

    خاصیت method : این خاصیت روش ارسال اطلاعات فرم به صفحه را مقصد تعیین کرده و می تواند یکی از دو مقدار GET یا POST را داشته باشد .

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

    متد GET : در این روش اطلاعات بصورت ساده و کد نشده منتقل میشوند. این روش دقیقا مشابه اینه که اطلاعات رو بصورت Query به URL اضافه کرده باشیم و وقتی فرم رو Submit می کنیم، این اطلاعات خودش به URL اضافه میشه و قابل دیدن میشه. باید توجه داشت که اطلاعات حساسی مثل Password نباید در معرض دید قرار بگیره پس نباید برای فرمی که اطلاعات مهمی داره از GET استفاده کنیم تا اطلاعات فرم توی Address Bar قابل رویت نشه. به اضافه اینکه IE توی حجم اطلاعات GET محدودیت داره. به این صورت که وقتی اطلاعات فرم بصورت Query به URL اضافه میشه، طول این URL حداکثر میتونه 2083 کاراکتر باشه. در روش GET، چون اطلاعات فرم کد نمیشوند و ساده منتقل میشوند ، حجم کمتری دارند . اطلاعات فرم در این حالت، توسط متد GET_$ در صفحه مقصد قابل دریافت است . همچنین در روش GET از Upload خبری نیست، یعنی با GET نمیشه آپلود کرد.

    پس از submit فرم در این روش ، اطلاعات فرم به صورتی که در کد زیر نمایش داده شده به آدرس صفحه اضافه شده و به صفحه مقصد منتقل می شوند :

     

     

     لینک ها تنها برای اعضای سایت قابل نمایش است.   fname = Ali & age = 26

     

     

    نمونه این روش را مطمئنا قبلا در بسیاری از سایت ها مشاهده کرده اید .

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

    اطلاعات ارسال شده با این متد در صفحه مقصد توسط متد POST_$ قابل دریافت است .

     

    فرم چگونه مقادیر را خوانده و به صفحه مقصد ارسال می کند :

     

    همانطور که مشاهده کردید در یک فرم همواره چندین کنترل ورودی اطلاعات وجود دارد . هنگامی که فرم submit می شود ، مرورگر به صورت اتوماتیک تمامی مقادیر کنترل های ورودی به همراه نام آن کنترل ها ( خاصیت name هر کنترل ) را خوانده و به آدرس صفحه اضافه می کند ( این کار در متد POST به صورت مخفی انجام میشود ) . سپس مرورگر صفحه را به همراه جفت نام کنترل ها و مقادیرشان به صفحه مقصد ، ارسال می کند .

     

    در طی انجام این عملیات ، مرورگر ابتدا آدرس صفحه مقصد را قرار داده و سپس یک علامت ? می گذارد . پس از علامت ? ، به ترتیب نام کنترل های ورودی اطلاعات و مقادیرشان را اضافه می کند . هر کدام از جفت نام کنترل ها و مقادیرشان را با یک علامت & از هم جدا می شوند .

     

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

    در مثال زیر به تشریح کلیه مطالب گفته شده در طی یک مثال واقعی می پردازیم .

     

    مثال عملی در طراحی یک فرم HTML و سپس ارسال آن به مقصد :

     

    مثال : در مثال زیر یک فرم طراحی کرده ایم که از کاربر نام و سن وی را سوال می کند . سپس در صورت کلیک شدن دکمه فرمان Submit ، فرم به همراه مقادیر وارد شده در کنترل های متن ، به صفحه receive.php ارسال می شوند و آن مقادیر در صفحه جدید مجدد به کاربر نمایش داده می شود .

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

     

     

    < html > < head > </head><body>   <form action="recevie.php" method="get">     Name:     <input type="text" name="fname" />     Age:     <input type="text" name="age" />     <input type="submit" />   </form> </body></html>

     

     

    پس از ارسال صفحه و اطلاعات به صفحه receive.php ، این اطلاعات توسط این صفحه دریافت شده و به کاربر نمایش داده می شود . کد این صفحه نیز به صورت زیر است :

    در قسمت های بعدی آموزش PHP ، به توضیح کامل روش دریافت اطلاعات ارسالی فرم ها می پردازیم .

     

     

    <html><body>Hello < ? php echo $_GET [ " fname " ] ; ? > ! < br / >You are < ? php echo $_GET [ " age " ] ; ? > years old.</body></html>

     

  23. در این بخش توابع مهم و پرکاربرد کار با آرایه ها در PHP را در جدول زیر تشریح کرده ایم . برای دریافت اطلاعات بیشتر راجع به هر کدام ، بر روی نام تابع کلیک نمایید :

     

    نام تابع شرح عملکرد

    array ( ) از این تابع برای ایجاد یک آرایه جدید استفاده می شود .

    array_change_key_case ( ) این تابع کاراکتر کلیدها در آرایه های دو بعدی را به حروق بزرگ یا کوچک تبدیل می کند .

    array_chunk ( ) این تابع ، یک آرایه موجود را به دو یا چند آرایه کوچکتر تبدیل می کند .

    array_combine ( ) این تابع ، دو آرایه تک بعدی را با هم ترکیب کرده و یک آرایه دو بعدی با Key و Value می سازد .

    array_count_values ( ) این تابع ، تعداد عناصر مشابه ( دارای Value یکسان ) را در یک آرایه می شمارد .

    array_diff ( ) این تابع مقادیر موجود در دو یا چند آرایه را با هم بررسی کرده و اختلاف هایشان را بر می گرداند .

    array_fill ( ) این تابع یک آرایه موجود را با مقادیر تعیین شده برای آن ، پر می کند .

    array_fill_keys ( ) این تابع کلیدهای تعیین شده ( keys ) برای آنها را به عناصر یک آرایه اضافه می کند .

    array_filter ( ) این تابع عناصر یک آرایه را بر حسب دستورات یک تابع دیگر فیلتر کرده و خروجی ها را بر می گرداند .

    array_flip ( ) این تابع در یک آرایه دو بعدی ، جای مقادیر ( values ) و کلیدها ( keys ) را با هم جا به جا می کند و یک آرایه جدید را ساخته و در خروجی بر می گرداند .

    array_intersect ( ) این تابع مقادیر عناصر دو یا چند آرایه را با هم مقایسه کرده و عناصر تکراری و یکسان را بر می گرداند .

    array_key_exists ( ) این تابع وجود یا عدم وجود یک کلید ( key ) را در یک آرایه بررسی کرده و جواب را بر می گرداند .

    array_keys ( ) این تابع کلیدهای ( keys ) موجود در عناصر یک آرایه را بر می گرداند .

    array_map ( ) این تابع مقادیر عناصر یک آرایه را به تابعی تعیین شده از سوی کاربر فرستاده و مقادیر جدید بازگشتی را در یک آرایه ذخیره می کند .

    array_merge ( ) این آرایه عناصر دو یا چند آرایه را با هم ترکیب کرده و یک آرایه جدید تولید می کند .

    array_pop ( ) این تابع آخرین عنصر عضو آرایه را حذف می کند .

    array_push ( ) این تابع یک یا چند عنصر جدید تعیین شده را به انتهای آرایه اضافه می کند .

    array_rand ( ) این تابع یک یا چند عنصر از آرایه را به صورت رندوم انتخاب کرده و بر می گرداند .

    array_search ( ) این تابع آرایه را برای یک مقدار value داده شده به آن جستجو کرده و ارزش کلید key آن را بر می گرداند .

    array_reverse ( ) این تابع عناصر یک آرایه را به ترتیب برعکس در خروجی نشان می دهد .

    array_shift ( ) این تابع المنت اول آرایه را حذف کرده و مقدار آن را بر می گرداند .

    array_slice ( ) این تابع بخش تعیین شده ای از یک آرایه را جدا کرده و بر می گرداند .

    array_splice ( ) این تابع عناصری از یک آرایه را حذف کرده و با مقادیر جدید تعیین شده جایگزین می کند .

    array_sum ( ) این تابع مجموع عددی یک آرایه را بر می گرداند .

    array_unique ( ) این تابع عناصر تکراری یک آرایه را حذف می کند .

    array_unshift ( ) این تابع یک یا چند عنصر مورد نظر را به ابتدای آرایه اضافه می کند .

    array_values ( ) این تابع کلیه مقادیر values یک آرایه را بر می گرداند .

    array_walk ( ) این تابع اعضای یک آرایه را یک به یک خوانده و آن ها را در یک تابع اعمال می کند .

  24. می دانید که متغیر فضایی است که می تواند مقداری اطلاعات مثل متن یا عدد را در خود نگهداری نماید . هر متغیر معمولی فقط می تواند یک مقدار را در خود جای دهد و نه بیشتر . این محدودیت گاهی اوقات ما را دچار مشکل می سازد .

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

     

     

    $Books1 = " HTML " ;$Books2 = " ASP " ;&Books3 = " PHP " ;

     

     

    حال فرض کنید که می خواهید بین کتاب ها جستجو کرده و کتاب خاصی را پیدا کنید . در حالتی که 3 کتاب دارید ، ساده است اما هنگامی که 300 کتاب دارید چه ؟ .آنگاه استفاده از روش سنتی فوق غیر ممکن خواهد بود و باید از آرایه ها استفاده نمایید .

     

    آرایه متغیری است که می تواند چندین مقدار را در خود نگهداری نماید . این نوع متغیر تمامی موارد مورد نظر را درون خود با یک نام واحد نگهداری کرده . و به هر عضو یک اندیس Index اختصاص می دهد . شما می توانید به راحتی با به کار بردن نام آرایه و اندیس مورد نظر به هر عضو آرایه دسترسی داشته باشید . همچنین می توانید به راحتی با استفاده از ساختارهای حلقه ای بین اعضای آرایه حرکت کنید .

    به طور کلی در PHP 3 نوع آرایه داریم :

     

    آرایه عددی ( Numeric array ) : در این نوع آرایه ، اعضای آرایه همه با یک نام واحد تعریف شده و هر کدام یک اندیس عددی منحصر به فرد خود را دارند ، که به وسیله آن شناسایی و قایل دسترسی می شوند .

    آرایه متناظر ( Associative array ) : در این نوع آرایه هر عضو به صورت یک جفت مقدار و شناسه عددی ( ID Key ) تعریف می شود . برای دسترسی به هر عضو آرایه باید از شناسه عددی آن استفاده کرد .

    آرایه تو در تو ( Multidimensional array ) : این نوع آرایه از دو یا چند آرایه تو در تو تشکیل می شود .

     

    آرایه عددی ( Numeric array ) :

     

    در این نوع آرایه که رایج ترین نوع آرایه می باشد ، اعضای آرایه همگی با یک نام یکسان تعریف شده و هر عضو یک شناسه یا اندیس دارد که به وسیله آن شناسایی و قابل دسترسی می شود .

    دو روش کلی برای تعریف آرایه های عددی در PHP وجود دارد :

     

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

    حالت اول

     

    $ Books = array ( " HTML " , " CSS " , " ASP " , " PHP " ) ;

     

     

    در روش دوم تعریف آرایه های عددی ، هنگام تعریف اعضای آرایه ، اندیس آنها را نیز تعیین می کنیم . در این حالت می توان اندیس های متفاوتی را نیز در نظر گرفت .

    حالت دوم:

     

     

    $ Books [ 0 ] = " HTML " ;$ Books [ 1 ] = " CSS " ;$ Books [ 2 ] = " ASP " ;$ Books [ 3 ] = " PHP " ;

     

     

    آرایه متناظر ( Associative array ) :

     

    در روش دوم ، هر عضو آرایه به صورت یک جفت مقدار و یک شناسه عددی ( ID Key ) تعریف می شود .

    برای نگهداری گونه های خاصی از اطلاعات ، معملا آرایه های عددی مناسب نیستند و بهتر است از آرایه های متناظر استفاده شود .

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

    حالت اول:

     

    & ages = array ( " Ali " => 32 , " Reza " => 30 , " Ahmad => 34 ) ;

     

     

    حالت دوم:

     

    & ages [ ' Ali ' ] = " 32 " ;& ages [ ' Reza ' ] = " 30 " ;& ages [ ' Ahmad ' ] = " 34 " ;

     

     

     

    آرایه های تو در تو ( Multidimensional array ) :

     

    در آرایه های تو در تو ، ابتدا اعضای آرایه اصلی تعریف می شوند . سپس هر یک از اعضای آرایه اصلی ، خود می تواند یک آرایه را تشکیل دهد . اعضای آرایه دوم نیز می توانند به نوبه خود یک آرایه باشند و به همین ترتیب . روش تعریف یک آرایه تو در تو و استفاده از آن را در قالب مثال های عملی زیر نمایش داده ایم :

     

    نحوه ی آرایه تو در تو:

     

     

    $families = array   (     "Griffin"=>array       (           "Peter",           "Lois",           "Megan"       ),     "Quagmire"=>array       (            "Glenn"       ),     "Brown"=>array       (            "Cleveland",            "Loretta",            "Junior"        )       ) ;

     

     

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

    مثال:

     

    < ? php        echo " Is " . $families['Griffin'][2] .         " a part of the Griffin family?" ;? >

     

     

    خروجی:

     

     

    Is Megan a part of the Griffin family ?

     

×
×
  • اضافه کردن...