Skip to main content

Posts

PHP script to upload file securely

How to Write a Secure PHP Script for File Uploads File uploads are a common feature in web applications, but they can introduce significant security risks if not handled properly. In this article, we'll walk through the steps to securely upload files to a server using PHP. We'll cover key security measures such as file validation, limiting file types, setting file size limits, and managing file storage. We will also create reusable functions to handle the upload process. 1. Create the HTML Form First, we need an HTML form that allows users to select and upload a file. Ensure that the form uses the POST method and includes the enctype="multipart/form-data" attribute. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Secure File Upload</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/...

The 7 Types of Leadership: Inspiring Examples and Insights

Leadership is a multifaceted concept with various styles that cater to different needs and situations. Understanding these styles can help you develop your leadership skills and adapt to diverse scenarios. In this article, we'll explore seven prominent leadership styles, each accompanied by insightful examples from influential authors. Let's dive in! Type 1: Transformational Leadership 🚀 Transformational Leadership: Inspiring Change and Innovation Transformational leadership focuses on inspiring and motivating followers to achieve extraordinary outcomes and, in the process, develop their own leadership capacity. Example from Author: James MacGregor Burns James MacGregor Burns, in his book "Leadership," describes transformational leaders as those who seek to change the status quo by appealing to their followers' values and sense of higher purpose. 🔸 Characteristics: - Inspirational Motivation - Intellectual Stimulation - Individualized Consideration - Idealized I...

Find the dates ( month start and end dates) between the given two dates using PHP

