csc 330 e-commerce teacher ahmed mumtaz mustehsan gm-it ciit islamabad

Download CSC 330 E-Commerce Teacher   Ahmed  Mumtaz Mustehsan            GM-IT CIIT Islamabad

If you can't read please download the document

Upload: latona

Post on 06-Jan-2016

21 views

Category:

Documents


0 download

DESCRIPTION

CSC 330 E-Commerce Teacher Ahmed Mumtaz Mustehsan GM-IT CIIT Islamabad Virtual Campus, CIIT COMSATS Institute of Information Technology T2-Lecture-16. XAMPP An Open source Web Development Technology. For Lecture Material/Slides Thanks to: http://www.phpknowhow.com. - PowerPoint PPT Presentation

TRANSCRIPT

  • CSC 330 E-CommerceTeacher

    Ahmed Mumtaz Mustehsan GM-IT CIIT Islamabad

    Virtual Campus, CIITCOMSATS Institute of Information Technology

    T2-Lecture-16

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • XAMPPAn Open source Web Development Technology For Lecture Material/Slides Thanks to: http://www.phpknowhow.com

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • SynopsisRole of PHP in Web ApplicationsWorking with XAMPPInstallation of XAMPPHow to Run PHP FilesGetting Information About PHP InstallationChoosing a PHP EditorChoosing IDE Environment

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Role of PHP in Web Applications

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Role of PHP in Web ApplicationsPHP is a server side scripting language. Processing takes place at server using its resources. And output is sent to the client. In a client side scripting like JavaScript, the processing is done in the clients computer consuming its resources.

    Note: PHP can also be used as a language for Command line Scripting and Desktop applications. But its widely used for web applications.

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Role of PHP in Web ApplicationsTo understand the role of PHP, lets have a look to a normal web request and a web request that involves PHP.

    Note: There can be many intermediate steps involved but only the main and important ones have been mentioned for understanding purposes.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Dynamic Contentusing PHP you can create dynamic web sites. The site that generate the web Pages for client dynamically.Example:lets take a look at welcome.htmlandwelcome.php.Note: For HTML code

    For PHP code

    Both are the same

    < html >< / html >< ?php? >T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Static vs Dynamic contentsStatic Components:No matter whats the current time of the day, welcome.html, would always printWelcome!as the heading. Showing a static behaviorDynamic Components:The script welcome.phpwill print Good Morning! before 12 noon, andWelcome!, if it is after 12. showing a dynamic behavior because the content it delivers changes according to the time of the day.(date()function uses servers time and it may be different from your PCs time).PHP can be used to build dynamic content based on the context. Real benefits of PHPs dynamic behavior can be observed by creating database driven web applications.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • How PHP Engine Outputs Content ?When PHP interpreter reads a file, it only processes lines betweentags. It outputs rest of the lines without any processing.Inwelcome.php, PHP interpreter outputs all the HTML content till
  • Client Browser vs PHP codeOnly the output is sent to the client. So, no PHP content can be seen by viewing the source of PHP files in clients web browser.

    You can have more than one block of PHP content in a page.The variables defined in these blocks are available to next blocks. Example, PHP file (welcome-new.php) behave as same aswelcome.php.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Example the use of PHP VariablesT2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Embedding PHP in HTML When PHP and HTML content are mixed in a PHP file like welcome.php and welcome-new.php, it is called as Embedding PHP in HTML. The same result can be obtained only from PHP (welcome-latest.php) which contains only PHP content. T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Where to Use PHP?Embedding PHP blocks in HTML can be useful to utilize PHP power of manipulating and embading dynamic nature.So use PHP code only where it is necessary. In welcome files, we only need PHP to output the correct greeting. The rest of the lines can be displayed without PHP.This saves PHP processing resources and lets us have clean and readable files in our development. T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Working with XAMPP

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • XAMPP Whats the tool?XAMPP (pronounced as ZAMP) is a small and light Apache distribution containing the most common web development technologies in a single package.Acronym for:X- Read as "cross", meaning cross-platformA-Apache HTTP Server (Web Server)M-MySQL (Open Source database)P-PHP (Server side scripting)P-Perl (scripting language)

    Note: X is also referred as LINX at different sites.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Features of XAMPP:Ideal tool for developing and testing applications in PHP & MySQL.Takes less time than installing each of its components separately.Multiple instances of XAMPP can exist on a single computer.Allow website designers and programmers to test their work on their own computers without any access to the InternetXAMPP also provides support for creating and manipulating databases in MySQL and SQLite among others.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • XAMPP v/s XAMPP LiteT2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Types of XAMPP- Its free and available for Windows, Mac OS Solaris and Linux and called:WAMP ------ For WindowsMAMP ------ For Mac OS X SAMP ------ For SolarisLAMP ------ For LINUX

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Install XAMPPDownloadStart by downloading XAMPP by following these links to downloads and installation guides:Download and install XAMPP for WindowsDownload and install XAMPP for MacDownload and install XAMPP for Linux

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Downloading and Installing XAMPP Go toXAMPPweb site and download the installer based on your operating system. Installation should be similar to a normal software installation you do in your operating system.When installing, there would be an option to select whether you want:To run Apache and MySQL as services while booting machineORif you are not doing PHP development frequently. You can start Apache and MySQL as and when required. T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Install XAMPPJust follow the instructions on the screen during the installation process. Below are screenshots from an installation on Windows.Choose the "Installer" download on the XAMPP website:T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Install XAMPPRun the file and choose C:\xampp as the install location:T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Install XAMPPYou don't need to choose any "Service Sections":T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Install XAMPPClick "Finish" when the installation process is complete:After Finishing the installation of XAMPP, Start the server and save your future PHP documents in the folder c:\xampp\htdocs on your computer and access them in the browser with the address http://localhost.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Starting Apache and MySQLNote: Instructions provided are based on Windows operating system but the approache should be similar for other operating systems.Go to the location where you installed XAMPP (usuallyC:\Program Files\xampp) and double click on XAMPP Control Panel , (xampp-control.exe). It will display the screen! T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Starting Apache and MySQLOnce opened, you would see XAMPP icon on the right of your task bar. Click onStartbuttons next to Apache and MySQL for starting them.Clicking on that icon will show/hide XAMPP control panel. To exit from XAMPP, click on Exit button in XAMPP Control Panel.

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Error!! Apache Is Not StartingSometimes even after clicking Start button several times, Apache is not starting. This is usually because some other service is running at the port required by Apache which is 80 by default. An easy reproducible way for this error is startingSkypebefore starting Apache.In such a case, you would need to stop other service temporary and restart it after starting Apache. For example, if Skype is stopped, it will find another port for working after restarting.In the installation directory, you would see a program called Port Check (xampp-portcheck.exe). Double click on it and it will show you status of required port for Apache, MySQL and other software that comes with XAMPP. If required ports are already occupied, it will show the names of services that run on those ports.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Making Requests to the ServerOnce you started Apache in control panel, type http://localhost in your web browser. This would bring you a web page that lists XAMPP related details. T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Putting Stuff in Web FolderUnder XAMPP root directory there is a folder calledhtdocs. Put your web site related stuff in htdocs . For each web site create a Folder, insidehtdocsfolder and put content to avoid conflicts.For an example, create a folder calledlearnphpinsidehtdocsfolder and put welcome.phpinside that. Then you can access it via: URLhttp://localhost/learnphp/welcome.php.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Root URL and Home Page ContentIn above example, root URL of your web site ishttp://localhost/learnphp/and its generally expected to see home page of the web site once root URL is typed in the web browser.Web servers are configured to look for an index file (e.g. index.htm, index.html, index.phpetc) in the root of the web site folder contains content for the home page of the site.So, if a file calledindex.phpis present insidehttp://localhost/learnphp/ it will automatically be displayed.Make sure only one index file in the folder of web site to avoid conflicts. If there are more than one (sayindex.html, index.php), the file will be chosen based on the order defined in your web servers configuration settings.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Locations of Configuration FilesBased on your requirements, sometimes you would need to change default settings of your web and database servers. Usually this is done by altering their configuration files. In XAMPP, Apache, PHP and MySQL configurations files are located in following locations (This assumes XAMPP installation directory asC:\Program Files\xampp).Apache Conf File (httpd.conf):C:\Program Files\xampp\apache\conf\httpd.confPHP Conf File (php.ini):C:\Program Files\xampp\apache\bin\php.iniMySQL Conf File (my.cnf):C:\Program Files\xampp\mysql\bin\my.cnfIn XAMPP, some Apache configuration settings have been moved to sub configuration files underxampp\apache\conf\extra.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • To open my.cnf, double clicking on it may not work sometimes. In that case, open Notepad and then locate my.cnf file by setting Files of Type to All Files as below. T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Restarting Apache and MySQLTo take effect any configuration change, its required to restart Apache and/or MySQL. In XAMPP, if these two are already running, stop them and start again in the Control Panel. T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • How to Run PHP Files

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • How to Run PHP FilesDouble click on a HTML file (files with .htmlor.htmextension) it would open in web browser. But same wont happen if you double clicked on a PHP file (probably it would open in aneditor). The reason isPHP files first need be processedin a web server before sending their output to the web browser.Therefore before running PHP files, they should be placed inside the web folder of a web server (htdocs )and then make a request to desired PHP file by typing its URL in the web browser. The root of its web folder can be accessed by typinghttp://localhostin the web browser. So, if you placed a file calledhello.phpinside its web folder, you can run that file by callinghttp://localhost/htdocs/hello.php.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Getting Information about PHP Installation

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Getting Information about PHP InstallationPHP providesphpinfo()function that prints details about your PHP installation. It can be helpful when you want to know about a certain setting like the location of php.ini file.Copy following code to a file located in your web server andrun itin your web browser.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Getting Information about PHP InstallationT2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • You will be able to see tabulated information about your php installation. Usually a file like this is used as a test file to check that PHP is up and running. First you will be able to see your PHP version. Configuration File (php.ini) Path shows where is your php.ini located. PHP may keep a separate php.ini file for command-line. This setting shows the location of php.ini file that corresponds to your web server (the one you will use most). Under date section, you will find the timezone used by PHP. For many PHP extensions installed, there would a table listing extension details. Getting Information about PHP InstallationT2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Choosing a PHP Editor

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Choosing a PHP EditorPHP files can be edited using any text editor however, prefer an advanced editor when engaged in PHP development.Usually operating system offers a text editor withsyntax highlighting(If not, find a free one on net).However working on a PHP project that involves many files, just syntax highlighting wont be enough. You will need an IDE (Integrated Development Environment).An IDE is an application that integrates development tools like adebugger, aninterpreter, aversion control systemwith the editor. That lets you execute many development tasks at one place.T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Choosing IDEWhen you choose an IDE, look for following features.PHP syntax highlighting.Integrated interpreter so that if you make a syntax mistake it will be immediately visible.Autofilling that suggests PHP built-in code and the code you have already defined (like variables) when you start typing.Allowing easy refactoring like changing a method name across a file or across a set of files.Highlighting unused variables (this will allow you to cleanup your code).Integrated version controlling so that it clearly shows changed lines and allows you to revert back if needed.EasyEclipse for PHPandNetBeans for PHPare free and feature-rich IDEs. Both are available for Windows, Mac and Linux operating systems.

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*PHP and MySQL Web DevelopmentWhen you install PHP, you can select from a number of extensions.The MySQL support in PHP consists of a number of functions you can call to interact with MySQL,

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*162534MySQL ServerBrowserWeb ServerPHP EnginePHP and MySQL Web Development

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*A typical web database transaction consists of the following stages, which are numbered in above Figure:

    A users web browser issues an HTTP request for a particular web page. For example, using an HTML form, she might have requested a search for all books at MikkeliOnlineProfessionalBooks.com written by Leila Karjalainen. The search results page is called results.php.

    The web server receives the request for results.php, retrieves the file, and passes it to the PHP engine for processing.PHP and MySQL Web Development

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • The PHP engine begins parsing the script. Inside the script is a command to connect to the database and execute a query (perform the search for books). PHP opens a connection to the MySQL server and sends on the appropriate query.

    The MySQL server receives the database query, processes it, and sends the results - a list of books - back to the PHP engine.

    The PHP engine finishes running the script, which usually involves formatting the query results nicely in HTML. It then returns the resulting HTML to the web server.PHP and MySQL Web Development

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*The web server passes the HTML back to the browser, where the user can see the list of books she requested.The above described process is basically the same regardless of which scripting engine or database server you use.Sometimes the web server, PHP engine, and database server all run on the same machine.However, it is quite common for the database server to run on a different machine. You might do this for reasons of security, increased capacity, or load spreading. From a development perspective, this approach is much the same to work with.PHP and MySQL Web Development

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*Example: reads in and displays the contents of the Friend table from the database Future.Our script will do the following jobs:Set up a connection to the appropriate databaseQuery the database tableRetrieve the resultsPresent the results back to the user

    First we need to create the needed database and database table this time we will do it directly using MySQL Query Browser:

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*PHP and MySQL Web Development

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*PHP and MySQL Web Development

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*PHP and MySQL Web Development

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*PHP Script

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*PHP Script

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*and what you can see from the browser:

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • $sqlResult = mysql_query...

    When you select items from a database using mysql_query(), the data is returned as a MySQL result. Since we want to use this data in our program we need to store it in a variable. $sqlResult now holds the result from our mysql_query().MySQL Support in PHP

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*while($sqlRow = mysql_fetch_array( $sqlResult)

    The mysql_fetch_array function gets the next-in-line associative array from a MySQL result. By putting it in a while loop it will continue to fetch the next array until there is no next array to fetch. This function can be called as many times as you want, but it will return FALSE when the last associative array has already been returned.By placing this function within the conditional statement of the while loop, we can kill two birds with one stone:

    MySQL Support in PHP

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*We can retrieve the next associative array from our MySQL resource, $sqlResult, so that we can print out the retrieved information. We can tell the while loop to stop printing out information when the MySQL resource has returned the last array, as FALSE is returned when it reaches the end and this will cause the while loop to halt.

    MySQL Support in PHP

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • PHP and MySQL Web DevelopmenttMyn*we have accessed the firstName column like this: $sqlRow[firstName]. That can also be done by using integer indexing:$row = $sqlRow [0]MySQL Support in PHP

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • *MySQL Support in PHP

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • Android: Connecting to MySQL using PHP in XAMPPhttp://blog.sptechnolab.com/wp-content/uploads/2011/02/android.bmpT2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

  • The End XAMPP An Open source Web Development Technology Thank YouT2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com1-*

    T2-Lecture-16 Ahmed Mumtaz Mustehsan www.phpknowhow.com

    ***