• اطلاعیه ها

    • Saeed Fard

      برگزاری میتاپ وردپرسی   14/08/96

      بعد از اولین دوره همایش وردپرس در ایران اگر پیگیر اخبار وردپرس بوده باشید، حتما خبر برگزاری چندین میتاپ و جلسه متعدد وردپرسی را شنیده‌اید، یکی از بحث‌های اصلی که محور اصلی این میتاپ‌ها بوده است برگزاری وردکمپ بود که به طور جدی دنبال می‌شود. این میتاپ‌ها و جلسات توسط جمعی از فعلان حوزه وردپرس در کنار وردپرس‌پارسی برگزار می‌شد و مسائل مربوط به این حیطه و از جمله وردکمپ مورد بحث قرار می‌گرفت. این بار با رایزنی‌هایی که با تیم اصلی وردپرس داشتیم در بخش دوم این رویدادها قصد داریم که میتاپ‌ها و جلسات وردپرسی را به صورت آزاد برگزار کنیم تا تمامی علاقه‌مندان و دوست‌داران وردپرس فرصت حضور داشته باشند و با گردهمایی، جامعه کاملتری از دوست داران وردپرس بسازیم و از تجربیات یکدیگر استفاده کنیم.   بدیهی است که این رویدادها با رویکرد مثبت در جهت سود رسانی به جامعه وردپرس و افراد حاضر در آن برگزار می‌شود و برای تمامی علاقه‌مندان به وردپرس است. پس اگر یک کاربر معمولی وردپرس یا یک توسعه دهنده هستید می‌توانید در این رویدادها شرکت کنید. ما در ملاقات‌هایمان از موارد مختلف و کاربردی وردپرس صحبت می‌کنیم و علاقمند به توسعه هر چه بیشتر وردپرس در ایران هستیم. ما وردپرس را دوست داریم. عضویت در این گروه برای همه افرادی که مایل به پیوستن هستند بدون در نظرگرفتن توانایی‌ها، مهارت‌ها، وضعیت مالی و یا معیارهای دیگر باز و رایگان است. فضای میتاپ‌ها و جلسات ما دوستانه و آزادنه و دور از هرگونه تبعیض و رفتارهای زننده است. بر این اساس از تمامی دوستانی که علاقه‌مند به شرکت در میتاپ‌های وردپرس هستند دعوت می‌شود تا از طریق لینک زیر در سایت میتاپ اقدام به ثبت‌نام کنند و منتظر خبرهای برگزاری جلسات در آینده باشند . لینک ثبت نام و عضویت : https://www.meetup.com/Iran-WordPress-Meetup    
NESTED

آموزشی
آموزش زبان برنامه نویسی PHP

26 پست در این موضوع قرار دارد

php_logo.jpg

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

این بخش شما لیست زیر می باشد :

  1. مقدمه آموزش PHP
  2. ساختار دستوری PHP
  3. نحوه کار با فرم ها در PHP
  4. توابع پیش ساخته زبان PHP
  5. کار با فایل ها در PHP
  6. مباحث پیشرفته PHP
  7. اعتبار سنجی اطلاعات در PHP

44

به اشتراک گذاری این پست


لینک به پست

  1. مقدمه آموزش PHP

معرفی زبان PHP :

PHP یک زبان برنامه نویسی اسکریپتی اپن سورس است که برای طراحی برنامه های تحت وب سمت سرور ( Server Side ) ، به کار می رود .

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

PHP مخفف عبارت Hypertext PreProcessor به معنای پیش پردازنده فرا متن می باشد که در سال 1994 توسط رسموس لردورف ایجاد شد و سپس توسط سایرین توسعه و گسترش پیدا کرد .

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

پی‌اچ‌پی امکان استفاده از انواع مختلفی از پایگاه‌های داده را از جمله MySQL، اوراکل، IBM DB۲ ،Microsoft SQL Server ،PostgreSQL و SQLite با دستورهایی ساده فراهم می‌سازد. پی‌اچ‌پی روی بیشتر سیستم‌عامل‌های معروف از جمله لینوکس، یونیکس، ویندوز و Mac OSX و با اغلب کارگزارهای وب (Web Server) معروف، قابل اجراست.

پیش از آغاز به یادگیری PHP ، شما باید آشنایی کافی با زبان های HTML و جاواسکریپت داشته باشید.

مزیت های PHP :

  • PHP یک ابزار اپن سورس و رایگان است و به همین دلیل هاست هایی که میزبانی آن را انجام می دهند ، بسیار ارزانتر از هاست های .Net هستند .
  • پی اچ پی بر روی تمامی پلتفورم های معروف مثل Windows , Linux و iOs اجرا می شود .
  • PHP یک زبان ساخت یافته بوده و یادگیری آن بسیار ساده است .
  • ابزار کار با PHP همگی اپن سورس بوده و استفاده از آنها رایگان هستند .

برای استفاده از PHP به چه نیاز دارید ؟

برای استفاده و اجرای صفحات PHP شما باید سرور آپاچی ( Apache ) یا IIS را بر روی کامپیوتر خود نصب کنید . یا اینکه صفحه خود را بر روی یک سرور که از PHP پشتیانی می کند ، اجرا نمایید .

39

به اشتراک گذاری این پست


لینک به پست

نحوه نصب و اجرای PHP :

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

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

  1. وب سایت ها و برنامه های کاربردی تحت وب ( اسکریپت نویسی سمت سرور )
  2. برنامه های کاربردی دسکتاپ ( GUI )
  3. برنامه نویسی خط فرمان

برای برنامه نویسی و استفاده از PHP به 3 چیز کلی نیاز دارید :

  1. برنامه یا ابزاری برای طراحی و کدنویسی :
    در ساده ترین حالت می توانید از برنامه Notepad برای کدنویسی استفاده نمایید . اما نرم افزارهای حرفه ای مانند Dreamweaver یا Rad PHP هستند که در یک محیط ویژوال و IDE امکان کدنویسی و طراحی نرم افزاهای PHP را برای شما فراهم می آورند .
  2. سرور اجرا کننده PHP :
    در اینجا 2 حالت مختلف به وجود می آید :

    1. اجرای PHP بروی کامپیوتر خودتان : چنانچه بخواهید برنامه ها و صفحات وب PHP را بر روی کامپیوتر خود اجرا نمایید ، نیاز به تغییر خاصی ندارید . سیستم عامل های ویندوز ، مک و لینوکس از PHP به طور کامل پشتیانی می کنند . در ویندوز سرور Microsoft IIS و در لینوکس و مک سرور Apache وظیفه اجرا و پردازش فایل های PHP را برعهده دارند . این سرور ها به صورت پیش فرض بر روی سیستم عامل های نام برده نصب هستند و نیاز به هیچ برنامه جانبی نیست .
    2. اجرای PHP بروی یک سرور هاست ( اینترنتی ) : در اینجا نیز کار بسیار راحت است . شما کافی است هاست خود را بروی یک سرور خریداری نمایید که از PHP پشتیانی می کند . سپس کافی است فایل های ساخته شده خود را بروی آنها Upload کرده و اجرا نمایید . موتور این سرور ها صفحات را اجرا کرده و سپس خروجی را به مرورگر کاربر ارسال می کنند . به علت رایگان بودن PHP سرور های هاست PHP بسیار ارزان و در دسترس هستند .
    3. یک مرورگر وب :
      شما برای مشاهده صفحات PHP نیاز به یک مرورگر دارید که بر روی تمام سیستم عامل ها موجود است . تمامی مرورگرهای مطرح موجود ، به طور کامل از PHP پشتیانی می کنند .


      منابع دانلود و راهنمای PHP :
      در این قسمت منابع اصلی دانلود PHP و پایگاه داده آن یعنی MySQL را به شما معرفی کرده ایم :
      1. سایت رسمی و مرجع آموزش PHP به زبان انگلیسی : http://www.php.net
      2. دانلود PHP و ابزارهای جانبی: http://www.php.net/downloads.php
      3. دانلود MySQL از سایت رسمی: http://www.mysql.com/downloads/
      4. دانلود سرور Apache از سایت رسمی: http://httpd.apache.org/download.cgi

