تبليغاتX
UNiComp.iR | Download Direct Tutorials Video , Film | دانلودمستقیم فیلم آموزشی،کتاب،جزوه،مقاله
دانلودمستقیم فیلم آموزشی،کتاب،جزوه،مقاله
دانلود مستقیم فیلم آموزشی ، کتاب ، جزوه ، مقاله ، هک

اولين سايت فارسي ارائه دهنده فيلم هاي آموزشي با لينك مستقيم دانلود

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

  • Apache
  • MySQL
  • PHP + PEAR
  • MiniPerl
  • OpenSSL
  • phpMyAdmin
  • XAMPP Control Panel
  • Webalizer
  • Mercury Mail Transport System
  • FileZilla FTP Server
  • SQLite
  • ADODB
  • Zend Optimizer
  • XAMPP Security


ادامه مطلب...
Subscribe
ارسال در تاريخ شنبه هجدهم مهر 1388 توسط سعيد

15 ويديو آموزشي Ajax در PHP رو ميتونيد از طريق لينك هاي زير هم دانلود كنيد و هم مشاهده نمائيد.



ادامه مطلب...
Subscribe
ارسال در تاريخ پنجشنبه نهم مهر 1388 توسط سعيد
الگوی یکتا چیست ؟

پیش از اینکه به توضیح در مورد این الگوی خاص بپردازم ،توضیح مختصری راجع به Design Patterns می دم تا با ایده اصلی کمی آشنا بشین .

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


الگوی یکتا :
در خیلی از موارد بهتره که ما فقط یک instance از یک کلاس در کل اسکریپت داشته باشیم و این معمولا وقتی پیش می آد که شی مورد نظر یه component منحصر به فرد را در سیستم مشخص می کنن و یا اینکه بخوان یک نمونه (instance) را بین اجزا مختلف برنامه به اشتراک بذارن .مثلا وقتی که ما از دیتابیس تو برناممون استفاده می کنیم دیتابیس می تونه یه نمونه (instance) از کلاس DB باشه که تو جاهای مختلف برنامه ازش استفاده می کنیم. به عبارت دیگه با استفاده از این الگو می تونیم از تولید اشیاء تکراری جلوگیری کنیم و در نتیجه در استفاده از حافظه و زمانی که برای ساختن شی جدید می شه صرفه جویی می کنیم.
کلاسهایی که می خوایم در قالب این الگو باشند با ید شرایط زیر را داشته باشن :
هیچ راهی برای تولید نمونه دیگری از شئ مورد نظر نباید وجود داشته باشد.
تا زمانی که نیاز نیست نباید ساخته شود.
پیدا کردنش نیز باید راحت باشه.

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


پیاده سازی الگوی یکتا در PHP5 :

خوب با توجه به سه موردی که در بالا به اونا اشاره کردم ما باید مطمئن بشیم که راهی برای تولید شئ خارج از مداری که ما می خوایم وجود نداره پس ساختن (instance گرفتن) را ممنوع می کنم ؟! فقط کافیه که تابع سازنده را private کنیم اینجوری فقط یکی از متدهای خود کلاس می تونه نمونه جدید بسازه.

ادامه مطلب...
Subscribe
ارسال در تاريخ سه شنبه پنجم آذر 1387 توسط سعيد
4 PHP - eBooks

ادامه مطلب...
Subscribe
ارسال در تاريخ دوشنبه چهارم آذر 1387 توسط سعيد

سلام دوستان.
در این پست اسکریپتی آورده ام که به شما امکان ارسال ایمیل توسط PHP می دهد.

طریقه استفاده از این اسکریپت بدین شکل می باشد:
1- ابتدا با فرانت پیج یا هر نرم افزار ویرایش گر HTML فرم خود را طراحی نمایید.
2- سپس بر روی فرم رایت کلیک کرده و از منو گزینه Form Properties را انتخاب نمایید.
3-بعد از آن گزینه Send to Other را انتخاب کرده و دکمه Options را فشار دهید.
4- در قسمت Action نام اسکریپت (email.php ) را انتخاب نمایید.
5- چنانچه مقدار فیلد Method به صورت پیشفرض POST نبود آن را به POST تغییر دهید
6- فایل mail.conf.php را با یک ویرایشگر عادی مثل Notepad باز نمایید و محتویات ان را مطابق دستورالعمل زیر تغییر دهید:

 

 

 



ادامه مطلب...
Subscribe
ارسال در تاريخ جمعه یکم آذر 1387 توسط سعيد
مخصوص کسایی که دنبال seo هستن :


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

فرمت : pdf

Book Description
Maybe you’re a great programmer or IT professional, but marketing isn’t your thing. Or perhaps you’re a tech-savvy search engine marketer who wants a peek under the hood of a search engine optimized web site. Search engine marketing is a field where technology and marketing are both critical and interdependent, because small changes in the implementation of a web site can make you or break you in search engine rankings. Furthermore, the fusion of technology and marketing know-how can create web site features that attract more visitors.

The mission of this book is to help web developers create web sites that rank well with the major search engines, and to teach search engine marketers how to use technology to their advantage. We assert that neither marketing nor IT can exist in a vacuum, and it is essential that they not see themselves as opposing forces in an organization. They must work together. This book aims to educate both sides in that regard.

From the Back Cover
Professional Search Engine Optimization with PHP

Search engine optimization (SEO) is not only the job of the marketing department. It must be considered from a web site's inception and throughout its lifetime by you, the web site developer. Making changes to the architecture of a web site and modifying presentation techniques can dramatically increase search engine rankings and traffic levels.

Written for the PHP developer or tech-savvy marketer, this unique reference provides techniques for creating and maintaining web sites optimized for search engines. You'll discover how to facilitate the indexing of your site, as well as how to leverage specific technologies and services for site promotion. You will understand the role of web site architecture in search engine optimization and explore various topics therein. Knowing this will help you to develop a site that achieves great search engine rankings. Finally, you'll apply this knowledge by creating a sample e-commerce catalog and an optimized WordPress blog.

What you will learn from this book

    * Understand the criteria that influence search engine rankings
    *

      Create keyword-rich URLs using PHP, Apache, and mod_rewrite
    *

      Use HTTP Headers to properly indicate the status of web documents
    *

      Create optimized content and cope with duplicate content effectively
    *

      Avoid being the victim of black hat SEO techniques
    *

      Understand and implement geo-targeting and cloaking
    *

      Use site maps effectively—for users as well as search engines
    *

      Create a search engine–friendly WordPress blog
    *

      Build a search engine–friendly e-commerce catalog

Who this book is for

This book is for PHP developers who need to incorporate search engine optimization principles into their web applications, as well as marketers who want to gain a better understanding of the technologies involved in search engine marketing.

به ادامه مطلب بروید....



ادامه مطلب...
Subscribe
ارسال در تاريخ یکشنبه بیست و ششم آبان 1387 توسط سعيد
Sams Teach Yourself Ajax, JavaScript, and PHP All in One
 
 
 

book img

 
 
 

Book Description
In just a short time, you can learn how to use Ajax, JavaScript, and PHP to create interactive interfaces to your web applications by combining these powerful technologies.

 

No previous Ajax programming experience is required. Using a straightforward, step-by-step approach, each lesson in this book builds on the previous ones, enabling you to learn the essentials of Ajax programming with JavaScript, PHP, and related technologies from the ground up.

 

Regardless of whether you run Linux, Windows, or Mac OS X, the enclosed CD includes a complete Ajax programming starter kit that gives you all the programming tools, reference information, JavaScript libraries, and server software you need to set up a stable environment for learning, testing, and production.

 

Learn how to…

    * Build better, more interactive interfaces for your web applications
    * Make JavaScript, HTML, XML, and PHP work together to create Ajax effects
    * Compile an Ajax application
    * Create and consume web services with SOAP and REST
    * Avoid common errors and troubleshoot programs
    * Use popular Ajax libraries to speed up and improve common programming tasks

 

On the CD

    * XAMPP for Windows, Mac OS X, and Linux–an easy-to-install package to set up a PHP- and MySQL-enabled Apache server on your computer
    * The jEdit programming editor for Windows, Mac, and Linux
    * Prototype, Scriptaculous, Rico, and XOAD–popular JavaScript libraries for creating Ajax applications and effects
    * A complete Ajax, HTML, XML, and PHP tutorial reference library in searchable PDF format
    * Source code for the examples in the book

 

Phil Ballard is a software engineering consultant and developer specializing in website and intranet design and development for an international portfolio of clients. He has an honors degree from the University of Leeds, England, and has worked for several years in commercial and managerial roles in the high technology sector.

 

Michael Moncur is a freelance webmaster and author. He runs a network of websites and has written several bestselling books about web development, networking, certification programs, and databases
 
برای دانلود روی ادامه مطلب کلیک کنید  ...


ادامه مطلب...
Subscribe
ارسال در تاريخ یکشنبه بیست و ششم آبان 1387 توسط سعيد

Beginning PHP and Oracle: From Novice to Professional


 

: شرح مختصر در مورد کتاب

