Jul 4, 2014 02:35 PM
(This post was last modified: Dec 24, 2014 01:31 PM by AppleJuice.)
If you have been learning PHP recently, it can be a bit difficult to figure out what you want to build to try out your new skills. I've decided to create a list of possible project ideas to inspire you, and help you improve your PHP knowledge. Any suggestions of projects to add to this list, would be greatly appreciated.
Easy Projects
Dynamic Website
Todo/Tasks List
Contacts List
Quiz
Rating
Photo Gallery
Shoutbox/Guestbook
Contact Form
Calendar/Event Scheduler
Hangman
Make Your RSS/Atom Feed Reader
Intermediate Projects
Make a Game
Membership System
Make Your Own Captcha
Make Your Own Template Engine
Make Your Own Pastebin
Support System
Malicious Content Scanner
Advanced Projects
Chatroom
Build Your Own CMS
Build Your Own Search Engine
Build Your Own Forum
Image/Video Hosting Service
e-Commerce Shopping Cart
Webmail
Make A Proxy Script
Make Your Own Uptime Checker
Make A MySQL Backup Script
Traffic Tracking/Analyses
Advertisement System
Marketplace
Cloud Service
Project Repository
Universal Authentication Platform
Website Builder
Nothing Interesting?
If none of these projects interest you then there are some alternatives.
Easy Projects
Dynamic Website
- Build a dynamic website in PHP. Every page should include a header and footer.
Example Source:
http://pastebin.com/qAjRAvJ7
Steps to improve:- Allow each page to modify the title tag for that page
- Make it so the navigation bar shows you what page you are on
- Allow each page to modify the title tag for that page
Todo/Tasks List
- Create a Todo/Task list that allows you to see tasks on that list. You should also be able to modify and complete the tasks.
Steps to improve:- Add a feature where you can assign tasks to a person
- Add a feature where you can assign tasks to a person
Contacts List
- Create a contacts lists that stores information of people, as well as contact methods.
Steps to improve:- Add a way to assign a picture to that person
- Create a way to search contacts based on a search query
- Add a way to assign a picture to that person
Quiz
- Create a simple multiple choice quiz, then give the user's results. Allow the user to see which questions they got wrong and show the correct answer.
Steps to improve:- Give the user a score out of 100%
- Time the user from start to finish
- Give the user a score out of 100%
Rating
- Create a way for users to rate things out of 5 stars. The user should only be able to rate once.
Photo Gallery
- Create a simple photo gallery that allows you to display photos. The photo gallery should use small thumbnails, upon clicking a photo it should show a larger version of the photo (using a Javascript popup, or on a separate page.)
Steps to improve:- Implement a method to upload images (admin panel, member feature?)
- Allow guests to comment, rate or share images
- Make a feature that allows you to create albums/folders that can store other albums/folder or images.
- Implement a method to upload images (admin panel, member feature?)
Shoutbox/Guestbook
- Create a shoutbox/guestbook that allows people to say something. It should store the user's name, email and message in a database or flat file.
Steps to improve:- Ensure that it is secure from XSS and SQLi (Do NOT use mysql_* functions, instead use PDO with prepared statements!)
- Show a certain amount of messages per page
- Allow smilies/emoticons
- Add a word filter (ie, replace AppleJuice to A******)
- Add some sort of message moderation system, only approved messages can be displayed
- Allow users to register their accounts, so other cannot login into them (users cant go on admin accounts w/o authentication)
- Ensure that it is secure from XSS and SQLi (Do NOT use mysql_* functions, instead use PDO with prepared statements!)
Contact Form
- Create a contact form that allows people to contact you. The contact form should have fields that are reasonable (ie, name, email address, subject, message). When the user clicks "send" it should send an email to your desired email address.
Steps to improve:- Add a Captcha to prevent spam and abuse (make your own, or use an existing one such as reCaptcha)
- Add a recipient field that allows the user to choose where the email should go to (ie, Webmaster, Billing, Support, Abuse, etc)
- Make sure you are NOT using the PHP mail() function, use a PHP mailing library such as PHP Mailer
- Add a Captcha to prevent spam and abuse (make your own, or use an existing one such as reCaptcha)
Calendar/Event Scheduler
- Create a calendar that allows you to switch to different months and years. Your calendar should display different events on a specific day or days. Make a way that allows you to add, modify and delete events. Events should be able to have detailed information.
Steps to improve:- Make events happen all day, or a time range (ie, 6AM to 9PM)
- Make events happen over multiple days (ie, from May 1st to July 4th)
- Make events happen all day, or a time range (ie, 6AM to 9PM)
Hangman
- Make a hangman games that chooses a random word. You can make the game use actual images or ASCII art. The user should have limited guesses. You should be able to guess individual letters or a word/phrase.
Steps to improve:- Download a dictionary and make the game choose a random word from that list
- Allow the player to get a hint (single letter or description of the word)
- Keep track of the player's wins and losses
- Download a dictionary and make the game choose a random word from that list
Make Your RSS/Atom Feed Reader
- Make a script that can fetch and parse an RSS/Atom feed. It should display a short summary of the article, and be able to link to the original location.
Intermediate Projects
Make a Game
- Recreate an existing game you like, into PHP. Build a card game, a Pokemon clone, multiplayer connect4, or a virtual pet game.
Steps to improve:- Create minigames, you can incorporate other languages (such as Actionscript)
- Create minigames, you can incorporate other languages (such as Actionscript)
Membership System
- Create a membership system that allows people to register an account, and login into their account. You can add other features such as resetting password, required to be logged in to post a comment on a shoutbox/guestbook or to participate in a poll or to rate something.
Steps to improve:- Require the user to activate their account (via email)
- Allow users to have their own profile
- Allow users to interact with other users
- Take a challenge, make this into your own small social network and see where it takes you!
- Require the user to activate their account (via email)
Make Your Own Captcha
- Make your own captcha. Use different techniques to distort the image, while making it eligible to still read the captcha. Take a look into PHP GD extension
Make Your Own Template Engine
- Make your own template engine that allows you to separate your HTML and PHP. Templates should be able to have logic (compare data, etc) and should be able to display data from variables passed from a database.
Make Your Own Pastebin
- Make your own application that allows you to paste in code, and to share it with others. Offer syntax highlighting, and possibly password protected pastes.
Support System
- Build a system that allows users to receive support, whether it is a list of common questions, or a ticketing system.
Steps to improve:- Allow users to have a real-time conversation for support with agents
- Allow users to receive notifications when an agent has replied to them
- Create a GUI in a language of your choice, to allow agents to support others (ie: C#, Java, C/C++)
- Allow users to have a real-time conversation for support with agents
Malicious Content Scanner
- Create a script that allows you to scan files in a specific directory for malicious content. You can use common functions such as: exec, system, or eval to determine if a file may contain malicious content.
Steps to improve:- Incorporate an anti-virus software to scan files for any malware
- Incorporate an anti-virus software to scan files for any malware
Advanced Projects
Chatroom
- Create a PHP based chatroom, and use MySQL (or a different database engine) to store the messages. Use AJAX to periodically fetch new messages along with the current users, and use AJAX to send messages.
See an example:
http://frug.github.io/AJAX-Chat/
Steps to improve:- Allow multiple rooms (ie, Main, Help, Developers, etc)
- Allow administration and moderator features to kick and ban people for a certain amount of time
- Create a permission base system with groups. Assign users to groups to allow/deny them from doing certain actions
- Create a spam filter (only post X number of messages in a certain period of time)
- Allow multiple rooms (ie, Main, Help, Developers, etc)
Build Your Own CMS
- Build your own CMS, and design it how you want it to. It's a great learning experience, and you will be able to try lots of different things out.
Ideas for your CMS:- Database dynamic pages (all pages are stored in a database)
- Have a revision history, with the ability to undo changes to pages/blog posts
- Allow guests to comment on pages/blog posts
- Create a customisable sidebar with widgets, that allows you to move, add and edit widgets in an admin panel.
- Database dynamic pages (all pages are stored in a database)
Build Your Own Search Engine
- If you have knowledge with another language such as Java, C/C++ or Python you can incorporate it with PHP and create your own search engine. Using another language, create a website crawler that follows links to other websites, indexes the pages of websites and stores it into a database. Then using PHP, allow the user to search through that database and show them results to websites that best results their query.
Build Your Own Forum
- Don't like other forum CMSes out there? Build your own forum CMS! Store boards in categories, allow users to register accounts, allow users to create their own threads and reply to other users' threads.
Steps to improve:- Create a group or permission based system (check out ACL) that chooses which users/groups can do certain actions (ie, members and above can create posts, moderators and above can remove spammy posts, and admins can delete members)
- Add functionality to lock, move and delete threads/posts
- Add functionality to allow staff to merge threads together
- Create a group or permission based system (check out ACL) that chooses which users/groups can do certain actions (ie, members and above can create posts, moderators and above can remove spammy posts, and admins can delete members)
Image/Video Hosting Service
- Allow users to upload videos or images. Allow users to put their images into albums.
Notice:
If you truly want to do this, do NOT use a free webhosting service, and to be aware of illegal/copyrighted content that may be uploaded.
Steps to improve:- Give the user a limited amount of space to upload content, and can extend it by upgrading accounts
- Give the user a limited amount of space to upload content, and can extend it by upgrading accounts
e-Commerce Shopping Cart
- Build your own e-Commerce Shopping Cart where administrators can create products to sell. Allow customers to purchase products with different methods of payments (PayPal, Bitcoin, etc)
Notice:
If you are going to handle bank details or credit card information DO NOT store any of the information on your server, and use SSL.
Steps to improve:- Allow customers to rate products
- Allow customers to purchase the items as gifts
- Allow customers to rate products
Webmail
- Create your own webmail application that allows you to login into an email account, send and receive emails.
Steps to improve:- Allow functionality to upload attachments
- Allow a way to search for emails
- Make a filter that can move emails (or delete)
- Allow functionality to upload attachments
Make A Proxy Script
- Make your own proxy using cURL in PHP. It should allow you to GET and POST information.
Steps to improve:- Prevent proxing other computers on the same network
- Compress (and cache?) images, styles, and scripts
- Prevent proxing other computers on the same network
Make Your Own Uptime Checker
- Make your own website that checks the uptime of websites. It should ping websites periodically, and check their response to see their uptime.
Make A MySQL Backup Script
- Make a PHP script that will periodically backup a MySQL database. It should support being called from CRON jobs
Steps to improve:- Allow backups of multiple databases
- Allow backups of different database engines (SQLite, Mongodb, etc)
- Allow options to split tables into different files
- Allow backups of multiple databases
Traffic Tracking/Analyses
- Build a tool that will track traffic to a website, determines who visits your website most, and other information about their system and browser (language, screen size, browser info, etc) you will most likely need to use Javascript to grab this sort of information, then use PHP to store and compile the data into a user friendly readable format.
Advertisement System
- Create an advertisement system that allows advertisers to create advertisements for products, website, and businesses. Allow web-developers to add advertisements on their website and earn revenue. You can support a wide variety of payment methods: PayPal, Credit Card (use stripe), or Crypto-Currencies.
Marketplace
- Create a marketplace that allows people to give, receive, and trade items. You can allow people give things for free, trade for greater or equal value, or trade for money. You can make your marketplace based on physical goods, services (ie: programming, design, etc), or for a community such as Steam Games, or similar.
Cloud Service
- Create a cloud service for website hosting, file hosting, or communication. You can improve other languages to create apps for other platforms.
Project Repository
- Create a service that allows you to create repositories for a version control (GIT, SVN, HG, etc.) You can create a control panel to manage repositories and see revision history.
Universal Authentication Platform
- Create a platform that allows you to authenticate into multiple website, allow developers to incorporate your platform into their website to register and login into websites.
Website Builder
- Create a website builder, that gives the ability to create and manage websites with little-to-no coding experience. You can make it so you can drag and drop widgets, modify widgets and content. you can even hook this up with your own CMS.
Nothing Interesting?
If none of these projects interest you then there are some alternatives.
- Make your own plugin/modification for your favourite CMS.
- Make your own framework, a great learning experience! Look into OOP, MVC, DRY, and REST design patterns to improve your framework.
- Make a PHP extension.
- Learn how to use a larger framework such as Laravel, Kohana, Zend Framework, CakePHP, or Symfony
- Contribute to an open source project, such as WordPress, myBB, etc. Checkout Github to find an open source project
- Build a website for something you are interested! This will allow you to practice your design skills and HTML/CSS. You can write it from scratch with PHP, or use a CMS and expand it