30

به اشتراک گذاری این پست


لینک به پست

ساختار دستوری PHP :

صفحات PHP از دو جزء اصلی تشکیل شده اند :

  1. تگ های HTML : ساختار صفحه های PHP ، کاملا با صفحه های HTML یکسان هستند . با این تفاوت که در این صفحات ، علاوه بر تگ های HTML می توان اسکریپت هایی را به زبان PHP برای اجرای دستورات مورد نظر خود ، به آنها اضافه نمایید . در این صفحات سایر اجزا با همان کد و ساختار صفحات HTML تعریف می شوند .
  2. اسکریپت های PHP : می توانید در هر جای صفحات PHP ، کدها و دستورات خود را که با این زبان نوشته اید را اضافه کنید .
    هر بلوک اسکریپت PHP ، همواره با عبارت php?> شروع شده و به عبارت <? خاتمه می یابد . دستورات مورد نظر بین این دو عبارت قرار می گیرند . هر خط دستوری PHP باید با عبارت سمیکلون ; به پایان برسد . این عبارت باعث می شود تا کدهای دستوری ، از هم جدا شده و قابل تشخیص شوند .

شکل کلی ( Syntax ) نوشتن یک اسکریپت PHP به صورت زیر است :

Syntax

<?php
.... php کدها و دستورات مورد نظر به زبان .... ;
?>
مثال :
<?php
echo "Hello World" ;
?>

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

نکته : در نسخه های جدید PHP ، می توان ساختار اسکریپت را به صورت خلاصه شده زیر نیز نوشت . اما برای سازگاری بهتر با تمامی ورژن ها ، استفاده از متد قبلی توصیه می شود :

Syntax

<?
.... php کدها و دستورات مورد نظر به زبان .... ;
?>
مثال :
<?
echo "Hello World" ;
?>

38

به اشتراک گذاری این پست


لینک به پست

نحوه قرار دادن اسکریپت های PHP در صفحات :

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

< html >
< head >
</head>
<body>
< p > This is a HTML Paragraph < /p >
<?php
echo "Hello World" ;
?>
</body>
</html>

31

به اشتراک گذاری این پست


لینک به پست

قرار دادن توضیحات comments در اسکریپت های PHP :

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

به این توضیحات در طراحی وب comments می گویند . توضیحات توسط مرور گرها نمایش داده نشده و از دید کاربر مخفی هستند و فقط در سورس کد صفحه قابل مشاهده می باشند .

چنانچه توضیح در حد یک خط باشد ، با قرار دادن کد // در ابتدا خط ، توضیح خود را بعد از آن بنویسید .

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

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

Syntax توضیح یک خطی

// متن توضیح 

Syntax توضیح چند خطی

/*
خط 1 توضیح
خط 2 توضیح
خط 3 توضیح
...
*/

مثال : درمثال زیر در یک صفحه PHP هم توضیح یک خطی و هم چند خطی قرار داده ایم . دقت کنید که این توضیحات در خروجی نمایش داده نمی شوند :

< html >
< head >
</head>
<body>
< p > This is a HTML Paragraph < /p >
<?php
// متن توضیح یک خطی
echo "Hello World" ;
/*
خط 1 توضیح چند خطی
خط 2 توضیح چند خطی
...
*/
?>
</body>
</html>

28

به اشتراک گذاری این پست


لینک به پست

نحوه تعریف و استفاده از متغیرها در PHP :

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

برای تعریف یک متغیر در PHP ، ابتدا علامت $ را قرار داده و سپس نام آن را تعیین می کنید . همچنین می توانید در هنگام تعریف آن را مقدار دهی کرده و یا اینکه بعدا در جای دیگر مقداری را به آن نسبت دهید . انتخاب با شماست .

شکل کلی تعریف و مقدار متغیرها در PHP به صورت زیر است :

<?php
$ var_name = value ;
?>
مثال : $ My_Name = " Developer " ;
$ Int_Num = 12 ;

نکته : توجه کنید که اگر علامت $ را فراموش کنید ، متغیر تعریف نخواهد شد .

نکته 2 : زبان PHP در تعریف متغیرها به کوچک و بزرگ بودن حروف حساس است . بنابراین برای مثال متغیر Num با num متفاوت خواهد بود .

قوانین نام گذاری متغیرها در PHP :

در نامگذاری متغیرها در PHP باید به قوانین زیر توجه نمایید . در غیر اینصورت متغیر شما تعریف نشده و برنامه با مشکل روبرو خواهد شد .

  1. نام یک متغیر حتما بایستی با یک حرف یا علامت _ شروع شود . برای مثال نام های Num یا IntNumber_ صحیح و نام 1int غلط می باشد .
  2. نام متغیرها فقط می تواند شامل حروف ، اعداد و یا علامت _ باشد . برای مثال نام Int_Num صحیح و نامی مثل Int%Num غلط است .
  3. نام یک متغیر نمی تواند شامل فاصله باشد . اگر نام متغیر بیش از یک کلمه است ، باید با علامت _ آن را از هم جدا کرده و یا با بزرگ و کوچک نوشتن حروف ، کلمات را از هم تمایز دهید . برای مثال Int_Num یا IntNum . توجه داشته باشید مثلا نام Int Num غلط است .

انواع متغیرها در PHP :

برخلاف زبان های برنامه نویسی مثل VB یا ASP.Net در PHP لازم نیست ، نوع داده متغیر تعریف شود . هنگامی که متغیر را تعریف می کنید ، در زمان مقدار دهی ، PHP به طور اتوماتیک نوع داده ای را تبدیل کرده و در متغیر ذخیره می کند . برای مثال اگر یک متغیر را تعریف کرده و سپس مقدار یک عدد را به آن نسبت دهید ، PHP به طور اتومانیک نوع آن متغیر را عددی تعیین می کند . برای مواردی مثل متن و یا boolen نیز وضع به همین ترتیب است .

در متغیر های تعریف شده در مثال جدول synatx در بالای صفحه ، متغیر متغیر My_Name از نوع متن ( String ) و متغیر Int_Num از نوع عددی ( Integer ) خواهند بود . دقت کنید که مقدار های متنی باید در بین دو علامت " " تعریف شوند . ولی برای عدد اینگونه نیست .

34

به اشتراک گذاری این پست


لینک به پست

تابع در PHP :