Book Description:

Beginning PHP and Oracle: From Novice to Professional offers comprehensive information on using the PHP scripting language in conjunction with Oracle’s database platform. PHP is one of the most prominent open source technologies in the area of web development, while Oracle is one of the most widely deployed and used database products.

You’ll learn to reap the benefits of these core technologies by using them in unison to create dynamic, data-driven web applications. The book is packed with practical examples based on the many years of real-world experience of authors W Jason Gilmore and Bob Bryla. This book is an ideal read for web designers or programmers wanting to create applications with PHP in an Oracle environment.

* The book covers a solid alternative to the “M” in the LAMP stack.
* Database examples are based on real-world scenarios.
* The text shows off Oracle’s strong enterprise features.
* The authors highlight Oracle’s robust internationalization support.
* Covers a solid alternative to the “M” in the LAMP stack
* Database examples are based on real-world scenarios
* Shows off Oracle’s strong, enterprise features
* Highlights Oracle’s robust internationalization support

ادامه مطلب بروید ....



ادامه مطلب...
Subscribe
ارسال در تاريخ یکشنبه بیست و ششم آبان 1387 توسط سعيد
Flash and PHP Bible
 
 
 

book img

 
 
 

Book Description

Quickly develop dynamic Flash applications with PHP

The demand for rich Internet applications (RIAs) such as complete storefronts and interactive surveys is skyrocketing, as is the pressure to create these dynamic apps overnight and at low cost. This in-depth Bible provides the step-by-step instructions you need to quickly create RIAs in Flash using cost-effective, open-source PHP programming tools. You'll learn how PHP works, when you should use it in Flash, and above all, vital security techniques for keeping your interactive sites secure.
*

Install, configure, and explore the basics of PHP
*

Connect Flash to PHP and PHP to MySQL
*

Create contact forms and search capabilities
*

Clean, store, and check your interactive data
*

Apply advanced security techniques
*

Develop an RSS reader or banner tracking with PHP
*

Extend Flash and PHP with third-party libraries
*

Learn best practices for backing up and updating your server
 
برای دانلود روی ادامه مطلب کلیک کنید
 


ادامه مطلب...
Subscribe
ارسال در تاريخ یکشنبه بیست و ششم آبان 1387 توسط سعيد
با این آموزش که به زبان فارسی هستش می تونید به

 راحتی php رو نصب کنید و خوشحال باشید .

 

برای دانلود مستقیم برید ادامه مطلب....

 



ادامه مطلب...
Subscribe
ارسال در تاريخ شنبه بیست و پنجم آبان 1387 توسط سعيد
ایجاد نسخه قابل چاپ در PHP

لینک دانلود مستقیم

Subscribe
ارسال در تاريخ شنبه بیست و پنجم آبان 1387 توسط سعيد
شامل ۳۰ تکنیک مفید وکاربردی برای پی اچ پی

لینک مستقیم دانلود

Subscribe
ارسال در تاريخ شنبه بیست و پنجم آبان 1387 توسط سعيد
کتاب آموزشی PHP فارسی در 8 فصل

حدود 50 صفحه
PDF
2 مگابایت
لينك مستقيم دانلود Subscribe
ارسال در تاريخ شنبه بیست و پنجم آبان 1387 توسط سعيد
یک فروشگاه ساز ساده و بدون نیاز به دیتابیس ! چون دیتابیس نداره خیلی امکانات نداره اما می ارزه ! چه قدر دنبال shop script یا cs-cart بودم اما ابن بهم حال داد به شما هم توصیه می کنم از این استفاده کنید

نام : Quick.Cart
آخرین نسخه :3.1
سایت سازنده : http://opensolution.org
پشتیبان فارسی : ندارد ( 30 دقیقه فقط وقت شما رو برای ترجمه می گیره )
امتیاز : 8/10

دانلود نسخه آخر : http://opensolution.org/download,en,...Dir=Quick.Cart

دمو : http://opensolution.org/Quick.Cart/demo/?sLang=en
Subscribe
ارسال در تاريخ جمعه بیست و چهارم آبان 1387 توسط سعيد
یک فروشگاه ساز ساده و بدون نیاز به دیتابیس ! چون دیتابیس نداره خیلی امکانات نداره اما می ارزه ! چه قدر دنبال shop script یا cs-cart بودم اما ابن بهم حال داد به شما هم توصیه می کنم از این استفاده کنید

نام : Quick.Cart
آخرین نسخه :3.1
سایت سازنده : http://opensolution.org
پشتیبان فارسی : ندارد ( 30 دقیقه فقط وقت شما رو برای ترجمه می گیره )
امتیاز : 8/10

دانلود نسخه آخر : http://opensolution.org/download,en,...Dir=Quick.Cart

دمو : http://opensolution.org/Quick.Cart/demo/?sLang=en
Subscribe
ارسال در تاريخ جمعه بیست و چهارم آبان 1387 توسط سعيد
یک اسکریپت چت فوق العاده زیبا و full ajax ( تمام ای جکس ) تو مایه های یاهو مسنجر یه ذره بهتر ! با پشتیبانی از خیلی از زبان های دنیا ( حتی فارسی )

نام : ajax_im
آخرین نسخه : 3.4
سایت سازنده : http://www.ajaxim.com
پشتیبان فارسی : بدون نیاز ! ( فقط پک فارسی رو از صفحه اول سایت سازنده دریافت کنید ! )
امتیاز : 9/10

دانلود آخرین نسخه : http://www.ajaxim.com/download/3.4_yui

آموزش نصب : فایل config-sample.php را با یک ویرایشگر ( مثلا نوت پد ) باز کرده و اطلاعات دیتابیس را در جای مشخص شده وارد کنید و با نام config.php ذخیره کنید و بعد فایل www.you.com/install.php را باز کنید و ...

دمو :http://www.ajaxim.net
یوزر : test پسورد : test
Subscribe
ارسال در تاريخ جمعه بیست و چهارم آبان 1387 توسط سعيد
ک سیستم فتوبلاگ فوق العاده جذاب و روان که کلا خیلی باحاله انشا الله به زودی خودم نسخه فارسیشو می ذارم ولی تا اون موقع انگلیسیشو می ذارم
نام :pixelpost
آخرین نسخه :1.71
سازنده : http://www.pixelpost.org
پشتیبان فارسی : ندارد (به زودی خودم ! )

لینک دانلود

Subscribe
ارسال در تاريخ جمعه بیست و چهارم آبان 1387 توسط سعيد
بخش 2
با .htaccess قلب وب‏سايت خود را تحت کنترل بگيريد (قسمت اول)
اگر از وب‏سرور آپاچي براي وب‏سايت خود استفاده مي‏کنيد، ديگر نيازي نيست براي هر مشکل جزئي و کوچک، به وب‏مستر هوستينگ‏تان تماس بگيريد. با يادگيري قابليت‏هاي مهم فايل .htaccess، مي‏توانيد کنترل کامل وب‏سايت خود را برعهده بگيريد.

فايل .htaccess يک فايل ساده اسکي (ASCII) مي‏باشد که مي‏توانيد آن را به وسيله نرم‏افزارهاي متني ساده نظير Notepad و يا SimpleText به وجود آوريد. دقت داشته باشيد که اين فايل داراي هيچ نامي نمي‏باشد و فقط داراي پسوند است که پسوند آن، htaccess مي‏باشد. براي درست کردن اين فايل مي‏توانيد فايل متني خود را که مثلا به صورت fantazio.txt مي‏باشد، تغيير نام داده و آن را به صورت .htaccess درآوريد.

تذکر: اگر از ويندوز استفاده مي‏کنيد و هنگام تغيير نام دادن فايل به .htaccess، پيغام خطايي مبني بر اينکه «مي‏بايست براي فايل خود نامي را اختيار کنيد» دريافت مي‏کنيد، فايل را بر روي سرور آپلود کرده و سپس در سرور آن را تغيير نام دهيد. اين کار به وسيله نرم‏افزارهاي اف‏تي‏پي نظير CuteFTP يا AbsoluteFTP بسيار ساده مي‏باشد.

در هنگام استفاده از فايل .htaccess، دانستن سه نکته از اهميت به‏سزايي برخوردار است:

نکته اول: فايل .htaccess را مي‏بايست به صورت ASCII آپلود کرده و مجوز دسترسي به آن را بر روي 644 (يا rw-r--r--) تنظيم نماييد.

نکته دوم: فايل .htaccess را مي‏توانيد به پوشه‏هاي مختلفي اعمال نماييد. به عنوان مثال اگر آن را بر روي root آپلود نماييد، تنظيمات آن به کل وب‏سايت اعمال خواهد شد و اگر آن را درون پوشه‏اي نظير images/ آپلود نماييد، تنظيمات آن به پوشه images و زيرپوشه‏هاي آن اعمال خواهد شد.

نکته سوم: هر htaccess را مي‏بايست درون يک خط تايپ نماييد. يعني در انتهاي هر دستور، مي‏بايست يک‏بار کليد Enter را فشار دهيد.



