PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : روش های اجرای دستورات سیستم با استفاده از ‏php



TAHA
11-05-2009, 11:26 AM
به طور کلی 4 روش برای اجرای دستور با ‏PHP‏ وجود دارد:‏
‏1. علامت ‏‎`‎‏: ‏PHP‏ دستور بین دو علامت ‏‎`‎‏ را روی سیستم اجرا کرده و کل خروجی را نمایش می دهد.‏
‏2. تابع ‏system‏: این تابع دستور سیستم را اجرا کرده و کل خروجی را نمایش می دهد، همچنین آخرین خط ‏خروجی را نیز بر می گرداند.‏
‏3. تابع ‏exec‏: این تابع دستور را روی سیستم اجرا می کند و کل خروجی را در یک آرایه قرار می دهد و آخرین خط ‏خروجی را برمی گرداند.‏
‏4. تابع ‏passthru‏: این تابع دستور را روی سیستم اجرا کرده و کل خروجی را نمایش می دهد.‏

روش اول: استفاده از علامت ‏‎`‎
برای اجرای دستورات سیستم با این روش کافی است دستور سیستم را بین دو علامت ‏‎`‎‏ قرار داده و در صورت نیاز ‏خروجی آن در یک متغیر ذخیره و یا خروجی آن را با ‏echo‏ نمابش دهید.‏
مثال:‏
PHP Code:

‎$result = `dir c:\php`;‎
Echo $result;‎


روش دوم: استفاده از تابع ‏system‏:‏
در این روش دستور اجرا شده و خروجی آن نمایش داده می شود و آخرین خط خروجی برگردانده می شود، مثال:‏
PHP Code:

‎$result = system(‎‏"‏ir c:\php‏"‏‎;‎

با این دستور، خروجی نمایش داده می شود، حال اگر آن را ‏echo‏ کنید خروجی دیگری به صورت زیر خواهید دید:‏
كد:

‎11 Dir(s) 566,263,808 bytes free‎
روش سوم: استفاده از تابع ‏exec‏:‏
در این روش دستور اجرا می شود ولی خروجی آن نمایش داده نمی شود. خروجی به صورت خط به خط درون یک ‏آرایه ذخیره می شود و برگردانده می شود. برای ذخیره ی آرایه باید آرگومان دوم را نیز مشخص کنید.‏
مثال:‏
PHP Code:

‎$result = exec(‎‏"‏ir c:\php‏"‏‎);‎

دستور اجرا می شود ولی اگر آن را ‏echo‏ کنید تنها خط آخر آرایه نمایش داده می شود:‏
كد:

‎11 Dir(s) 566,263,808 bytes free‎
برای مشاهده ی کلیه ی خطوط آرایه می توانید از ‏foreach‏ استفاده کنید، اما قبل از آن باید خروجی ‏exec‏ را در ‏یک متغیر ذخیره کنید و برای این کار نام متغیر را به عنوان آرگومان دوم تابع بنویسید:‏
PHP Code:

‎$result = exec(‎‏"‏dir c:\php‏"‏‎,$dirout);‎

دستور فوق خط آخر آرایه را در ‏result‏ ذخیره می کند. کل خروجی را به صورت یک آرایه در ‏dirout‏ ذخیره می کند. ‏دستور را اجرا می کند ولی خروجی را نشان نمی دهد.برای مشاهده ی کلیه ی خطوط خروجی به صورت زیر عمل می ‏شود:‏
PHP Code:

foreach($dirout as $line)‎
‎{‎
echo ‎‏"‏‎$line\n‏"‏‎;‎


}‎
روش چهارم: استفاده ازتابع ‏passthru‏:‏
با این تابع، دستور اجرا شده و کل خروجی نشان داده می شود. مثال:‏
PHP Code:

passthru(‎‏"‏dir c:\php‏"‏‎);‎


__________________