همانند سایر زبان های برنامه نویسی در PHP نیز ، توابع یکی از مهمترین ابزارها برای طراحی برنامه ها هستند . PHP دارای بیش از 700 تابع درون ساخته است که امکان انجام بسیاری از کارها را را راحتی در اختیار برنامه نویسان قرار می دهد .

تابع چیست و چه کاربری دارد ؟ :

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

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

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

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

تعریف تابع در زبان PHP :

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

تعریف تابع در 7 با کلمه کلیدی function آغاز شده و سپس نام آن قرار می گیرد . نام تابع باید منحصر به فرد و غیر تکراری باشد . از قوانین زیر در نام گذاری توابع در 7 استفاده می شود :

  1. نام یک تابع حتما بایستی با یک حرف یا علامت _ شروع شود . برای مثال نام های MyFunction یا MyFunction_ صحیح و نام 1function غلط می باشد .
  2. نام توابع فقط می تواند شامل حروف ، اعداد و یا علامت _ باشد . برای مثال نام My_Function صحیح و نامی مثل My%Function غلط است .
  3. نام یک تابع نمی تواند شامل فاصله باشد . اگر نام تابع بیش از یک کلمه است ، باید با علامت _ آن را از هم جدا کرده و یا با بزرگ و کوچک نوشتن حروف ، کلمات را از هم تمایز دهید . برای مثال My_Function یا MyFunction . توجه داشته باشید مثلا نام My Functionغلط است .
  4. نام توابع نمی تواند معادل کلمات کلیدی در زبان 7 باشد . برای مثال نام یک تابع نمی تواند print باشد .

پس از نام تابع پرانتز باز و بسته قرار می دهیم . همچنین دستورات تابع بین دو { و } قرار می گیرد . هر کدی که بین این دوعلامت باشد ، جزء تابع خواهد بود .

 <?php
function نام تابع ( )
{
...
دستورات تابع
....
}
?>
مثال :
<?php
function My_Function ( )
{
...
echo " PHP Toturail " ;
....
}
?>

فراخوانی تابع در PHP :

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

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

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

<?php
نام تابع ( ) ;
?>
مثال :
<?php
My_Function ( ) ;
?>

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

< html >
< head >
</head>
<body>
<?php
function Show_Msg ( ) تعریف تابع
{
echo " You are learning PHP " ;
}
?>
< p > This is a HTML Paragraph < /p >
<?php
Show_Msg ( ) ; فراخوانی تابع
?>
</body>
</html>

31

به اشتراک گذاری این پست


لینک به پست

ارسال پارامتر ( Parameter ) به تابع

مقدمه :

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

پارامتر چیست و چه کاربردی دارد :

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

هر تابع می تواند چندین پارامتر داشته باشد . مقادیری که می خواهیم به تابع ارسال کنیم تا در اجرای دستورات استفاده شوند را توسط پارامترهای تعیین شده به تابع ارسال می کنیم . فرض کنید که یک تابع عملیات جمع دو متغیر را انجام می دهد . می توانیم در هر بار فراخوانی تابع ، دو مقداری که مورد نظرمان است را توسط دو پارامتر به تابع ارسال کنیم ، تا آن دو را با هم جمع نماید . پارامترهای مورد نظر خود را به ترتیب در پرانتز مقابل نام تابع به ترتیب تعریف کرده و چنانچه بیش از یکی هستند ، آنها را با علامت کاما ( , ) از هم جدا می کنیم . در PHP لزومی به تعیین نوع داده ای پارامترها نیست .

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

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

<?php
function نام تابع ( Parameter 1 , Parameter 2 , ... )
{
...
دستورات تابع
....
}
?>
مثال :
<?php
function My_Function ( $txt_Name , $txt_Family )
{
...
echo ( $txt_Name , $txt_Family ) ;
....
}
?>

ارسال مقادیر پارامترها به تابع :

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

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

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

< html >
< head >
</head>
<body>
<?php
function Show_Name ( $txt_Name , $txt_Family ) تعریف تابع و پارامترهای لازم
{
echo "My Name is : " . $txt_Name . " " . $txt_Family ;
}
?>
< p > This is a HTML Paragraph < /p >
<?php
Show_Name ( "Mehrdad" , "Fatahi" ) ; فراخوانی تابع و ارسال پارامترها
?>
</body>
</html>

25

به اشتراک گذاری این پست


لینک به پست

طراحی و کار با فرم ها در PHP :

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

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

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

کلیه کنترل های دریافت اطلاعات و محتویات فرم باید در دورن تگ فرم قرار بگیرند .

شکل کلی و نمونه طراحی یک فرم 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 فرم در این روش ، اطلاعات فرم به صورتی که در کد زیر نمایش داده شده به آدرس صفحه اضافه شده و به صفحه مقصد منتقل می شوند :

http://www.domain.com/submit.php? fname = morteza & 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 ، این اطلاعات توسط این صفحه دریافت شده و به کاربر نمایش داده می شود . کد این صفحه نیز به صورت زیر است :

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

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

25

به اشتراک گذاری این پست


لینک به پست

متد get و متغیر GET_$ در فرم های PHP

متد get :

در بخش قبل در قسمت آموزش فرم ها در 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 اتفاق می افتد :

  1. اول اینکه مرورگر به صفحه تعیین شده در خاصیت action یعنی صفحه receive.php ارسال می شود .
  2. دوم اینکه مرورگر نام کنترل های متن و مقادیرشان را به صورت زیر به آدرس صفحه اضافه کرده وآن صفحه را به مقصد ارسال می کند :
    آدرس در نوار آدرس مرورگر به صورت زیر در خواهد آمد . در این مثال فرض کرده ایم که کاربر برای نام مقدار Morteza و برای سن مقدار 26 را وارد کرده است :

http://www.domain.com/receive.php? fname = Morteza & age = 26 

چند نکته مهم :

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

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

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

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

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

تشریح روش با یک مثال عملی :

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

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

13

به اشتراک گذاری این پست


لینک به پست

متد post و متغیر POST_$ در فرم های PHP

متد post :

در بخش قبل در قسمت آموزش فرم ها در 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 اتفاق می افتد :

  1. اول اینکه مرورگر به صفحه تعیین شده در خاصیت action یعنی صفحه receive.php ارسال می شود .
  2. دوم اینکه مرورگر نام کنترل های متن و مقادیرشان را به صورت کد شده و مخفیانه به صفحه مقصد ارسال می کند :
    آدرس در نوار آدرس مرورگر به صورت زیر در خواهد آمد . در این مثال فرض کرده ایم که کاربر برای نام مقدار ali و برای سن مقدار 22 را وارد کرده است :

http://www.domain.com/receive.php

چند نکته مهم :

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

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

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

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

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

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

تشریح روش با یک مثال عملی :

مطالب تشریح شده همراه با کد مورد نیاز آن را در مثال عملی زیر نمایش می دهیم .

کد لازم برای دریافت مقادیر متغیرهای ارسالی ، که در فرم بالای صفحه ارسال شده است به صورت زیر است . در فرم دو متغیر fname و age داشتیم ، که در کد صفحه مقصد آن ها را به روش زیر دریافت کرده و در خروجی دوباره استفاده نموده ایم :

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

13

به اشتراک گذاری این پست


لینک به پست

کار با تاریخ در PHP - توابع پیش ساخته زبان PHP