جلوگيري از ليست شدن محتويات يک پوشه

فرض کنيد پوشه‏اي از تصاوير داريد و نمي‏خواهيد که افراد غريبه، محتويان اين پوشه را ديده و آن‏ها را تماشا کنند. براي اين کار، سه راه وجود دارد:

1- ساخت يک صفحه index و قرار دادن آن در پوشه مورد نظر

2- استفاده از فايل .htaccess

3- استفاده از فايلهاي HEADER و README

از آنجا که بحث ما در مورد فايل .htaccess مي‏باشد، راه دوم را مورد بررسي قرار مي‏دهيم. براي اين کار مي‏بايست از فرمان IndexIgnore استفاده نماييد:

IndexIgnore *
اين کد از ليست‏شدن تمامي فايل‏هاي پوشه مورد نظر، جلوگيري مي‏کند. حال فرض کنيد که درون پوشه‏اي انواع‏واقسام فايل‏ها نظير فايل‏هاي اچ‏تي‏ام‏ال و تصاوير داريد و مي‏خواهيد که فقط از ليست شدن تصاوير جلوگيري شود. بدين‏منظور مي‏توانيد از کد زير استفاده کنيد:

IndexIgnore *.gif *.jpg
در واقع اين کد از ليست‏شدن تمامي فايل‏هايي که به .gif و .jpg ختم مي‏شوند، جلوگيري مي‏کند.

حال فرض کنيد که سرور شما، به طور پيش‏فرض، از ليست‏شدن پوشه‏ها جلوگيري کرده است و شما مي‏خواهيد آن را تغيير دهيد. براي اين کار مي‏توانيد از دستور زير استفاده کنيد:

Options +Indexes


عوض کردن صفحه پيش‏فرض وب‏سايت

به طور کلي، تمامي وب‏سرورها از روي قانون خاصي صفحات وب را نشان مي‏دهند. براي آنکه صفحات وب تنها به يک پسوند منحصربه‏فرد نظير .htm ختم نمي‏شوند و انواع‏و‏اقسام پسوند‏هاي مختلف، براي صفحات وب وجود دارد.

حال فرض کنيد که وب‏سرور شما، ابتدا فايل index.html را نشان مي‏دهد و در صورت نبود آن، فايل‏هاي index.htm، index.php و ... شما مي‏خواهيد اين روند را تغيير داده و فايل index.php را در اولويت قرار دهيد. بدين منظور مي‏بايست از دستور DirectoryIndex استفاده نماييد:

DirectoryIndex index.php index.cgi index.pl default.htm
کد بالا ابتدا به دنبال فايل index.php گشته و در صورت پيدا کردن آن، آن را به عنوان صفحه وب پيش‏فرض نمايش مي‏دهد. اگر فايل index.php پيدا نشد، سرور به دنبال فايل بعدي که index.cgi مي‏باشد گشته و همين روال، ادامه پيدا مي‏کند. دقت داشته باشيد که شما حتما مجبور به استفاده از index براي نام فايل نيستيد و از هر اسم ديگري نيز، مي‏توانيد استفاده کنيد.



Redirects

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

Redirect /olddirectory/oldfile.html http://yoursite.com/newdirectory/newfile.html
همچنين مي‏توانيد يک پوشه را به پوشه ديگر ارجاع دهيد:

Redirect /olddirectory http://yoursite.com/newdirectory/


Hot Linkin

در جامعه وب‏مسترها، عبارت Hot Linkin يک عبارت نفرت‏برانگيز است که از آن به عنوان «نقره‏داغ وب‏مسترها» نيز ياد مي‏شود. اما معناي آن چيست؟

فرض کنيد داراي يک سايت عکاسي هستيد که روزانه تعداد زيادي عکس در زمينه‏هاي مختلف را در آن آپلود مي‏کنيد و در اختيار عموم قرار مي‏دهيد. حال فرد ديگري از عکس‏هاي شما در وب‏سايت خود استفاده مي‏کند. اين کار نه تنها براي شما هيچ سودي نخواهد داشت، بلکه از پهناي باند شما (BW) خواهد کاست و در نتيجه به زحمت و هزينه خواهيد افتاد.

همچنين شما نمي‏توانيد بفهميد که چه وب‏سايت‏هايي از عکس‏هاي شما استفاده کرده‏اند تا به آن‏ها اخطار دهيد.

براي جلوگيري از چنين عملي، مي‏توانيد Hot Linkin را به وسيله mod_rewrite غير فعال کنيد:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]
يادتان نرود که mydomain.com را به آدرس وب‏سايت خود تغيير دهيد. همچنين مي‏توانيد کاري کنيد در صورت استفاده از عکس‏هاي سايت شما، به جاي نمايش آن‏ها، عکس مورد نظر شما نشان داده شود. مثلا اگر سايت A از عکس‏هاي سايت شما استفاده کرد، عکسي را نمايش دهيد که تبليغ سايت شما باشد. براي اين‏کار مي‏توانيد از کد زير استفاده کنيد:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.mydomain.com/nasty.gif [R,L]
آدرس عکس خود را در خط آخر کد تغيير دهيد.

تذکر: mod_rewrite يکي از قابليت‏هاي وحشت‏ناک به‏دردبخور آپاچي مي‏باشد که توضيح مفصل آن، احتياج به يک مقاله صدصفحه‏اي دارد.



صفحات خطا

به احتمال قوي با خطاي معروف 404 در اينترنت سروکار داشته‏ايد. خطايي که اعصاب آدم را به‏هم مي‏زند. اين خطا در صورتي ظاهر مي‏شود که صفحه مورد نظر شما (به هر دليل)، در دسترس نباشد. يعني در واقع صفحه‏اي وجود نداشته باشد و شما آن را از مرورگر بخواهيد.

وب‏سايت‏هاي حرفه‏اي و آن‏هايي که خواهان جذب مخاطب براي وب‏سايت‏هايشان هستند، اين صفحات خطا را (که هر فرد با ديدن آن‏ها سريعا دکمه close را مي‏زند) سفارشي مي‏کنند. يعني به جاي آن خطاي 404 تکراري، يک صفحه خطاي مناسب (در فرمت وب‏سايت) مي‏گذارند و به مخاطب راهنمايي‏هايي مي‏دهند.

معمولا در اين نوع صفحات خطا، بيوگرافي کوچکي از وب‏سايت و زمينه کاري آن نوشته شده و سپس مخاطب را (به وسيله لينک و يا اتوماتيک) به صفحه اصلي وب‏سايت ارجاع مي‏دهند.

براي ساخت صفحات خطا (که تعداد آنها کم هم نيست!)، و ارجاع مخاطبين درصورت برخورد به صفحات خطاي مختلف به آن‏ها، مي‏توانيد از کد زير استفاده کنيد:

ErrorDocument code /directory/filename.ext
به عنوان مثال کد زير، مخاطب را در صورت مواجه شدن با خطاي 404، به صفحه notfound.html ارجاع ميدهد:

ErrorDocument 404 /notfound.html
Subscribe
ارسال در تاريخ چهارشنبه بیست و دوم آبان 1387 توسط سعيد
بخش 1 :
htaccess چيست ؟