When you want to pull the dates between two dates, where the between dates are connecting dots. If you want to list the complete date ranges through months. For example, to find the dates between below dates date1 = '2022-12-29'; date2 = '2023-02-20'; expected output would be  Start Date End Date 2022-12-29 2022-12-31 2023-01-01 2023-01-31 2023-02-01 2023-02-20 <?php /* * Returns array of month's start & end dates between provided dates. * * @param string $start_date * @param string $end_date * * * @return array */ function getDates($start_date, $end_date){ $start_date_obj = new DateTime($start_date); $end_date_obj = new DateTime($end_date); $diff = $end_date_obj->diff($start_date_obj); $months = (($diff->y) * 12) + ($diff->m); $dates[] = array('start_date' => $start_date, 'end_date' => date('Y-m-t', strtotime($start_date)), 'suffix' =...

Sorting an array of objects using Javascript

 When working on one of my projects, I had to sort the elements of the JSON array of objects. I did this most of the time from server side but this time I had to do the client side sort. Here is the solution what I found. We've two functions one to sort by ascending and other for descending. It expects first parameter as array (of objects) and second parameter the key on basis of which we want to sort. <script> function sortByKeyDesc(array, key) { return array.sort(function (a, b) { var x = a[key]; var y = b[key]; return ((x > y) ? -1 : ((x y) ? 1 : 0)); }); } </script> Here is the example <script> books = [{ 'BookID': 123, 'BookName': 'Seven Habits of most effective people' }, { 'BookID': 234, 'BookName': 'Why Leaders eat last' }, { 'BookID': 345, 'BookName': 'How to influence people' }, { 'BookID': 456, 'BookName': 'The Tipping...

Multiple Checkboxes Validation

This is a regular problem and solution is hardly available on google. When we use multiple checkboxes of same group (same name with square brackets) and you've to read the values from server side, then below solution will help you. Here I'm using jQuery (https://jquery.com/) and jQuery Validate plugin (https://jqueryvalidation.org/) For an example, I've to ask a user which of the listed book they are interested to know about <form id="BooksForm" method="post" name="BooksForm"> <p>Books you are interested in </p> <input class="Books" id="Book1" name="Books[]" type="checkbox" value="1" /> The Inner Game of Tennis <br /> <input class="Books" id="Book2" name="Books[]" type="checkbox" value="1" /> Monk who sold his ferrari <br /> <input class="Books" id="Book3" name=...

PHP Code Review Guidelines

General  The code works  The code is easy to understand  Follows coding conventions  Names are simple and if possible short  Names are spelt correctly  Names contain units where applicable  There are no usages of magic numbers  No hard coded constants that could possibly change in the future  All variables are in the smallest scope possible  There is no commented out code  There is no dead code (inaccessible at Runtime)  No code that can be replaced with library functions  Variables are not accidentally used with null values  Variables are immutable where possible  Code is not repeated or duplicated  There is an else block for every if clause even if it is empty  No complex/long boolean expressions  No negatively named boolean variables  No empty blocks of code  Ideal data structures are used  Constructors do not accept null/none values  Catch clause...

Week dates between two dates

To list week's start date & end date between given two dates. It also includes number of dates in every set. It allows you to list only those weeks having total seven days. Here the starting day of the week is Monday & the end day of the week is Sunday. /* * Returns array of week's start & end dates with number of days between those. * * @param string $start_date * @param string $end_date * @param boolean $only_full_week * * @return array */ function getWeekDates($start_date, $end_date, $only_full_week = false) { $stime = strtotime($start_date); $etime = strtotime($end_date); $weeks = array(); $i = 0; $j = 1; while ($stime <= $etime) { if ($i == 0 && $j == 1) { $weeks[$i]['start_date'] = date('Y-m-d', $stime); $weeks[$i]['end_date'] = date('Y-m-d', $stime); $weeks[$...

Format Sentences, format number and remove extra spaces. All in one solution

We had a requirement, where we were asked to format the content from a big database table. And the format includes making sentences to sentence case, format simple numbers to comma separated numbers within those sentences and remove the extra spaces. Here is the solution. Hope this helps you. function formatString($string){ //number formatting $string1 = preg_replace_callback('/\d+/', function($match){return number_format($match[0]);}, $string); //removing extra spaces $string2 = preg_replace('/\s+/', ' ', $string1); //sentence case $sentences = preg_split('/([.?!]+)/', $string2, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE); $new_string = ''; foreach ($sentences as $key => $sentence) { $new_string .= ($key & 1) == 0? ucfirst(strtolower(trim($sentence))) : $sentence.' '; } return trim($new_string); } $str = "it was an awesome day. i bought shares f...

Huge data Excel download using PHP

Ah! It was always a problem to download huge data in excel format. Tried the best library available 'PHPExcel' but the issue persists with memory limit and time taken to generate and download. But here is the promising solution found after spending ages searching on Google. You can find it here . The author himself says "Never run out of memory with PHPExcel again". You need to download it and include  xlsxwriter.class.php   where you want to fetch the data from DB and through it on to browser or save to a particular location. Let's get started. Below is the logic to generate the file and store in the current directory. If you want to store is at the desired location, specify the location for the method writeToFile. include_once("xlsxwriter.class.php"); $writer = new XLSXWriter(); $data = array( array('year','month','amount'), array('2003','1','220'), array('2003','2'...

WYSIWYG super light editor with jQuery & Bootstrap

Yes! It is. Summernote is the super light WYSIWYG editor for the web. It supports most of the features tinyMCE or CKEditor does but with smallest Javascript & CSS files. You can download Summernote from here . It is the official website for the same. It has very simple getting started tutorial.  This is article will show you how to start with summernote and couple of fixes or plugin which you don't find on the official website. Getting started: If you want to download and start with, click here . For CDN, place below snippet under head tag. <!-- include libraries(jQuery, bootstrap) --> <link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css" rel="stylesheet"> <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script> <script src="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.js"></script> <!-- include summernote css/js --...

Web Developer Roadmap

Credits

Generate documentation for PHP Code using phpDocumentor

What is phpDocumentor? phpDocumentor is the simple and best tool to generate API documentation for PHP source code.  Downloading & installing phpDocumentor: There are several dependencies to install phpDocumentor you can find them on official website i.e., here To install phpDocumentor using PEAR type below command In windows, run command prompt as administrator. Goto xampp/php folder and type pear channel-discover pear.phpdoc.org pear install phpdoc/phpDocumentor In linux, open terminal and type (if install xampp for linux then goto xampp/bin folder) pear channel-discover pear.phpdoc.org pear install phpdoc/phpDocumentor Generate API using phpDocumentor: In windows, goto  phpdoc.bat folder and run phpdoc  command for source directory to destination phpdoc -d <source directory of php code> -t <destination directory> In Linux, goto [phpdocumentor installation folder]/bin/ and run command phpdoc -d <source directory of php...

Google like Pagination

In the beginning of my career, every technical interview has this question; "How do you write pagination script in PHP?". I think you too faced the same issue. It was very important to answer this because every application is developed to list set of information and off-course you can't show every thing in a single page. It will irritate the user to scroll to the bottom of page to read. So, the pagination. Divide the list of items in number of pages and navigate to each by clicking on each page number displayed. At the beginning, the pagination was simple was limited to 10-15 pages, but after some time in real time the requirement has grown to 10 multiple pages. Solution was to show first few page numbers, last few page numbers and in middle show the ellipsis(...). As you navigate to any page it would show definite page numbers to both the sides. /** * Pagination file * * This file provides the google like pagination solution * * @category Saral * @packag...

Validation and Submission of form using jQuery :: Easiest Solution

In any application, form validation and submission to server is so common and redundant; there are multiple ways of doing it. And the best and easiest way that I do use or recommend is jQuery solution.  Most popular jQuery plugins are the best solution, they have the best solution ever.  One, jQuery Validator written and maintained by Jorn Zaefferer, a member of the jQuery team, lead developer on the jQuery UI team and maintainer of QUnit. Two, jQuery Form by malsup, it has various plugins and solutions. Another plugin that I like from same developer is jQuery BlockUI . (give a try). Name: Email: Note: To avoid unexpected behavior, maintain same form and fields names and id selector values. Need further explanation, let me know.

Email already exists using jQuery

It is the common requirement for any web application either it is PHP, .net, JSP etc., which has users involved. When creating/adding user from admin or end user registration we should check whether username or email address already exists. It will help to have unique registrations to our application and avoid confusion between various users.  I see many developers struggle with this by submitting the form to server side script and validate their from database, in case username/email address already exists they take the pain to go back to previous page or form and show the error message with other form data filled.  Few use AJAX to send the information onblur or onkeyup or onkeydown but face difficulties to stop form submission. Here is the simple solution that would help in validating username or email address existence without much hassle.  Solution comes from popular jQuery Validator plugin I'm using this from ages.  HTML Code: <html> <head...

Sorting second dimension array

We can sort the second dimension array like table, for example $users = array( array('name' => 'Mr. B', 'age' => 34), array('name' => 'Mr. A', 'age' => 33), array('name' => 'Mr. C', 'age' => 32) ); If you want to sort the array based on the name or age, here is the solution: function arraySortByColumn(&$arr, $col, $dir = SORT_ASC){ $sort_col = array(); foreach ($arr as $key => $row) { $sort_col[$key] = $row[$col]; } array_multisort($sort_col, $dir, $arr); } arraySortByColumn($users, 'name', SORT_DESC); print_r($users);