تابع ( ) date در PHP :

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

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

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

< ? php
date ( format ) ;
? >

توضیح هر یک از موارد syntax در مطلب فوق

پارامتر format :

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

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

  • کاراکتر d : این کاراکتر ، نمایشگر شماره روز در تابع date بوده و عددی بین 01 تا 31 است .
  • کاراکتر m : این کاراکتر نمایشگر عدد ماه در تابع date بوده و عددی بین 01 تا 12 است .
  • کاراکتر Y : کاراکتر Y نمایشگر عدد سال در تابع date بوده و یک عدد چهار رقمی است .
  • کاراکترهای جدا کننده : از کاراکترهایی مثل " / " ، " - " ، " . " و ... می توان برای جدا نمودن عددهای سال و ماه و روز در تایع date است نمود.

مثال عملی : در مثال زیر نحوه به کار بردن تابع date در نمایش تاریخ و حالت های مختلف پارامتر format در آن را نمایش داده ایم :

: کد

< ? php
echo date("Y/m/d") . " < br / > ";
echo date("Y.m.d") . " < br / >";
echo date("Y-m-d");
? >

: خروجی

2012/03/11
2012.03.11
2012-03-11

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

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

checkdate ( ) 

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

date_default_timezone_get ( )

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

date_default_timezone_set ( )

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

date_sunrise ( )

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

date_sunrset ( ) 

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

getdate ( )

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

mktime ( )

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

10

به اشتراک گذاری این پست


لینک به پست

تابع ( ) time در PHP :

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

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

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

 < ? php
time ( ) ;
? >

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

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

: کد

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

: خروجی

 کد
1139118081
02/03/2012
توجه کنید که خروجی به صورت اکتیو توسط مرورگر تولید نشده است .

11

به اشتراک گذاری این پست


لینک به پست

کار با تابع ( ) include در PHP :

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

از این ترفند معمولا برای ساخت صفحات مادر ( Master Page ) در PHP ، استفاده می شود

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

< ? php
include ( آدرس و نام فایل یا صفحه ای که می خواهید محتویات آن را در صفحه جاری وارد نمایید ) ;
? >

نکته مهم : اگر درهنگام اجرای دستور ( ) include ، مشکلی در اجرای فایل و خواندن محتویات آن به وجود آید ، سرور یک پیام هشدار صادر می کند ، ولی صفحه اجرا می شود ( با اشکال ) .

یک مثال از کاربرد این تابع :

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

مثال : در این مثال یک صفحه ساده PHP داریم . این صفحه دارای یک بخش هدر می باشد . اما کد بخش هدر را در یک فایل به نام header.php ذخیره کرده ایم . سپس با استفاده از تابع ( ) include ، محتویات فایل هدر را در صفحه خود وارد نموده ایم . این صفحه در هنگام اجرا کد بخش هدر خود را از فایل header.php دریافت خواهد کرد .

<html>
<body>
< ? php include ( "header.php" ) ; ? >
< h1 > محتویات صفحه < /h1 >
< p > محتویات صفحه < /p >
< /body >
< /html >

14

به اشتراک گذاری این پست


لینک به پست

کار با فایل ها در PHP :

به وسیله قابلیت های کار با فایل ها در 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 ) ;
? >

12

به اشتراک گذاری این پست


لینک به پست

آموزش ارسال ایمیل ( Email ) به وسیله PHP :

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

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

زبان PHP به صورت کامل از ارسال ایمیل در صفحات وب پشتیبانی می نماید .