يك فايل بسيار ساده با محيط تكست .
چگونه ميتوان آنرا توليد كرد ؟
براي ساختن اين فايل تنها كافيست يك محيط تكست اديتور داشته باشيد . مثل notepad
اين فايل در كجا هست ؟
اين فايل در دايركتوري اصلي وبسايت شما قرار دارد و هر دايركتوري ديگري كه بخواهيد .
وظيفه اين فايل چيست ؟
تقريبا تمامي محدوديت هاي اعمالي بر آن دايركتوري را بر عهده دارد و ميتواند پيغام هاي خطا را مديريت كند و چندين وظيفه ديگر كه اگر كمي در تنظيمات آن قصور و غفلت كنيد شايد سايت شما بار گذاري نشود .
تمامي هاست ها از اين نوع گونه فايل حمايت ميكنند ؟
اين بستگي به ميزبان شما دارد اصولا از اين فايل حمايت ميكنند . اما اگر هم ميخواهيد مطمئن شويد ميتوانيد از وبمستر سرور خود بپرسيد .
قبل از شروع كار حتما يك نسخه بك آپ از فايلي كه هم اكنون در دايركتوري شما قرار دارد بگيريد بعضي وبسرور ها اين فايل را دارند اما داخلش هيچي نيست كه ديگر نيازي به پشتيبان گيري نيست .
قبل از شروع آموزش بگويم كه اين آموزش مختص صاحبان وب سايت ها هست و كاربراني كه داراي سايت اختصاصي نيستند نميتوانند استفاده چنداني از اين مطلب بكنند اما خوب براي اطلاعات عمومي بد نيست به ادامه ان بپردازيد . فكر كنم تقريبا 90% صاحبان وب اين فايل را ديده باشند و بدون هيچ شكي در مورد ان از كنار ان گذشته باشند براي همين هم احتمال ميدهم يكي از موضوعاتي كه در موردش كمتر مقاله اي پيدا ميكنيد همين مطلب باشد . به هر حال تصميم گرفته ام كمي در مورد اين فايل بظاهر بي ارزش صفر كيلوبايتي توضيحاتي بدهم .
با استفاده از اين فايل ميتوانيد پيغام هاي خطايي كه ظاهر ميشود را تغيير دهيد يا اينكه صفحه را بدون استفاده از redirector كنترل پنل redirect كنيد يا اينكه اجازه ليست گرفتن از دايركتوري خاصي از وبسايتتون رو محدود كنيد .
قبل از شروع كار مطمئن شويد كه اديتور شما خاصيت word wrap را غير فعال كرده است اگر نه خودتان آنرا غيرفعال كنيد .
فايل .htaccess در دايركتوري اصلي وبسايت شما يا سابدايركتوري شما قرار دارد دستوراتي كه در اين فايل قرار ميگيرد نه تنها دايركتوري جاري را تحت تاثير خود قرار ميدهد بلكه كليه زيردايركتوري هاي خود را نيز در بر ميگيرد . بنابراين اگر از اين فايل برروي دايركتوري اصلي خودتان استفاده كنيد تمامي سايت را در برميگيرد . در ضمن ميتوانيد اين فايل را در هر دايركتوري كه خواستيد نيز ايجاد كنيد تا محدوده كنترل در دست خودتان باشد . اگر با CSS كار كرده باشيد كار كردن با اين فايل هم تقريبا مشابه همان است و براي افرادي كه با ان اشنايي دارند اسانتر است به هر حال هر فايلي كه در دايركتوري ويژه اي قرار دارد به نزديكترين فايل htaccess خود مرتبط ميشود و ان htaccess ان فايل را كنترل ميكند .
براي ساختن اين فايل هيچ نيازي به نرم افزار يا سخت افزار ويژه اي نداريد تنها به يك notepad يا هر پردازنده متني ديگري نيازمنديد .
براي ساختن اين فايل كه نامي ندارد و فقط هشت حرف براي نوع فرمت ان در نظر گرفته شده است “.htaccess”
وقتي ميخواهيد اين فايل را در پردازنده متني خود ذخيره كنيد نام فايل به اين صورت ذخيره ميشود . .htaccess.txt براي اينكه چنين اتفاقي نيفتد كافيست از منوي file گزينه save as… را انتخاب كنيد در file type گزينه all files را انتخاب كنيد و سپس در file name تايپ كنيد “.htaccess” دات اچ تي اكسس را درون دو كوتيشن بگذاريد اگر نتوانستيد اين كار را بكنيد بعدا ميتوانيد از طريق كنترل پنل يا نرم افزار ftp خود نام فايل را عوض كنيد . در مورد استفاده از نرم افزار هاي ftp بگويم كه همانطور كه ميدانيد اينگونه نرم افزار ها براي اسودگي اتصال به وبسرورتان ميباشد كه فايل ها را در سه نوع upload ميكند كه سه گزينه Auto , binary, ASCII وقتي اين فايل را با ftp اپلود ميكنيد يادتان باشد نرم افزار شما در حالت ASCII باشد .
در ضمن يك مطلب ديگر هم در اين مورد كه بايد CHMOD كه مخفف Change MODe ميباشد را براي اين فايل عوض كنيد پرميشن اين فايل بايد 644 باشد يا RW-R—R—
كه اين عمل هم براي افزايش امنيت ميباشد كه خوشبختانه همگي اشنايي با ان را داريد اما شايد بعدا بيشتر در مورد permission ها توضيح دادم .
اين فايل به شما اجازه ميدهد كه شما كاربران و ويزيتور هاي خودتان را از صفحه اي به صفحه ديگر منتقل كنيد حتما شده است كه بخواهيد اين كاررا انجام دهيد مثلا در مورد خود من شما از parsx.com به weblog.parsx.com ميرويد البته من از اين روش استفاده نكرده ام اما دلايل ديگري نيز ميتواند عامل شود كه شما از اين ريدايركت استفاده كنيد شايد كاربر شما اشتباها ادرس صفحه اي از وبسايت شما را وارد كند يا اينكه شايد لينكي در وبسايت شما بنا به دليلي شكسته شده باشد و از بين رفته باشد و ان صفحه پاك شده باشد به جاي اينكه كاربر شما هيچ چيزي نبيند ميتوانيد انرا به صفحه اصلي سايت بسته به سليقه خودتان منتقلش كنيد .
براي مثال فرض كنيد كاربري با يك پيغام خطا مواجه شد براي آنكه او را به صفحه ديگري منتقل كنيد بايد به اين صورت در فايل بنويسيد :
ErrorDocument errornumber /filename.html

به جاي errornumber شماره خطا را مينويسيد اصولا خطاي 404 زياد اتفاق ميفتد بنابراين ميتوانيد شماره 404 را بنويسيد .
اگر خواستيد تمامي طيغام خطاها را به فولدر خاصي ببريد به اينصورت عمل كنيد :
ErrorDocument 404 /errorpages/notfound.html

در مورد شماره پيغام خطاها هم كمي بگويم :
400اين پيغام اصولا زماني ظاهر ميشود كه كاربر ادرس اشتباهي رفته باشد
401وقتي كاربر به دايركتوري و يا جايي ميرود كه اجازه ورود به انرا ندارد
403وقتي فايل طوري تنظيم شده است كه كاربر اجازه دسترسي به ان را ندارد
404 not found

500internal server error اشكال عموما از اسكريپت هاي داخليست .
باز هم پيغام خطا داريم كه زياد به درد نميخورد .
كاربرد ديگر اين فايل استفاده از رمز عبور است كه البته پيكر بندي ان كمي سخت تر از تنظيمات پيام هاي خطاست .
ابتدا فايلي به اين نام ايجاد كنيد .htpasswd اين فايل هم خصوصياتي چون فايل .htaccess دارد اين فايل حاوي نام هاي كاربري و كلمه هاي عبور . كه بصورت زير انها را تعيين ميكنيد در اين فايل
Username:password
Username:password
Username:password

حواستان باشد كه هر كدام در يك خط باشند و همچنين اشتباها فضاي space در اخر خط ها وارد نكنيد . در ضمن براي نام هاي كاربري كه مشكلي پيش نمي ايد اما براي كلمه هاي عبور براي افزايش امنيت بايد از نرم افزارهايي كه انها را تبديل ميكنند استفاده كنيد . كه بعدا كمي در اين مورد توضيح خواهم داد .
يادتان باشد كه اين فايل را در فولدر هاي بالايي www يا public_html بگذاريد يعني در فولدر main .
حال براي انكه مشخص كنيد كدام بخش از سايت يا كدام دايركتوري شامل رمز عبور بشوند بايد به اين صورت عمل كنيد در فايل htaccess خطوط زير را اضافه

كنيد



AuthUserFile /home/pathto/.htpasswd
AuthType Basic
AuthName "Secret Place"


require valid-user





دستورات فوق باعث ميشوند كه در صورت نادرستي و عدم تطابق كلمه عبور با انچه كه در فايل مربوطه ثبت شده از ورود كاربر جلوگيري كند . بنابراين اگر كاربري خواست وارد دايركتوري شود كه بدينوسيله محافظت ميشد يك منوي پاپ آپ ظاهر ميشود كه نام كاربري و رمز عبور را ميطلبد .
اگر خواستيد در يك فولدر تنها از يك فايل محافظت كنيد و عمليات پسورد گذاري تنها برروي يك فايل انجام شود دستورات زير را در فايل وارد كنيد .



AuthUserFile /home/pathto/.htpasswd
AuthType Basic
AuthName "Secret Place"
require valid-user




براي محافظت از خود فايل .htaccess نيز ميتوانيد خط زير را وارد كنيد :



order allow,deny
deny from all




اگر هاست شما از اين فايل پشتيباني ميكند اما از SSI پشتيباني نميكند كافيست خطوط زير را وارد كنيد تا از SSI هم پشتيباني شود .
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexed FollowSymLinks Includes

خط اول بيان ميكند كه كليه فايل ها با پسوند shtml دارا صحت هستند خط دوم يك handler اضافه ميكند خط سوم باعث ميشود سرور اين فايل ها را اجرا كند .
بنابراين شما خودتان بدون نياز به درخواست از ادمين سرور توانستيد SSI را فعال كنيد .
اگر هم دوست داريد فايل هاي SSI بصورت جداگانه از فايل هاي html نباشند ميتوانيد خطوط زير را اضافه كنيد :
AddType text/html .shtml .html . htm
AddHandler server-prased .shtml .html .htm
Options Indexes FollowSymLinks Includes

