بسم
الله الرحمن الرحيم
مقدمه
اي بر PHP
و مقايسه آن با
Perl
CGI
امروزه
با توجه به اينکه روز به روز بر تعداد ميزبانهايي که
PHP رو
ساپورت ميکنند افزوده ميشود ، صحبت در مورد
PHP و
قابليتهاي آن در ميان طراحان وب و برنامه نويسان زياد است.
براي
کساني که فقط نامي از
PHP شنيده
اند و از تواناييها و مزيت هاي
PHP آگاهي
ندارند در اين مقاله
PHP رو
به طور مختصر شرح شرح ميدهم و آن را با اسکريپتهاي
CGI مقايسه
ميکنم.
PHP
يک زبان طرف خادم (server
side ) مي
باشد و شما ميتوانيد براي ساخت صفحات ديناميک وب از آن استفاده کنيد. براي مثال
مديريت و ساماندهي اطلاعات دريافتي از يک
form اچتمل
با PHP
بسيار آسان است.
1-
زبان:
اگر
شما با زبانهاي
C , C++ , Perl
يا Java
کار ميکنيد ياد گرفتن زبان
PHP ميتواند
مانند زنگ تفريح باشد! در واقع شما خيلي سريع ميتوانيد اسکريپت نويسي را با
PHP
شروع کنيد.
متغيرها
در PHP
مانند PHP
هستند (با پيشوند
$ ) و
انواع مختلف داده ها را ميتوانند در خود ذخيره کنند. براي مثال
$whatever
ميتواند انواع داده ها شامل رشته اي ، عددي و غيره را در خود نگه دارد.
اگر
مقدار $whatever
يک عدد باشد شما ميتوانيد مقدار آن را اينگونه افزايش دهيد:
$whatever
++;
يا
$whatever
=+1;
يا
$whatever=$whatever+1;
که
دقيقا همان روشي است که در
C ،
C++
،
Perl
يا Java
به کار ميبرديد.
2-
تسهيلات توکار (Built-in
facilities
)
بر
خلاف
Perl
که يک
زبان همه منظوره است و شما ميتوانيد تقريبا هر برنامه اي را با آن بنويسيد ،
PHP
از ابتدا با هدف اسکريپت نويسي براي صفحات وب درست شده ، از اينرو اسکريپت
نويسي براي صفحات وب در
PHP بسيار
آسانتر از
Perl
مي
باشد.
براي
مثال ميخواهيم از يک فرم در يک صفحه وب ايميلي را به آدرس خودمان ارسال کنيم. به
کمک
Perl
شما
احتمالا کدي شبيه زير را مينويسيد :
open
( MAIL,"|/usr/sbin/sendmail -t");
print MAIL "To: myself\@mydomain.com\n" ;
print MAIL "From: visitor\@hisdomain.com\n" ;
print MAIL "Subject: Comments from Web Form\n\n" ;
print MAIL $mainmessage ;
close ( MAIL ) ;
اما
همين برنامه در
PHP به
شکل زير نوشته مي شود :
mail
( "myself@mydomain.com", "Comments from Web Form",
$mainmessage, "From:
visitor@hisdomain.com" );
خب
حتما تفاوت اين دو زبان در سادگي و راحتي را متوجه شده ايد!
اين
سادگي و رواني براي بقيه کارها هم صادق است ، مانند فرستادن يا بازيابي يک پرونده
با FTP
يا HTTP.
همانطور
که گفته شد اين سادگي از اونجا ناشي ميشه که
PHP فقط
براي برنامه نويسي براي صفحات وب طراحي شده است.
تسهيلات
ديگر آن در اداره کردن
input هاي
يک form
مي باشد ، براي مثال يک فرم مانند زير را در نظر بگيريد:
<input
type=text name="dateofbirth">
شما
خيلي راحت و سريع مي توانيد به محتويات اين فرم در متغير
$dateofbirth
دسترسي داشته باشيد. نيازي به تجزيه و تحليل
input هاي
فرم نيست.
تمام
فيلد ها در يک فرم به طور اتوماتيک به متغيرهايي تبديل ميشوند که شما خيلي راحت
ميتوانيد به آنها دسترسي داشته باشيد.
دسترسي
به پايگاه داده ها هم به همين شکل اسان و راحت است. کار با پايگاه هاي داده مانند
MySQL,
MSQL, Dbase, Oracle, InterBase,
از قابليتهاي ذاتي (Built-in)
PHP
است . PHP
حتي براي رمزنگاري
MIME هم
تابعي در نظر گرفته است. قابليتها و تسهيلات
PHP بسيار
زياد است و طبيعتا ممکن نيست به همه آنها را در اين مقاله اشاره کرد.
اشاره
به اين چند مورد هم فقط براي اين بود که تصميم شما را براي فراگيري
PHP قاطع
تر کنم!
3-
ساخت صفحات وب :
يک
صفحه PHP
ميتواند شبيه کد زير باشد
:
<html>
<head><title>My First PHP Script</title></head>
<body>
<h1>My First PHP Script</h1>
<p>
Welcome, Internet user from IP address
<?echo $REMOTE_ADDR?>. Hope you like my first
PHP page.
</body>
</html>
توجه
کنيد که اين دقيقا شبيه
source
صفحات وب مي باشد مگر در موارد
…?>
که دستورات
PHP را
شامل مي شوند. اين کد آدرس
IP بيننده
صفحه را مينويسد ، براي همين از دستور
echo استفاده
کرده ايم . متغير محيطي وب سرور (environment
variable)
REMOTE_ADDR
به صورت اتوماتيک با متغيري به همين نام در
PHP شناخته
ميشود (مانند ديگر متغيرهاي محيطي وب سرور). از اينرو نوشتن چنين اسکريپتهايي
بسيار آسان و لذت بخش خواهد بود!
4-
اشکال زدايي
PHP در
مقايسه با
Perl
CGI
اگر
شما اسکريپتهاي نوشته شده را به صورت آنلاين آزمايش و اشکال زدايي ميکنيد
PHP
واقعا در اين زمينه مي درخشد!
هنگامي
که اشکالي در يک اسکريپت
Perl
پيدا شود شما يک پيغام رمزگونه و نامفهوم (چيزي شبيه
"500 Internal Server Error")
دريافت ميکنيد.
اما
وقتي که اسکريپت هاي
PHP خود
را به صورت آنلاين آزمايش ميکنيد ، هنگام مواجه شدن با اشکال پيغام خطا را با
اشاره دقيق به شماره خط داراي اشکال ميدهد و اين براي اشکال زدايي خيلي کار ما را
راحت ميکند ، هر چند پيغام خطا گاهي اوقات کلي و نامفهوم است مانند
"parse error".
ولي
در
Perl
پيغام
خطاي "Internal Server Error"
مي تواند از هر چيزي ناشي شود ، از اشتباه در
syntax گرفته
تا جا انداختن يک حرف يا
upload کردن
فايل در غير
text mode
.
اما
اشکال زدايي به صورت آفلاين کاملا برعکس مي باشد.
بيشتر
برنامه نويسان اعتقاد دارند که مفسر
Perl
هنگام
مواجه شدن با خطا پيغام بهتر و مفيد تري ميدهد تا مفسر
PHP
که مثلا براي بسياري از خطاها پيغام کلي
parse error
را ميدهد که اين امر هم با توجه به انتشار نسخه هاي جديدتر
PHP ميتواند
برطرف شود.
موفق
باشيد .
به نقل از آقاي جوکار