تابع ( mail ، در PHP وظیفه ارسال ایمیل را بر عهده دارد . در این بخش قصد داریم تا به کمک تابع ( ) mail ، نحوه ارسال ایمیل را در PHP به شما آموزش دهیم .

تابع ( ) mail :

گفتیم که تابع ( ) mail در PHP ، وظیفه ارسال ایمیل را بر عهده دارد . اما این تابع چگونه کار می کند ؟

تابع ( ) mail ، به وسیله پارامترهایی که برای آن تعریف شده است ، آدرس ایمیل گیرنده و فرستنده ، موضوع و متن پیام و سایر خصوصیات یک ایمیل را دریافت کرده و سپس آنها را به مقصد ارسال می کند .

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

mail ( to , subject , message , headers ) ; 

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

to : این پارامتر آدرس ایمیل گیرنده یا گیرندگان نامه را دریافت می کند . استفاده از این پارامتر اجباری است .

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

massage : این پارامتر از نوع متن بوده و متن نامه را تعیین می کند . هر خط در این متن باید با یک کاراکتر ( \n ) از خط قبلی و یا بعدی جدا شود . همچنین تعداد کاراکتر هر خط نباید از 70 کاراکتر بیشتر باشد . استفاده از این پارامتر اجباری است .

headers : این پارامتر از نوع متن بوده و تعیین کننده خواصی مثل From و یا CC ( رونوشت ) است . هر خط در این متن باید با یک کاراکتر ( \r\n ) از خط قبلی و یا بعدی جدا شود . استفاده از این پارامتر اختیاری است .

پس از اینکه شما را با نحوه کار تابع ( ) mail و پارامترهای آن آشنا کردیم ، در چند مثال نحوه استفاده عملی از این تابع را به شما نشان می دهیم .

ارسال یک ایمیل ساده به وسیله تابع ( ) mail :

مثال 1 : در مثال زیر یک ایمیل ساده را به وسیله تابع ( ) mail ، ارسال کرده ایم . در این مثال هر کدام از خصوصیات ایمیل را به صورت از قبل تعیین شده در یک متغیر ذخیره کرده ایم . سپس متغیر ها را به عنوان پارامتر به تابع ( ) mail ارسال کرده ایم . این تابع نیز ایمیل را ارسال کرده و یک پیام تایید به کاربر نمایش می دهد .

توجه داشته باشید که این مثال فقط برای نمایش نحوه عملکرد تابع ( ) mail است و اینگونه ایمیل فرستادن بعید به نظر میاد . در مثال بعدی نحوه ارسال یک ایمیل کامل به وسیله یک فرم HTML را نشان خواهیم داد

< ? php
$to = "someone@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From:" . $from
mail ( $to , $subject , $message , $headers ) ;
echo "Mail Sent.";
?>

ارسال یک ایمیل به وسیله یک فرم HTML :

مثال 2 : در مثال زیر یک فرم HTML برای دریافت نظرات کاربران سایت طراحی کرده ایم . این فرم دارای تعدادی کادر متن است که مقادیر لازم را از کاربر دریافت کرده و سپس آنها را در یک متغیر تعیین شده ، ذخیره می نمایند . سپس این متغیرها را به عنوان پارامتر به تابع ( ) mail ارسال می کنند تا به ایمیل تعیین شده ارسال شوند :

<html>
<body>
<?php
if (isset($_REQUEST['email']))
// دستور بالا در صورتی که کادر ایمیل پر شده باشد ، ایمیل را ارسال می کند
{
// ارسال ایمیل
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail ( "someone@example.com" , $subject , $message , "From:" . $email) ;
echo "از ارسال ایمیل شما متشکریم";
}
else
// اگر کادر ایمیل پر نشده باشد ، برنامه فرم زیرا را نمایش می دهد
{
echo " < form method='post' action='mailform.php' >
Email : < input name='email' type='text' /> <br />
Subject : < input name='subject' type='text' /> <br />
Message : <br />
< textarea name='message' rows='15' cols='40' >
< /textarea > <br />
< input type='submit' />
< /form >";
}
?>
</body>
</html>

13

به اشتراک گذاری این پست


لینک به پست

ایجاد و استفاده از کوکی ( cookie ) :

کوکی چیست ؟

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

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

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

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

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

ایجاد کوکی ( cookie ) در PHP :

از تابع ( ) setcookie برای ایجاد و ذخیره یک کوکی در زبان PHP استفاده می شود . برای ایجاد یک کوکی تعیین چند چیز مهم است :

  1. نام
  2. مقدار
  3. مدت زمان اعتبار *

* نکته : توجه داشته باشید که کوکی ها پس از یک مدت زمان تعیین شده ، اعتبار خود را از دست می دهند و باید دوباره فراخوانی شوند . در این حالت می گوییم ، کوکی expire شده است .

برای مثال فرض کنید در یک سایت login کرده اید . سپس کامپیوتر و مرورگر خود را برای مدتی رها می کنید ( مرورگر و صفحه جاری را نمی بندید ) . پس از مراجعه دوباره متوجه می شوید ، که مرورگر شما را logout کرده است و دوباره باید وارد شوید . دلیل این مسئله پایان یافتن مدت زمان اعتبار یک کوکی است .

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

< ? php
setcookie ( name , value , expire , path , domain ) ;
? >

توضیح هر یک از موارد syntax :

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

value : پارامتر value مقدار کوکی را تعیین می کند .این مقدار بر روی کامپیوتر ذخیره می شود .

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

path : این پارامتر تعیین کننده مسیری بر روی سرور سایت است که کوکی در آن ، قابل دریافت و ذخیره است .برای مثال اگر مقدار آن برابر با '/' تعیین شود ، در تمام سایت قابل دسترسی است . اما اگر روی مقدار /en/' تنظیم شود ، فقط در دایرکتوری en در سایت قابل دسترسی است .تعیین این پارامتر اختیاری است .

domain : پارامتر domain ، دامنه ای که کوکی بر روی آن قابل دسترس است را تعیین می کند .برای مثال اگر مقدار آن 'www.wp-parsi.com' تنظیم شود ، فقط در این دامنه قابل دسترسی است .تعیین این پارامتر اختیاری است .

مثال های عملی :

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

مثال 1 :در مثال زیر یک کوکی به نام info با مقدار Mehrdad را ایجاد کرده ایم ، که برای مدت یک ساعت ( 3600 ثانیه ) اعتبار دارد . به کد مثال دقت نمایید :

< ? php
setcookie ( " info ", " NESTED ", time( )+3600 ) ;
? >

مثال 2 : در مثال دوم یک کوکی دیگر ایجاد کرده ایم ، که برای مدت یک سال اعتبار داشته ، ولی فقط در دامنه www.wp-parsi.com اعتبار دارد :

< ? php
$ expire = time( ) + 60 * 60 * 24 * 30 ;
setcookie ( " info2 ", " NESTED ", $expire , 'www.wp-parsi.com' ) ;
? >

12

به اشتراک گذاری این پست


لینک به پست

مفهوم و کاربرد Session در PHP :

مفهوم session :

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

از ابتدای فرایند تا لحظه ای که آن را به اتمام می رسانید ، ویندوز شما را شناخته و می داند که چه کسی هستید .

اما در دنیای وب و اینترنت اوضاع فرق دارد . وب سرور سایتی که در حال بازدید از آن هستید ، نمی داند که شما کی هستید . زیرا آدرس HTTP مرورگر به سرور راجع شما اطلاعاتی نمی دهد . بنابراین تمایز کاربران با یکدیگر غیر ممکن شده و سرور با این وضع برای سرویس دهی به آنها دچار مشکل می شود . بنابراین باید چه کرد ؟ راه حل کجاست ؟

این مشکل در وب و در زبان PHP به وسیله session حل شده است .

سرور سایتی که وارد آن می شوید ، اطلاعات شما مثل username , pass را در متغیرهایی به نام session ذخیره می کند . هر بار که صفحه جدیدی از همان سایت را باز می کنید ، سرور اطلاعات session شما را به همراه درخواست صفحه به مرورگر ارسال کرده و بنابراین دیگر نیازی ندارید در هر صفحه اطلاعات کاربری خود را مجددا وارد نمایید .

این فرایند را تاکنون بارها تجربه کرده و باعث راحتی شما بوده است . اما session چگونه ایجاد و استفاده می شوند .

نحوه تعریف session بر روی سرور :

سرور سایت ، در لحظه ورود کاربر به سایت و وارد نمودن اطلاعات کاربری ، یک seesion با یک شناسه خاص ( unique ID - UID ) برای وی ساخته و اطلاعات وی را در آن session ذخیره می کند . این اطلاعات تا زمانی که کاربر در سایت است و یا اعتبار session از بین نرفته ، بر روی سرور ذخیره شده و در مرورگر به صورت کوکی تعریف شده اند .

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

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

اکنون پس از تعریف مفهوم seesion ، قصد داریم تا شما را با نحوه تعریف و استفاده از session در PHP ، آشنا نماییم .

نحوه تعریف session در PHP :

برای ایجاد session در یک صفحه PHP ، ابتدا باید تابع ( ) session_startup را قبل از تگ < head > در صفحه ، تعریف نمایید . به صورتی که در جدول زیر نمایش داده ایم :

این کد session کاربر را در سرور ثبت کرده ، به شما اجازه می دهد که عملیات session را شروع نموده و یک UID برای شما ایجاد می کند .

< ? php   session_start( )   ; ? >
< html >
< head >
< /head >
< body >
< /body >
< /html >

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

در مثال زیر یک session به نام views ، ابتدا مقدار دهی شده و سپس در درون صفحه بازخوانی شده است :

< ? php 
session_start( ) ;
// را مقدار دهی می کند session کد زیر یک
$_SESSION [ 'views' ] = 1 ;
? >
< html >
< head >
< /head >
< body >
< ?php
// را می خواند session کد زیر مقدار
echo " Pageviews = " . $_SESSION [ 'views' ] ;
? >
< /body >
< /html >

خروجی مثال = Pageviews = 1

مثال : در مثال دوم کدی طراحی شده است که به وسیله متغیر session به نام views ، تعداد دفعات مشاهده یک صفحه را نمایش می دهد . این دستود ابتدا مقدار این session را بررسی کرده و در صورتی که مقدار دهی نشده باشد ( یعنی کاربر اولین بار وارد صفحه شده است ) ، مقدار آن را برابر با 1 قرار می دهد . اما اگر از قبل مقدار دهی شده باشد ، یعنی کاربر قبلا به صفحه سر زده است . بنابراین یک واحد به مقدار آن اضافه می کند :

< ? php
session_start( ) ;
if ( isset ( $_SESSION [ 'views '] ) )
$_SESSION [ 'views' ] = $_SESSION [ 'views' ] + 1 ;
else
$_SESSION [ 'views' ] = 1 ;
echo "Views = " . $_SESSION [ 'views' ] ;
? >

7

به اشتراک گذاری این پست


لینک به پست

ساخت مستر پیج Master Page :

به وسیله تابع های ( ) include و ( ) require ، می توانید محتویات یک صفحه را درون یک صفحه دیگر وارد نمایید . در این حالت سرور PHP ، در هنگام اجرای صفحه ، محتویات صفحه وارد شده را با صفحه اصلی ادغام کرده و به صورت یکجا نمایش می دهد .

اما این کار چه فایده ای دارد ؟

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

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

در این حالت شما برای طراحی این سایت 2 راه حل دارید :

  1. کد هدر و منو را در هر صفحه با copy و paste کردن و به صورت تکراری در کنار سایر محتویات در هر صفحه قرار دهید .
  2. کدر هدر را در یک فایل PHP به نام هدر و کد منو را در یک فایل دیگر PHP به نام منو قرار دهید . همچنین محتویات هر صفحه را در خود آن صفحه قرار دهید . سپس محتویات هدر و منو را با به کار بردن تابع ( ) include و یا ( ) require و اشاره به نام فایل کد آنها ، در درون هر صفحه وارد نمایید . در این حالت سرور PHP در هنگام اجرای هر صفحه ، محتویات فایل های هدر و منو را با محتویات خود صفحه ترکیب کرده و خروجی را تولید می کند .

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

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

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

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

PHP_Master_Page.gif

تفاوت تابع های ( ) include و ( ) require :

گفتیم که از تابع های ( ) include و یا ( ) require برای ساخت مستر پیچ ها استفاده می شود . اما این دو تابع با هم چه تفاوتی دارند . این دو تابع در هر حالت با هم یکسان هستند ، به جز مورد زیر :

  • اگر در هنگام کار با تابع include مشکلی برای اجرای صفحه پیش آید ، سرور یک پیام هشدار معمولی صادر کرده ، ولی صفحه را لود و اجرا می کند .
  • اما چنانچه برای پردازش صفحه در هنگام کار با تابع ( ) require مشکلی پیش بیاید ، سرور پردازش را متوقف کرده و صفحه دیگر اجرا نمی شود .

7

به اشتراک گذاری این پست


لینک به پست

با اجازه آقا مرتضی و ضمن تشکر از ایشون جهت آموزش عموم مطالب لازم .

آموزش شی گرائی :

درک مفهوم شی گرائی و لزوم کاربرد :

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

ساده ترین مثال کاربا دیتابیس .

فرض رو بر این بگیریم پروژه شما با پایگاه داده Mysqlنوشته شده و از درایور mysql استفاده میکنید . در جای جای پروژه شما میتوان تابع mysql_query را یافت .

حال با به دلایلی مجبور به استفاده از پایگاه دیگه ای هستید یا شاید بخواهید از داریور mysqli استفاده کنید! اینجاست که باید کل پروژه دستخوش تغییر شود . اما اگر همیشه از یک شی که کار اتصال و کوئری گرفتن را انجام دهد استفاده کنید ، فقط کافیست یک کلاس رو تغییر دهید .

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

پیشنهاد میکنم این مطالب را بخوانید .

http://phpro.ir/topic/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%b4%db%8c%d8%a1-%da%af%d8%b1%d8%a7-%d8%af%d8%b1-php-%d9%82%d8%b3%d9%85%d8%aa-%d8%a7%d9%88%d9%84-2

http://forum.iranphp.org/Thread-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B4%DB%8C-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C?pid=577#pid577

شروع

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

کلاس با کلمه class شروع میشود و بعد از آن اسم کلاس دلخواه که تابع قوانین نامگذاری پی اچ پی است و دو تا آکولاد


class my_class{

// some code

}

هر کلاس میتواند شامل متغییرها ، ثابت ها و توابع مخصوص به خود باشد .

دقت کنید که به متغییرهای داخل کلاس ، پروپرتی گفته میشود و به توابع داخل کلاس متد !



class my_class{

public $var1 = null;
private $var2 = null;
protected $var3 = null;

const my_define = 'i am constant';

public function my_func1()
{
///
}

private function my_func2()
{
//
}

protected function my_func3()
{
//
}

}

var1 , var2 , var3 متغییرها یا بهتر بگم پروپرتیهای کلاس هستند (در ادامه با تفاوت کلامات کلیدی public protected private آشنا میشید ).

my_define ثابت کلاس هست .

my_func1 , my_func2 , my_func3 متدهای کلاس هستن که البته میتونن آرگومان هم بگیرن مثلاً



class my_class{

public $var1 = null;
private $var2 = null;
protected $var3 = null;

const my_define = 'i am constant';

public function my_func1($arg1,$arg2)
{
///
}

private function my_func2($arg1=null)
{
//
}

protected function my_func3($arg1 = '')
{
//
}

}

استفاده از پروپرتی ها در داخل متدهای کلاس

خب طبعاً ما پروپرتی ها و ثوابتی رو تعریف کردیم نحوه استفاده از آنها برای متدها و پروپرتی های غیر استاتیک(بعداً آشنا میشوید) از کلمه کلیدی $this استفاده میشود و برای ثوابت از self (بعداً خواهید آموخت برای متد و پروپرتی های استاتیک هم از کلمه کلیدی self استفاده میشود)




class my_class{

public $var1 = null;
private $var2 = null;
protected $var3 = null;

const my_define = 'i am constant';

public function my_func1()
{
if($this->var1 === null) // this is true
$this->var1 = 'My firest var setted';
}

public function show_var()
{
$this->myfunc1();
echo $this->var1; //out : My firest var setted
}

public function show_const()
{
echo self::my_define; // out: i am constant
}

public function show_var2()
{
echo $this->var2; // out: null/0
}

public function set_var2($arg)
{
$this->var2 = $arg;
}

}

نحوه استفاده از کلاس

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

لزوم استفاده از کلاس ساخت یک شی از اون هست .

کلاس بالا رو در نظر بگیرید ابتدا باید یک شی از این کلاس بسازیم و در متغییر بذاریم .

فکر کنم مثال پائین گویای همه چیز هست .



$obj1 = new my_class;
$obj1->show_var(); // out: My firest var setted

$obj1->var1 = 'setted in put';
$obj1->show_var(); // out: setted in put

$obj1->show_const(); //out: i am constant
echo $obj1::my_define ; //out: i am constant

$obj1->set_var2('i am setted2');
$obj1->show_var2(); // out : i am setted2

ذکر این نکته خارج از لطف نیست که متد ها و پروپرتی هایی که public هستن در نمونه گیری میتونن مورد استفاده باشن . همچنین ثابتها را نمیتوان مقدار دهی کرد (اسمش روی خودشه دیگه)

برای مثال دستورات زیر خطا میدهد .



$obj1->var2= 'i am var2'; # Error
echo $obj1->var3 ; # Error
$obj1::my_define = 'you not setted'; # Error

جلسه آینده بیشتر بحث میکنیم .

جهت مطالعه بیشتر : http://phpro.ir/topic/%D9%85%D8%AA%D8%AF%D9%87%D8%A7%DB%8C-%D8%AC%D8%A7%D8%AF%D9%88%DB%8C%DB%8C-%D8%AF%D8%B1-php

11

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

ارث بری :

شاید مقوله ارث بری در همین ابتدا کمی براتون سنگین باشه و اصلاً لزوم استفاده شو ندونید .

در برنامه نویسی شی گرایی باید دید خود را به نحوه پیاده سازی برنامه کاملاً تغییر دهید .

در یک برنامه ساده مثلاً وردپرس ، کاربر نهایی در خود پنل وردپرس کار میکند و اصلاً نیازی به گشت و گذار در کدهای پی اچ پی را ندارد اما اگر برنامه شما یک برنامه پویا باشد ، باید انتظار این را داشته باشید که هر شخصی بتواند نسبت به نیاز خودش ، برنامه را تغییر و توسعه دهد .

بر همین اساس یک سری کلاسها بعنوان base برنامه استفاده میشود (که معمولاً در init برنامه بعنوان هسته معرفی میشوند) که کلاسهای دیگر از این کلاس ارث بری میکنند.

مثلاً ما یک کلاس post تعریف میکنیم که وظیفه آن گرفتن اطلاعات یک post هست .



class post{

const dbname = 'test';
const dbuser = 'root';
const dbpass = '';
const dbhost = 'localhost';

private function connect()
{
@mysql_connect(self::dbhost, self::dbuser, self::dbpass) or die('<h1>error in connect db');
@mysql_select_db(self::dbname) or die('<h1>error in select db');
@mysql_query("SET NAMES 'utf8' ");
}

public function get_post_by_id($id = null)
{
$id = (int) $id;
$this->connect();
$query = mysql_query("SELECT * FROM `post` WHERE `id`=$id LIMIT 1 ");
return mysql_fetch_assoc($query);
}

}

حال میتوانیم کلاسهای دیگری را تعریف کنیم که از این کلاس ارث بری کنند .

مثلاً کلاس موضوعات



class category extends post{

public function get_post_by_catid($cat_id = null)
{
$cat_id = (int) $cat_id;
$this->connect();
$query = mysql_query("SELECT `post_id`,`cat_id` FROM `cat_post` WHERE `cat_id`=$cat_id ");

$out = array();

while($row = mysql_fetch_assoc($query))
{
$get_post = $this->get_post_by_id($row['post_id']) ;
$out[] = $get_post['title'];
}

return $out;
}
}

میبینید که در کلاس category متدهایی رو استفاده کردیم که در کلاس post هست پس کلاس post میشه کلاس پدر (کلاس مادر هم داریم بعداً توضیح میدم ;) )