اين خطوط باعث ميشوند كه كليه فايل ها با پسوند html نيز به سرور براي اجرا شدن منتقل شوند تا اگر كدي كه براي SSI باشد داشته باشد را اجرا كند و سپس صفحه شروع به بارگذاري كند .
قطع دسترسي از طريق IP
با اين روش شما ميتوانيد بازه خاصي از آدرس IP يا IP خاصي از فرد خاصي را اضافه كنيد تا ان فرد صاحب IP نتواند وارد صفحه خاص يا كل وبسايت شود . البته در كنترل پنل ها اصولا اين گزينه به صورت گرافيكي هست اما توجه كنيد كه اگر در انجا به اين كار اقدام كنيد فرد مورد نظر از كل سايت محروم خواهد شد اما با استفاده از اين عمل ميتوانيد IP خاصي را از صفحه خاصي محروم كنيد . مثلا فرض كنيد ادرس گوگل بت رو بگذاريم تا نتواند وارد صفحه خاصي شود .
بنابراين خطوط زير را اضافه كنيد :
Order allow,deny
Deny from ipaddress
Allow from all

به جاي ipaddress ميتوانيد ادرس ايپي را بنويسيد مثل : 172.16.204.100
خط اول ميگويد كه شما ميخواهيد چكار كنيد و خط دوم ميگويد كه ادرس مشخص شده را ممنوع كند . البته ميدانيد كه هر فرد با هر قطع ارتباط از اينترنت مخصوصا سرويس هاي تلفني بعد از هر بار اتصال ادرس ايپي انها عوض ميشود يعني 3 رقم اخر كه براي اينكه كل 256 ادرس را ممنوع كنيد كافيست ارقام اخري را ننويسيد .
خط اخر هم به ديگران اجازه ميدهد كه وارد سايت شوند . در ضمن شما ميتوانيد نام دامنه را نيز ممنوع كنيد به اين صورت كه به جاي ادرس اي پي بنويسيد : .parsx.com
وقتي كاربر سعي در ورود به صقحه ويژه كه ممنوع شده است را دارد پيغام خطاي 403 را ميبيند . اگر ميخواهيد مثلا دايركتوري خاصي را از دسترسي همه ممنوع كنيد اما اسكريپت ها و ديگر اجزايي كه به فايل نياز دارند بتوانند به ان دسترسي پيدا كنند كافيست خط deny from all را اضافه كنيد .
عوض كردن ايندكس فولدري خاص
اكثر ميزبانهاي وب فايلي كه وظيفه لود شدن در هنگام باز كردن دايركتوري خاصي را دارد با نام index قرار ميدهند كه با استفاده از htaccess ميتوانيد انرا عوض كنيد . خط زير را به فايل اضافه كنيد :
DirectoryIndex filename.html

حتما ديده ايد كه اگر فايل index.html در دايركتوري نبود سرور فايل ديگري مثلا index.php را اجرا ميكند روش به اينصورت است كه در دستور فوق بعد از filename.html با يك فضاي خالي نام هاي ديگر را وارد ميكنيد . بنابراين سرور در دايركتوري ويژه ابتدا به دنبال فايل اولي و سپي به دنبال فايل دومي و به همين ترتيب جستجو ميكند . اگر هم هيچ يك از فايل ها پيدا نشد پيغام خطاي 404 ظاهر ميشود .
Redirect توسط htaccess
حتما ميدانيد كه راههاي زيادي براي ريدايركت كردن فايلي خاص به فايل ديگر وجود دارد اما بهترين كار همين است كه ميگويم
در فايل خط زير را وارد كنيد :
Redirect /OldDir/OldFile.html http://www.domainname.com/newdir

بنابراين دستور به شرح زير است
Redirect oldlocation newlocation

منتهي يادتان باشد كه newlocation بايد نام ادرس كامل سايت باشد .
مخفي كردن محتويات دايركتوري
شايد درون فولدرتان فايلي نداشته باشيد كه لود شود بنابراين ليست تمامي فايلهاي فولدر شما نمايان ميشود كه اين اصولا از لحاظ امنيتي هم مناسب نيست و اگر يادتان باشد در مطلبي كه در مورد ساخت سايت در ويندوز 2003 دادم گزينه اي داشتيم براي اينكه اين فايلها ليست نشوند همچنين در كنترل پنل هم چنين گزينه اي داريم اما خوب ان هم به صورت كلي در سايت ظاهر ميشود . به هر حال ميتوانيد خط زير را وارد كنيد :
Options -Indexes

يا خط زير را وارد كنيد
IndexIgnore *

اما عكس اين عمل نيز ميتواند اتفاق بيفتد يعني به صورت پيشفرض در سرور تنظيم شده است كه فايلها ليست نشودند اما شما ميتوانيد اين گزينه را با خط زير غيزفعال كنيد :
Options +Indexes

اگر هم ميخواهيد فايلها ليست شوند اما گروه خاصي از انها مثلا عكس ها ليست نشوند به صورت زير عمل كنيد :
IndexIgnore *.gif *.jpg

بعضي سرور ها بعضي از فايلها را نميشناسند با استفاده از اين فايل ميتوانيد خط زير را وارد كنيد تا انها را بشناسد مثلا براي فايل هاي فلش ميتوانيد دستور زير را وارد كنيد
AddType application/x-shockwave-flash swf

Addtype به فايل اعلان ميكند كه بايد نام فايلي جديد اعلان شود
ايجاد ممانعت از لينك دادن ديگران به فايلهاي شما
در مباحث پيشين در مورد پهناي باند صحبت كرده ام و ميدانيد كه هر فايلي كه از سرور سايت شما بارگذاري ميشود در پهناي باند شما موثر است حال فرض كنيد شما فايلي مثلا عكسي يا موسيقي براي دانلود در سايت گذاشته ايد ! خوب بالطبع شما با استفاده از فرمول و محاسباتي كه در ذهن خود انجام داده ايد و نسبت به تعداد كاربرانتان سنجيده ايد كه با پهناي باندتان مطابقت داشته باشد اما كافيست سايت هاي ديگري از فايل شما مثلا يك عكس شما استفاده كنند و عكس شما را در سايت خود قرار دهند و ادرس عكس ادرس همان عكسي باشد كه در سايت شما قرار دارد بنابراين از پهناي باند شما براي بار گذاري عكس استفاده ميشود فلذا انروزي كه پهناي باند شما از حد خود ميگذرد شما بايد هزينه كنيد كه باز هم پهناي باند بخريد در صورتي كه ميتوانيد با استفاده از اين فايل از انجام چنين كاري ممانعت كنيد !منتهي قبلش بايد توجه داشته باشيد كه ايا هاست سرور شما از mod_rewrite پشتيباني ميكند يا خير ؟!
اگر نميكند اين گزينه براي شما فايده اي نخواهد داشت و نميتوانيد با اين كار مبادرت ورزيد .
به فولدري كه ان فايل يا مجموعه عكس هاي شما قرار دارد برويد و در فايل .htaccess ان دايركتوري خطوط زير را اضافه كنيد


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]



به جاي mydomain.com نام دامنه خودتان را بنويسيد مثلا parsx.com دستور فوق باعث ميشود فايلهاي با پسوند gif jpg نتوانند در سايت هاي ديگر نمايش داده شوند اما شما ميتوانيد كار ديگري نيز بكنيد مثلا بگذاريد ديگران از عكس هاي شما استفاده كنند و سپس طي يك حركت ناجوانمردانه فايل htaccess را گونه اي تعويض كنيد كه تمامي عكس ها و فايل ها با عكس ديگري نمايش داده شوند مثلا عكسي بگذاريد كه ادرس سايت خودتان را بگذاريد . مثلا freeservers چنين كاري كرده است . اگر به عكس سايت هايش لينك دهيد نام سايت خودش نمايش داده ميشود .


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.mydomain.com/badimage.gif [R,L]


به جاي mydomain نام دامنه خودتان و ادرس عكس خودتان رابه جاي ادرس فوق بگذاريد .
اين بود تمامي ماجراي htaccess Subscribe
ارسال در تاريخ چهارشنبه بیست و دوم آبان 1387 توسط سعيد
کتاب آموزشي PHP‌ در 24 ساعت به زبان انگليسي

لينك مستقيم دانلود

Subscribe
ارسال در تاريخ پنجشنبه شانزدهم آبان 1387 توسط سعيد
ویندوز چیست (از نگاه برنامه نویسی و توابع API):