حال نحوه استفاده خیلی ساده است مثلاً مطالب موضوعات شناسه 2 رو میخوایم



$category = new category;
$post_by_cat = $category->get_post_by_catid(2);

foreach($post_by_cat as $post)
{
echo $post['title'].' - ';
}
//out : عنوان مطلب 1 - عنوان مطلب2 - عنوان مطلب 3 - عنوان مطلب چهارم

*یک نکته ! دیدید که در کلاس post متد connect از نوع protected هست این بدان معنی است این متد در کلاسهای مشتق (مثل category) هم میتواند استفاده شود اما در نمونه گیری خیر ! بطور مثال دستور زیر نادرست است .



$post = new post;
$post->connect(); # Error

ویرایش شده در توسط NESTED
تصحیح کد
7

به اشتراک گذاری این پست


لینک به پست

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

مقدمه :

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

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

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

برای مثال نام ورودی کاربر بایستی حداکثر 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 " ) ;
}
?>

11

به اشتراک گذاری این پست


لینک به پست

ایمن سازی داده ها (escape)

بعد از مبحث اعتبار سنجی که آقا مرتضی زحمتش رو کشیدن ، میرسیم به بحث ایمن سازی داده ها .

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

1 . داده های عددی .

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

داده های عددی رو به راحتی میشه با تابع intval ایمن کرد .


$str = 'reza1';
echo intval($str); // out : 1

$str = '1.reza';
echo intval($str); // out : 1

$str = '12366554deed';
echo intval($str); // out : 12366554

$str = '-091.reza';
echo intval($str); // out : -91

$str = '-1.reza';
echo intval($str); // out : -1

$str = '1.5669885.55';
echo intval($str); // out : 1.5669885

تنها مشکلی که این تابع داره نمیتونه داده هایی با طول بیشتر از 10 رو ایمن کنه و به جاش NULL برمیگردونه .

البته فکر نکنم حالا حالا ها تعداد مطالب شما به 9999999999 تا برسه :D

اما گاهی لازمه عددهایی با طول بیشتر رو ایمن کنید من یه تابع نوشتم با preg_replace این کارو میکنه


function big_intval($str ='')
{
$str = preg_replace('@([^0-9])@','',$str);
$str = ltrim($str,0);
if(empty($str))
$str = 0;
return $str;
}
# example
$str = 'reza1';
echo big_intval($str); // out : 1

$str = '1.reza';
echo big_intval($str); // out : 1

$str = '12366554deed';
echo big_intval($str); // out : 12366554

$str = '-091.reza';
echo big_intval($str); // out : 91

$str = '-1.reza';
echo big_intval($str); // out : 1

$str = '1.5669885.55';
echo big_intval($str); // out : 1566988555

$str = '123_ss__.._456__ss_589s145s98ss.485698s4r55f';
echo big_intval($str); // out : 12345658914598485698455

این تابع با تابع بالایی اندکی تفاوت داره .

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

این تابع رو میتونید برای مثلاً مبالغ استفاده کنید .

2. داده های رشته ای

داده های رشته ای به عباراتی غیر از عدد گفته میشوند .

داده های رشته ای میتونن دستورات html باشن و ...

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

خب راه حل استفاده از تابع trim هست .


$str = ' reza ';

echo trim($str) ; //out : reza

echo ltrim($str) ; //out: reza |

echo rtrim($str) ; //out : reza

گاهی اوقات نیاز هست تمام تگ های جاوا اسکریپت و html رو حذف کنید جهت جلوگیری از هک XSS راه حل استفاده از تابع strip_tags هست .


$str = '<a href="">salam</a>';
echo strip_tags($str); // out:salam

$str = '<script>alert("XSS !")</script>';
echo strip_tags($str); // out: XSS

$str = '<span class="test">reza';
echo strip_tags($str); // out: reza

$str = '<style>.test{display:block}</style><div class=test>reza</div>';
echo strip_tags($str); // out: reza

گاهی اوقات نیاز هست تمامی آنچه در رشته هست در دیتابیس دخیره شود ، چه html , css , ... اما بصورتی که بعد از فراخوانی ، نمایشی باشد .

مثلاً به جای <strong>salam</strong> بنویسد <strong>salam</strong> یعنی یک رشته امن از نظر html و css و javascript

راه حل استفاده از تابع htmlspecialchars است .


$str = '<script>alert("XSS!");</script>';
echo htmlspecialchars($html, ENT_QUOTES); //out : <script>alert("XSS!");</script>

$str = '<style>*{display:none}</style>';
echo htmlspecialchars($html, ENT_QUOTES); //out : <style>*{display:none}</style>

$str = "<div style='font-size:40px'>BIG</div>";
echo htmlspecialchars($html, ENT_QUOTES); //out : <div style='font-size:40px'>BIG</div>

البته شما میتوانید از توابع کاملتری استفاده کنید مثلاً str_replace , preg_replace که یک پترن عبارت باقاعده ایجاد میکنید ، رشته هایی که شامل شدند عبور داده میشوند و رشته های غیره حذف میشوند .