ویندوز یک سیستم عامل چند وظیفه ای و چند کاربره گرافیکی برای کامپیوتر های شخصی است.
در زمان سیستم عامل Dos کاربران درون یک محیط متنی ساده ، تک کاربره و تک وظیفه ای کارهای خود را انجام می دادند . اما در اواسط دهه 1980 میلادی نیازهای جدیدی پیدا شد از قبیل امکان اجرای چند برنامه همزمان ، امکان دسترسی چند کاربر ، رابط کاربری زیباتر ، مدیریت کامل بر منابع و غیره. اینگونه بود که سیستم عامل Windows متولد شد.
سیستم عامل Windows به تمام نیازهای فوق پاسخ داد اما محدودیت هایی نیز بوجود آورد مخصوصا برای برنامه نویسان سیستمی.
در محیط Dos شما مجاز به استفاده از تمام قسمت های حافظه بودید. اما در Windows چنین چیزی نیست زیرا نمی توان به بخشهایی از حافظه که متعلق به برنامه دیگری است دسترسی داشت حتی نمی توان آنها را خواند. و یا استفاده از فضای حافظه مجازی تحت نظر سیستم فایل است که اجازه هیچ گونه دسترسی مستقیم به Hard Disk را به ما نمی دهد. مورد بسیار مهم دیگر این است که در Dos برنامه نویس می بایست خودش با Port ها ارتباط برقرار کند اما در Windows چنین اجازه ای ندارد. و موارد بسیار زیاد دیگر(مخصوصا در ارتباط با سخت افزار).
اما اینها هیچ کدام ضعف نیست بلکه نشان دهنده قدرت Windows است که اجازه نمی دهد برنامه ها در کارهای یکدیگر دخالت کنند . با وجود این دست برنامه نویس هم برای انجام کارهای مورد نیاز بسته نیست بلکه همان ویندوزی که تمام کارها را بدست می گیرد همان نیز امکاناتی را به برنامه نویس می دهد تا بتواند برنامه سیستمی بنویسد . این امکانات API (Application Programming Interface)نامیده می شوند . در واقع API یکسری توابع استاندارد است که شرکت Microsoft داخل یکسری فایل DLL برای برنامه نویسی سیستمی قرار داده است و بیش از 1000 تابع و رویه (Procedure) می باشد.
API را اصطلاحا قلب ویندوز می نامند ، هر کاری که در این سیستم عامل انجام می شود API است یعنی خود این سیستم عامل هم برای بسیاری از اعمال خویش نیز از آن استفاده می کند. زبانهای برنامه نویسی که تحت Windows کار می کنند (مثل Delphi) از API استفاده می نمایند . مثلا اگر یک متغیر تعریف کنید یک API بصورت خودکار اجرا شده و مقدار حافظه مورد نیاز را به برنامه شما اختصاص می دهد.
پس به زبانی می توان ادعا کرد که Windows مجموعه ای از توابع API است و می توان گفت که نه تنها این سیستم عامل ما را محدود نکرده است بلکه کار ما را ساده نموده است. مثلا اگر در Dos مجبور بودیم برای Save یک فایل ، کلی برنامه نویسی کنیم وهمه چیز را در نظر بگیریم که مثلا مبادا اطلاعاتمان روی اطلاعات دیگری Overwrite شود ، در Windows کافی است یک API را فراخوانی کنید و به همین سادگی Window تمام کارهای مربوطه را انجام می دهد.
امروز برای نمونه دو سه تا از API های ساده و کارآمد را معرفی می کنیم. البته قبل از آن این مطلب را بگویم که Delphi استفاده از توابع API را ساده کرده است و ما حداکثر با Use کردن یک فایل از آنها استفاده می کنیم.

1- رویه ( Procedure ) Sleep:
با استفاده از این رویه در اجرای برنامه می توان وقفه ای ایجاد کرد.
شکل کلی این رویه به صورت زیر است.
كد:
Procedure Sleep(dwMilliseconds:DWord);

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

مثال:کد زیر مقدار Progress یک ProgressBar را از 0 تا 100 درصد در طول 10 ثانیه زیاد می کند.
كد:
var
i:Byte;
begin
  i:=0;
  while i<100 do
    begin
        i:=i+10;
        ProgressBar1.Position:=i;
        Sleep(1000);
    end;
end;

2- تابع CopyFile:
یک فایل را از محلی به محلی دیگر کپی می کند.
شکل کلی این تابع به صورت زیر است.
كد:
Function CopyFile (lpExistingFilename, lpNewFilename:PChar, bFailIfExists:BOOL):BOOL;


پارامتر lpExistingFilename یک String(در حقیقت PChar که نوعی رشته است) است که مسیر و نام فایل مبدا را مشخص می کند.
پارامتر lpNewFilename یک String(در حقیقت PChar که نوعی رشته است) است که مسیر و نام فایل مقصد را مشخص می کند. دقت کنید که نام فایل مقصد نیز باید قید شود و معمولا برابر با نام فایل مبدا گرفته می شود.
پارامتر bFailIfExists یک مقدار منطقی(Boolean) است که اگر فایل در مقصد وجود داشت چه کاری انجام شود. اگر True بود و فایل مقصد قبلا موجود باشد کار تابع نیمه تمام می ماند و اگر False باشد روی فایل اول Overwrite می گردد.
خروجی تابع منطقی است و اگر کارش به درستی انجام شود، True و در غیر این صورت False است.
مثال:خط زیر یک فایل را از درایو C داخل درایو D کپی می کند و اگر فایل در مقصد وجود داشته باشد آنرا Overwrite می کند.
كد:
CopyFile('C:\Chortke.jpg','D:\Chortke.jpg',False);


3- تابع GetDriveType :
این تابع نوع هر یک از درایوهای سیستم را مشخص می کند انواعی از قبیل فلاپی ، دیسک سخت ، CDROM و غیره.
شکل کلی این تابع به صورت زیر است.
كد:
Function GetDriveType(lpRootPathName:PChar): LongWord;
پارامتر lpRootPathName یک رشته است و نام درایو مورد نظر را مشخص می کند مثل "C:\".

خروجی این تابع یک عدد است که می تواند مقادیر زیر باشد.
DRIVE_UNKNOWN: درایوی که معرفی شده است قابل دسترسی نمی باشد. برابر با عدد 0 می باشد.
DRIVE_NO_ROOT_DIR: درایوی که معرفی شده است وجود ندارد. برابر با عدد 1 می باشد.
DRIVE_REMOVABLE: برابر با مقدار عددی 2 می باشد و مشخص می کند که دیسک درایو مورد نظر از نوع قابل حمل می باشد.
DRIVE_FIXED: برابر با مقدار عددی 3 می باشد ومشخص می کند که درایو مورد نظر از نوع ثابت است.
DRIVE_REMOTE: برابر با مقدار عددی 4 می باشد و مشخص می کند که درایو مورد نظر از نوع درایوشبکه می باشد.
DRIVE_CDROM: برابر با مقدار عددی 5 می باشد و مشخص می کند که درایو مورد نظر از نوع CD_Drive می باشد.
DRIVE_RAMDISK: برابر با مقدار عددی 6 بوده و مشخص می کند درایو مورد نظر از نوع درایو های ساخته شده در RAM می باشد.