مثلاً یک پترن ساده برای گرفتن فقط حروف کوچک لاتین a تا z


$str = 'reza رضا';
echo preg_replace('/[^a-z]+/','',$str); //out : reza

* لازم به ذکر است برای ذخیره سازی این رشته ها در دیتابیس باید از توابع escape مخصوص آن درایور دیتابیس استفاده کرد که در مبحث دیتابیس MySQL به آن اشاره شده/میشود .

9

به اشتراک گذاری این پست


لینک به پست

سلام ببخشيد اين مبحث آموزش مدتي متوقف شده بود

آموزش هاي اين بخش مجدد از سر گرفته خواهد شد

و بعد از اتمام هر فصل ، كل آموزشهاي فصل ياد داده شده به صورت فايل PDF در ارسال اول تايپك قرار خواهد گرفت

اين تاپيك آموزشي بوده و از ارسال سوالات خود در مورد آموزشها خود داري كنيد

دوستان ديگر هم مايل باشن مي تونن در روند آموزش اين تاپيك ياري رسان باشند فقط توجه داشته باشند آموزش ها بايد به سادترين شكل ممكن بوده و از ارسال آموزشهاي غير مرتبط در زمينه آموزش پايه ايي خودداري نمايند

بزودي با شما خواهيم بود

12

به اشتراک گذاری این پست


لینک به پست
مهمان
این موضوع برای عدم ارسال قفل گردیده است.

  • مطالب مشابه

    • توسط سعید فرزادی پور
      با عرض سلام
      من به مشکلی خوردم که راه حل اون رو نمیدونم
      در هدر سایت یک نویگیشن بار دارم که منوی اصلی سایتم به صورت دراپ داون در این نویگیشن بار وجود داره ، قال سایت من shaply هستش و استفاده از ویجت ها در body بازه ، من با استفاده از یک ویجت اسلایدر در بالاترین قسمت و زیر هدر سایت که ارتفاع اونم 55 پیکسل هستش اسلایدر بزرگ ایجاد کردم ، و حالا زمانی که میرم روی دراپ داون ها متاسفانه تا قبل از اسکرول کردن به پایین ، زیر منو ها به زیر اسلایدر میرن ، اما بعد از اسکرول کردن به پایین این مشکل حل شده و منو ها و زیر منو ها نمایش داده میشن ، هرچه z-index رو افزایش دادم نتیجه ای نداشت ، چطور میتونم این مشکل رو حل کنم ؟
      و سوال دوم این که در این تم منو ها اول به پایین و بعد به راست باز میشن و من میخوایم سایت رو به صورت فارسی داشته باشم و میخوام اول به پایین و بعد به چپ باز بشن منو ها , چه تغییری میتونم در css ایجاد کنم ؟
    • توسط poruamohammady
      سلام دوستان من یه مدت هست افزونه هایی که نصب می کنم ورد پرس بهم این اخطار هار رو میده کسی میتونه کمک کنه برای مثال تازگی ها افزونهwp-super cacheرو که نصب کردم این اومد قبلا هم چیزای دیگه بود مرسی اگر راهنمایی کنید

    • توسط mehran-b
      با سلام و عرض ادب خدمت تمامی کاربران انجمن وردپرس پارسی
       
      امروز یک کدی براتون قرار میدم که با استفاده از این کد میتونید به تمامی پست های یه دسته خاص از وب سایتتون متای robots با مقدار noindex,follow اضافه کنید.
       
      در صورت نصب بودن افزونه سئو وردپرس
      add_filter('wpseo_robots', 'mehran_specific_category_posts_add_noindex_yoast'); function mehran_specific_category_posts_add_noindex_yoast($content) { if(is_single() && in_category(777)) { return "noindex,follow"; } return $content; } در صورت نصب نبودن افزونه سئو وردپرس
      add_action('wp_head', 'mehran_specific_category_posts_add_noindex'); function mehran_specific_category_posts_add_noindex() { if(is_single() && in_category(777)) { $output = '<meta name="robots" content="noindex,follow" />' . "\n"; } echo $output; }  
      توجه1: کدهای بالا رو باید در فایل functions.php قالب سایتتون و زیر اولین
      <?php قرار بدید.
      توجه2: به جای عدد 777 در کد باید آیدی دسته ای رو قرار بدید که قراره پست هاش noindex,follow بشن.
       
      موفق باشید
    • توسط mansarifar
      توی پوسته jobmonster  که یک پوسته کاریابیه. رزومه کارجو ها رو فقط کسانی که شغل تعریف می کنند میتونن ببینن. میخواستم این دسترسی رو تغییر بدم . یعنی همه بتونن ببینن.کسی می تونه کمک کنه؟ ممنون میشم
    • توسط mehran-b
      سلام بر دوستان و ستون های انجمن
       
      در حال طراحی یک پلاگین خبرخوان هوشمند هستم که دو مشکل واقعا نمیدونم از کجاست مطرح میکنم انشاالله حل بشه.
      مود اول یه ارورلاگ هست مربوط به یکی از تیبل های پلاگین که همون ارور Error Code: 1062. Duplicate entry '1' for key 'PRIMARY' هست در حالی که من قبلش چک میکنم که وجود نداشته باشه همچین ردیفی در جدول و بعد insert میکنم.
      استرکچر تیبل به این شکل هست:

      خوب همون طور که مشخصه ارور مربوط به ستون hash هست و ستون id یونیک و دو ستون status و time صرفا index هستند و یونیک نیستند.
      کدی که باهاش چک میکنم که همچین رکوردی هست و اگر نبود insert میکنم اینه:
      foreach($post_link as $link) : if($wpdb->get_var($wpdb->prepare("SELECT id FROM $table_name WHERE hash = %s", hash('sha256', $link))) === null) $wpdb->insert($table_name, array('hash' => hash('sha256', $link), 'link' => $link, 'status' => 'Q', 'source_name' => $source_name, 'time' => date("Y-m-d H:i:s")), array('%s', '%s', '%s', '%s', '%s')); endforeach; خوب میریم سراغ موردی بعدی مورد بعدی هم یه ارورلاگه که مطمئنم مربوط به افزونه ام میشه ولی به یکی از فایل اصلی وردپرس اشاره میکنه ارورلاگ اینه:
      Warning: Invalid argument supplied for foreach() in /www/htdocs/XXXXXXX/wordpress/wp-includes/class-wp-list-util.php on line 153 البته به یه موردی اشاره کنم که wp_list_pluck رو مستقیم توی کدهای افزونه استفاده نکردم ولی شاید توابع دیگه وردپرس که استفاده کردم توی پلاگین از این تابع استفاده کنند.
      توابعی که از وردپرس استفاده کردم توی پلاگینم اینا هستند:
      get_option(); wp_die(); apply_filters(); register_activation_hook(); $wpdb::get_var(); $wpdb::get_charset_collate(); dbDelta(); wp_insert_category(); add_action(); add_menu_page(); get_current_screen(); update_option(); add_option(); wp_remote_get(); wp_remote_retrieve_response_code(); wp_nonce_field(); $wpdb::insert(); wp_insert_post(); wp_set_post_terms(); wp_update_post(); wp_get_post_terms(); $wpdb::get_row(); $wpdb::update(); تشکر از راهنماییتون.
      یا حق