مثال: خط زیر مشخص کننده نوع درایو C می باشد.
كد:
if GetDriveType('C:\') = DRIVE_FIXED then
 ShowMessage ('It is a hard drive Partition');


یک مثال با سه تابع فوق ساخته ام که می توانید بوسیله لینک زیر آنرا همراه Source Code اش DownLoad کنید.


دانلود سورس کد
Subscribe
ارسال در تاريخ چهارشنبه هشتم آبان 1387 توسط سعيد
سلام دوستان،
چند تا از دوستان خواسته بودن در مورد طرض کار و استفاده از کلاس Template توضیحاتی بدم. که البته توی این پست فقط در مورد طرض استفادش توضیح می دم.

اول کد کلاس رو ببینید:
اين کلاس رو از يه Counter آلماني کپي زدم.


ادامه مطلب...
Subscribe
ارسال در تاريخ چهارشنبه هشتم آبان 1387 توسط سعيد
سلام بچه ها

اين هم يه آموزش كامل براي اونايي كه دوست دارن Ajax ياد بگيرن ولي
كسي نيست كه بگه . من توصيه مي كنم اين رو حتما داشته باشين.

موفق باشيد.


http://forum.unicomp.ir/download/file.php?id=86

 

Subscribe
ارسال در تاريخ سه شنبه هفتم آبان 1387 توسط سعيد
سلام اين هم براي كسايي كه مي خوان كل دستوراي php رو با

توضيحاتش يه جا داشته باشن.

http://ir.php.net/get/php_manual_chm.zip/from/this/mirror

موفق باشيد.

Subscribe
ارسال در تاريخ سه شنبه هفتم آبان 1387 توسط سعيد
ويديو هاي آموزشي PHP
با سلام

انجمن علمي دانشگاه شيخ بهايي اخيرا اقدام به برگزاري دوره PHP كرده كه آموزش هاي اين دوره در كليپ هايي به صورت موضوعي در سايت انجمن در درسترس علاقمندان قرار گرفته .

مدرس دوره : مهندس مهرداد كيانيان

رمز فايل فشرده شده : http://www.itce.ir

ليست كليپ ها :

كليپ شماره 1
آشنايي با Dreamweaver - بخش اول
Clip : Introduction to Dreamweaver - 1
مدت زمان كليپ : 9 دقيقه و 15 ثانيه
آدرس : http://www.itce.ir/main/downloads-1.html

كليپ شماره 2
آشنايي با Dreamweaver - بخش دوم
Clip : Introduction to Dreamweaver - 2
مدت زمان كليپ : 5 دقيقه و 51 ثانيه
آدرس : http://www.itce.ir/main/downloads-2.html

كليپ شماره 3
آشنايي با Web Form - بخش اول
آدرس : Clip : Introduction to Web Forms - 1
مدت زمان كليپ : 11 دقيقه و 50 ثانيه
آدرس : http://www.itce.ir/main/downloads-4.html

كليپ شماره 4
آشنايي با Web Form - بخش دوم
Clip : Introduction to Web Forms - 2
مدت زمان كليپ : 20 دقيقه و 45 ثانيه
آدرس : http://www.itce.ir/main/downloads-5.html

كليپ شماره 5
آشنايي با Web Form - بخش سوم
Clip : Introduction to Web Forms - 3
مدت زمان كليپ : 11 دقيقه و 28 ثانيه
آدرس : http://www.itce.ir/main/downloads-6.html

كليپ شماره 6
آشنايي با Web Form - بخش چهارم
Clip : Introduction to Web Forms - 4
مدت زمان كليپ : 11 دقيقه و 18 ثانيه
آدرس : http://www.itce.ir/main/downloads-7.html

كليپ شماره 7
آشنايي با Web Form - بخش پنجم
Clip : Introduction to Web Forms - 5
مدت زمان كليپ : 6 دقيقه و 30 ثانيه
آدرس : http://www.itce.ir/main/downloads-8.html

كليپ شماره 8
آموزش CSS - بخش اول
Clip : Learning CSS - Method 1
مدت زمان كليپ : 9 دقيقه و 27 ثانيه
آدرس : http://www.itce.ir/main/downloads-12.html

كليپ شماره 9
آموزش CSS - بخش دوم
Clip : Learning CSS - Method 23
مدت زمان كليپ : 7 دقيقه و 22 ثانيه
آدرس : http://www.itce.ir/main/downloads-13.html

كليپ شماره 10
آموزش CSS - بخش سوم (مثال)
Learning CSS - Samples
مدت زمان كليپ : 3 دقيقه و 34 ثانيه
آدرس : http://www.itce.ir/main/downloads-14.html

كليپ شماره 11
آشنايي با Cookie
Introduction to Cookie
مدت زمان كليپ : 14 دقيقه و 13 ثانيه
http://www.itce.ir/main/downloads-15.html

كليپ شماره 12
ساخت تايمر با جاوااسكريپت
Clip : Make Timer With JavaScript
مدت زمان كليپ : 6 دقيقه و 34 ثانيه
http://www.itce.ir/main/downloads-16.html

كليپ شماره 13
كار با فايل‌ - خواندن از فايل
Clip : PHP Files ( Read )
مدت زمان كليپ : 11 دقيقه و 39 ثانيه
http://www.itce.ir/main/downloads-10.html

كليپ شماره 14
كار با فايل‌ - نوشتن در فايل‌
Clip : PHP Files (Write)
مدت زمان كليپ : 11 دقيقه و 15 ثانيه
http://www.itce.ir/main/downloads-11.html

كليپ شماره 15
كار با فايل - بخش سوم
Clip : PHP Files - 3
مدت زمان كليپ : 17 دقيقه و 6 ثانيه
http://www.itce.ir/main/downloads-17.html

كليپ شماره 16
كار با فايل - بخش چهارم
Clip : PHP Files - 4
مدت زمان كليپ : 3 دقيقه و 45 ثانيه
http://www.itce.ir/main/downloads-18.html

كليپ شماره 17
كار با فايل در PHP 4
Clip : PHP 4 Files
مدت زمان كليپ : 11 دقيقه و 14 ثانيه
http://www.itce.ir/main/downloads-19.html

كليپ شماره 18
آپلود فايل
Clip : PHP File Upload
مدت زمان كليپ : 8 دقيقه و 17 ثانيه
http://www.itce.ir/main/downloads-20.html

كليپ شماره 19
كار با پايگاه داده MySQL - بخش اول
Clip : PHP & MySQL Database - 1
مدت زمان كليپ : 13 دقيقه و 2 ثانيه
http://www.itce.ir/main/downloads-21.html

كليپ شماره 20
كار با پايگاه داده MySQL - بخش دوم
Clip : PHP & MySQL Database - 2
مدت زمان كليپ : 9 دقيقه و 2 ثانيه
http://www.itce.ir/main/downloads-9.html

كليپ شماره 21
آموزش AJAX در PHP
Clip : Introduction to AJAX
مدت زمان كليپ : 18 دقيقه و 57 ثانيه
http://www.itce.ir/main/downloads-23.html

كليپ شماره 22
اضافه كردن يك سطر به ليست با AJAX - بخش اول
Clip : َAJAX Add Row - 1
مدت زمان كليپ : 10 دقيقه و 8 ثانيه
http://www.itce.ir/main/downloads-24.html

كليپ شماره 23
اضافه كردن يك سطر به ليست با AJAX - بخش دوم
Clip : َAJAX Add Row - 2
مدت زمان كليپ : 10 دقيقه و 8 ثانيه
http://www.itce.ir/main/downloads-25.html

كليپ شماره 24
حذف يك سطر از ليست با AJAX - بخش اول
Clip : AJAX Delete Row - 1
مدت زمان كليپ : 11 دقيقه و 18 ثانيه
http://www.itce.ir/main/downloads-26.html


كليپ شماره 25
حذف يك سطر از ليست با AJAX - بخش دوم
Clip : AJAX Delete Row - 1
مدت زمان كليپ : 13 دقيقه و 38 ثانيه
http://www.itce.ir/main/downloads-27.html

كليپ شماره 26
حذف يك سطر از ليست با AJAX - بخش سوم
Clip : AJAX Delete Row - 1
مدت زمان كليپ : 6 دقيقه و 1 ثانيه
http://www.itce.ir/main/downloads-28.html

با تشكر

موفق باشيد.

Subscribe
ارسال در تاريخ سه شنبه هفتم آبان 1387 توسط سعيد
روش نصب PHP بروى windows 95/98/Me NT/2000/XP
روش نصب PHP بروى windows 95/98/Me NT/2000/XP
PHP بر روى win32 بدو صورت نصب مىشود

1 - بصورت CGI executable
2 - بصورت server module SAPI

1 - نصب PHP بصورت CGI executable :
نصب PHP بصورت CGI executable بسيار ساده مىباشد براى اين كار شما بايد بر روى PC خود يكى از web server هاى زير را داشته باشيد

Personal Web Server 3 and 4 or newer
Internet Information Server 3 and 4 or newer
Apache 1.3.x
OmniHTTPd 2.0b1 and up
Oreilly Website Pro
Xitami
Netscape Enterprise Server, iPlanet
در سايت http://www.php.net شما مىتوانيد php Installer را بر روى PC خود ذخيره كنيد
اين برنامه php را بر روى PC شما بصورت CGI executable و با پشتيبانى MySQL نصب خواهد كرد و web Server شما را بصورت automatic تنظيم خواهد كرد
--------------------------------------------------------------------------------
2 - نصب PHP بر روى win32 بصورت server module SAPI :

نصب PHP بصورت server module SAPI بر روى Apache توسط دوست عزيزمان آقاى على نادرى در قسمت مقالات بطور كامل توضيح داده شده است
و اما نصب PHP بر روى IIS :
جهت اين كار ابتدا بايد PHP را از اين آدرس Windows Binaries بر روى PC خود ذخيره كنيد
محتويات اين فايل كه بصورت zip است را در شاخه‌اى كه مىخواهيد php را نصب كنيد قرار دهيد c:\php خوب است
پس از اين كار فايل‌هاى php4ts.dll و sapi/php4isapi.dll و dlls/*.dll را در شاخه system ذخيره كنيد

c:\windows\system for Windows 9x/ME
c:\winnt\system32 for Windows NT/2000
c:\windows\system32 for Windows XP
فايل php.ini-recommended را به php.ini تغيير نام داده و در شاخه WINDOWS ذخيره كنيد
در فايل php.ini تغييرات زير را ايجاد كنيد:
شما بايد extension_dir را به شاخه extension هاى مورد نظر خود تغيير دهيد چنانچه مطابق با توضيحات پيش رفته باشيد اين مسير c:\php\extensions مىباشد
فايل browscap.ini را در

c:\windows\system\inetsrv\browscap.ini on Windows 9x/Me,
c:\winnt\system32\inetsrv\browscap.ini on NT/2000,
c:\windows\system32\inetsrv\browscap.ini on XP.
جنانجه پس از نصب PHP فايلهاى شما در شناختن variable ها مشكل داشتيد در فايل php.ini پارامتر register_globals را از off به on تغيير دهيد
سپس در IIS در قسمت

Home Directory > configuration > App Mappings :

Executable : C:\WINNT\system\php4isapi.dll
Extension : .php
را اضافه كنيد در قسمت ISAPI نيز

Filter Name : php
Executable : C:\WINNT\system\php4isapi.dll


پس از يك بار stop / start كردن IIS شما مىتوانيد PHP را بر روى PC خود اجرا كنيد
موفق باشيد. :P :P :P
Subscribe
ارسال در تاريخ سه شنبه هفتم آبان 1387 توسط سعيد
سلام دوستان، 
این مقاله در زمینه SQL Injection (تزریق SQL یا Query) هستش ...

همون طور که می دونید Query یک واسطه بین برنامه و DataBase هست ...
و همچنین می دونید که برای داشتن برنامه های Dynamic باید Query ها را با توجه به ورودی (های) کاربر تغییر بدیم ...

فرض کنید ما یه فرم Login داریم و برای ورود کاربر از قطعه کد زیر استفاده می کنیم:

كد:

$Username = $_POST['Username'];
$Password = $_POST['Password'];

$SQL = "SELECT * FROM `users` WHERE `u_name` = '$Username' AND `u_pass` = '$Password'";
$Rslt = mysql_query( $SQL);

if( mysql_num_rows( $Rslt) > 0)
{
   print('welcome to your profile...');

} else {

   die('The specified username and/or password is invalid!');

}

?>


خوب مشاهده می کنید که به ظاهر همه چیز مرتبه و کاربر با وارد کردن user و pass خودش می تونه Login کنه و اگه اشتباه بود نمی تونه...

خوب یه کاربر شیطون اول می آد یه username که Single Quotation توش هست مثل jo'hn رو امتحان می کنه تا ببینه که میتونه از این روش استفاده ببره یا نه ... خوب بعد از فهمیدن ورودی ها رو به این شکل وارد می کنه:
كد:
username: a
password: ' or '1'='1


خوب ببینیم SQL ما به چه شکل در می آد:

كد:
SELECT * FROM `users` WHERE `u_name` = 'a' AND `u_pass` = '' or '1'='1'


خوب نتیجه Query رو خودتون می دونید دیگه اگه حداقل یک کاربر عضو سایت باشه به راحتی می تونیم Login کنیم.

حالا به فرض این که هکر username رو می دونه

كد:
username: admin'--
password: 123


خوب SQL:
كد:
SELECT * FROM `users` WHERE `u_name` = 'admin'--' AND `u_pass` = '123'


همون طور که می دونید در MySQL -- علامت Comment هست
البته علامت های دیگری مثل /* ... */ و # هم در Mysql هستند...
یعنی در واقع Query ما به این شکل در می آد:

كد:
SELECT * FROM `users` WHERE `u_name` = 'admin'


خوب این هم که بدیهیه و Login با موفقیت انجام می شه.
البته همه چیز به یک Login ختم نمی شه بلکه هکر می تونه کل اطلاعات مربوط به ساختار و داده های DataBase ما رو در بیاره ... به این شکل:
البته به این شکلی که نوشته شده MySQL خطا نمی ده ولی SQL server و ... خطا می دن

كد:
username: ' having 1=1--
password: 123


کد SQL :
كد:
SELECT * FROM `users` WHERE `u_name` = '' having 1=1--' AND `u_pass` = '123'


پیغام خطایی که SQL server میده اینه:
كد:
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'user.u_name' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

که از اون می شه اسم Table و اولین فیلد جدول رو به دست آورد...
همین طور که میبینید هکر از Error ها خیلی بهره می بره...
به همین ترتیب می شه کار های دیگه ای هم کرد مثلا:
كد:
username: '; DROP TABLE `users` --
password: 123

SELECT * FROM `users` WHERE `u_name` = ''; DROP TABLE `users` -- AND `u_pass` = '123'


خوب می بینید که این اصلا خوب نیست...

استفاده از UNION:

كد:
username: ' UNION select max(`u_name`) from `users` --
password: 123

SELECT * FROM `users` WHERE `u_name` = '' UNION select max(`u_name`) from `users` -- AND `u_pass` = '123'


خطایی که سرور به ما میده اینه :

كد:
#1222 - The used SELECT statements have a different number of columns


خوب ما تعداد فیلد های SQL برنامه رو نمی دونیم به همین دلیل کار خودمون رو با افزودن یک فیلد دیگر در UNION ادامه میدیم:

كد:
username: ' UNION select max(`u_name`),0 from `users` --
password: 123

SELECT * FROM `users` WHERE `u_name` = '' UNION select max(`u_name`),0 from `users` -- AND `u_pass` = '123'

#1222 - The used SELECT statements have a different number of columns


باز هم همون خطای قبلی رو میده ... این کار رو این قدر ادامه میدیم تا تعداد فیلد ها رو به دست بیاریم.
همچنین با استفاده از این باگ میتونیم اعمالی چون Insert, Delete, ... رو هم انجام بدیم...
در ضمن فقط فرم Login که نیست هر جایی که با دیتابیس کار کنه میتونه مورد حمله واقع بشه اما Login حساسیت بیشتری داره...

* * *

خوب حالا چاره چیه ...
اول بریم سراغ Login، کد مربوط به Login رو به این شکل تغییر می دیم:


كد:

$Username = $_POST['Username'];
$Password = md5( $_POST['Password']);

$Username = strtolower( $Username);
$Username = preg_replace("([^a-z0-9_]*)", '', $Username);

$SQL = "SELECT `u_pass` FROM `users` WHERE `u_name` = '$Username' LIMIT 0,1";
$Rslt = mysql_query( $SQL);

if( mysql_num_rows( $Rslt) == 1 && $Password == mysql_result( $Rslt , 0))
{

   print('welcome to your profile...');

} else {

   die('The specified username and/or password is invalid!');

}

?>


اولا که Password رو حتما Hash کنید که الگوریتم های مختلفی در این زمینه وجود داره ... البته باز هم محدود به رد کردن یک یا چند بار از md5 نشید بلکه با چیزهای دیگری مثل تاریخ عضویت یا کد منحصر به فردی مخلوطش کنید تا حسابی قرو قاطی بشه ... مثلا این طوری:

كد:
$HashedPass = md5( strrev(md5( $Password) . $RegisterDate));

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

نکته بعد که خیلی مهمه اینه که نام کاربری فقط همونایی باشه که می خواییم و دیگه کاراکتر های اضافی توش نباشه:

كد:
$Username = preg_replace("([^a-z0-9_]*)", '', $Username);


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

نکته بعد طرض نوشتن SQL مون هست:
كد:
SELECT `u_pass` FROM `users` WHERE `u_name` = '$Username' LIMIT 0,1


همون طور که می بینید فقط Password کاربر از دیتابیس بیرون کشیده شده (البته توی برنامه های واقعی چیزای دیگه ای هم هست که می خونیم) ... بعد هم به شرط SQL دقت کنید که فقط username رو مورد بررسی قرار می ده همچنین به LIMIT 0,1 هم دقت کنید که فقط یه رکورد رو بیرون می کشیم.

نکته خیلی مهم اینجاست که Password رو خود ما چک می کنیم و اونو به دست SQL نمی سپاریم :

كد:
if( mysql_num_rows( $Rslt) == 1 && $Password == mysql_result( $Rslt , 0))


یعنی اگه به هر شکل هکر بتواند SQL رو هم دور بزنه، این جا رو نمی تونه دور بزنه...

---

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

كد:
function EscapeString( $str , $Conn = 0)
{
   if(function_exists('mysql_real_escape_string') && $Conn) {

      return mysql_real_escape_string( $str, $Conn );

   } else {

      return mysql_escape_string( $str );
   }
}


نکته بسیار مهم دیگه اینه که برای دیتابیسمون دوتا user بسازیم، یکی فقط می تونه SELECT رو انجام بده و دیگری فقط SELECT, UPDATE, INSERT, LOCK TABLE رو بتونه انجام بده، و موقعی که می خواهیم Query فقط خوندن رو اجرا کنیم با user اولی به دیتابیس Connect می شیم، که اگه هکر بتونه چیزی رو هم تزریق کنه که توی اطلاعات ما تغییر ایجاد کنه، خود DBMS اجازه همچین کاری رو نده ... در ضمن به user های دیتابیس دسترسی های خطر ناکی چون DROP TABLE, ALTER , ... رو ندیم.

یک نکته مهم دیگه اینه که مثلا در فیلد هایی که int هستند و بر اساس این فیلد جستجو انجام میدین ورودی GET یا POST رو چک کنید که حتما همون چیزی باشه که باید باشه مثلا اگه قراره int باشه اون رو از تابع intval رد کنید مثال:

كد:
$NewsID = intval( $_GET[ 'ID' ]);
$SQL = "SELECT * FROM `news` WHERE `ID` = $NewsID LIMIT 0,1";


و نکته بسیار مهم آخر اینه که نگذارید کسی خطاهای برنامه شما را ببیند (حتی اطلاعات سرور و زبان برنامه نویسی رو هم مخفی کنید خیلی خوبه)، چون همین خطاها هستند که به هکر ها اطلاعات میدن ... برای این کار بعد از این که کل پروژه ساخته شد و خواستید اون رو publish کنید بالای یکی از فایل هایی که توی همه فایل های برنامه include می شه تابع زیر رو به این شکل صدا بزنید:

كد:
error_reporting( 0);


با آرزوی موفقیت و سربلندی برای همه شما عزیزان. Wink
Subscribe
ارسال در تاريخ چهارشنبه هشتم خرداد 1387 توسط سعيد
قالب وبلاگ

CopyRight Of Unicomp.ir