PHP Oracle Web Development: Data processing, Security, Caching, XML, Web Services, and Ajax - Yuli Vasiliev - E-Book

PHP Oracle Web Development: Data processing, Security, Caching, XML, Web Services, and Ajax E-Book

Yuli Vasiliev

0,0
39,59 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Oracle Database gets high marks for performance, reliability, and scalability. Building and deploying your PHP applications on Oracle Database enables you to combine the power and robustness of Oracle and the ease of use, short development time, and high performance of PHP. When used in a complementary way, PHP and Oracle allow you to build high-performance, scalable, and reliable data-driven Web applications with a minimum of effort.When building a PHP/Oracle application, you have two general options. The first is to use an Oracle database just to store data, performing all the operations on that data on the client side; the other is to use the database not only to store data, but also to process it, thus moving data processing to the data. While building the key business logic of a database-driven PHP application inside the database is always a good idea, you should bear in mind that not all of the databases available today allow you to do. The Oracle database, which offers record-breaking performance, scalability, and reliability, does. The partnership of Oracle and the open-source scripting language PHP is an excellent solution for building high-performance, scalable, and reliable data-driven web applications.This 100% practical book is crammed full of easy-to-follow examples. It provides all the tools a PHP/Oracle developer needs to take advantage of the winning combination. It addresses the needs of a wide spectrum of PHP/Oracle developers, placing the emphasis on the most up-to-date topics, such as new PHP and Oracle Database features, stored procedure programming, handling transactions, security, caching, web services, and Ajax.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB

Seitenzahl: 490

Veröffentlichungsjahr: 2007

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

PHP Oracle Web Development
Credits
About the Author
About the Reviewer
Preface
What This Book Covers
Who is This Book For?
Conventions
Reader Feedback
Customer Support
Downloading the Example Code for the Book
Errata
Questions
1. Getting Started with PHP and Oracle
Why PHP and Oracle?
Simplicity and Flexibility
Performance
Robustness
Exploring PHP and Oracle Alternatives
PHP and MySQL
JSF and Oracle
What You Need to Start
Pieces of Software Required
Oracle Database Considerations
Understanding the Oracle Database
Choosing Between Oracle Database Editions
Obtaining Oracle Database Software
PHP Considerations
Apache HTTP Server
Why PHP 5
Obtaining PHP
Making PHP and Oracle Work Together
Oracle Instant Client
Zend Core for Oracle
Using Oracle SQL*Plus
Why Use SQL*Plus in PHP/Oracle Development?
Connecting to a Database with SQL*Plus
Running Scripts in SQL*Plus
Putting It All Together
Creating Your First PHP/Oracle Application
Connecting to a Database
Using the Local Naming Method
Using the Easy Connect Method
Issuing an SQL Statement Against the Database
Fetching and Displaying Results
Summary
2. PHP and Oracle Connection
Introducing the PHP OCI8 Extension
Why Use OCI8 Extension
Processing SQL Statements with OCI8
Connecting to Oracle with OCI8
Defining a Connection String
OCI8 Functions for Connecting to Oracle
Parsing and Executing SQL Statements with OCI8
Preparing SQL Statements for Execution
Using Bind Variables
Executing SQL Statements
Handling Errors
Using the oci_error Function
Using the trigger_error Function
Using Exceptions
Fetching Results with OCI8
OCI8 Functions for Fetching
Fetching the Next Row
Fetching All the Rows
Alternatives to PHP OCI8 Extension
Using PEAR DB
Using ADOdb
Using PDO
Creating Your Own Library on Top of OCI8
Summary
3. Data Processing
Implementing the Business Logic of a PHP/Oracle Application
When to Move the Data to the Processing
Advantages of Moving the Processing to the Data
Ways of Implementing Business Logic Inside the Database
Interaction between Components Implementing Business Logic
Using Complex SQL Statements
Employing Oracle SQL Functions in Queries
Oracle SQL Functions versus PHP Data Processing
Aggregate Functions
The GROUP BY Clause
Using Join Queries
Taking Advantage of Views
The Key Benefits of Using Views
Hiding Data Complexity with Views
Using the WHERE Clause
Using Stored Subprograms
What are Stored Subprograms?
Advantages of Stored Subprograms
An Example of When to Use a Stored Subprogram
Creating Stored Subprograms
Calling Stored Subprograms from PHP
Using Triggers
Creating Triggers
Firing Triggers
Calling Stored Procedures from a Trigger
Summary
4. Transactions
Overview of Transactions
What is a Transaction?
What are ACID Rules?
How Transactions Work in Oracle
Using Transactions in PHP/Oracle Applications
Structuring a PHP/Oracle Application to Control Transactions
Developing Transactional Code
Controlling Transactions from PHP
Moving Transactional Code to the Database
Using Triggers
Dealing with Statement-Level Rollbacks
Transaction Isolation Considerations
What OCI8 Connection Function to Choose
Concurrent Update Issues
Locking Issues
Lost Updates
Autonomous Transactions
Summary
5. Object-Oriented Approach
Implementing PHP Classes to Interact with Oracle
Building Blocks of Applications
Creating a Custom PHP Class from Scratch
Testing the Newly Created Class
Taking Advantage of PHP 5's Object-Oriented Features
Functionality and Implementation
Reusability
Handling Exceptions
Modifying an Existing Class to use Exceptions
Distinguishing between Different Error Types
Are Exceptions Necessarily Errors?
Extending Existing Classes
Using Standard Classes
PEAR::Auth in Action
Securing Pages with PEAR::Auth
Customizing Standard Classes
Customizing PEAR::Auth
Building More Compact Client Code
Interactions between Objects
Composition
Aggregation
Event-Driven Communication
Using Oracle Object-Relational Features
Using Oracle Object Types
Implementing Business Logic with Methods of Oracle Objects
Using Oracle Objects to Simplify Application Creation
Summary
6. Security
Securing PHP/Oracle Applications
Authenticating Users
Separating Security Management and Data
Using Two Database Schemas to Improve Security
Using Three Database Schemas to Improve Security
Employing PL/SQL Packages and Table Functions to Securely Access Database Data
Using the %ROWTYPE Attribute
Building a Custom Storage Container for the PEAR::Auth Class
Testing the Authentication System
Performing Authorization Based on the User Identity
Using Sessions to Hold Information about the Authenticated User
Holding a User's Information in Package Variables
Protecting Resources Based on Information about the Authenticated User
Hashing
Hashing Passwords
Modifying an Authentication System to Use Hashing
Setting Up Fine-Grained Access with Database Views
Implementing Column-Level Security with Views
Masking the Column Values Returned to the Application
Using the DECODE Function
Implementing Row-Level Security with Views
Using VPD to Implement Row-Level Security
Summary
7. Caching
Caching Data with Oracle and PHP
Caching Queries on the Database Server
Processing SQL Statements
Using Bind Variables to Increase the Probability of Shared Pool Cache Hits
Using Oracle's Application Contexts for Caching
Creating a Global Application Context
Manipulating Data Held in a Global Context
Resetting Values in a Global Context
Caching Mechanisms Available in PHP
Choosing a Caching Strategy
Caching Function Calls with the PEAR::Cache_Lite Package
Updating Cached Data
Implementing Notification-Based Caching
Using Database Change Notification
Auditing Notification Messages
Building a PL/SQL Procedure Sending Notifications to the Web Server
Performing Configuration Steps Required for Change Notification
Building the Notification Handler
Creating a Query Registration for the Notification Handler
Quick Test
Implementing Notification-Based Caching with PEAR::Cache_Lite
Summary
8. XML-Enabled Applications
Processing XML in PHP/Oracle Applications
Processing XML Data with PHP
Creating XML with the DOM PHP Extension
Querying a DOM Document with XPath
Transforming and Processing XML with XSLT
Performing XML Processing inside the Database
Using Oracle SQL/XML Generation Functions
Moving All the XML Processing into the Database
Storing XML Data in the Database
Performing XSLT Transformations inside the Database
Building PHP Applications on Oracle XML DB
Using Oracle Database for Storing, Modifying, and Retrieving XML Data
Database Storage Options for XML Data in Oracle Database
Using XMLType for Handling XML Data in the Database
Using XML Schemas
Retrieving XML Data
Accessing Relational Data Through XMLType Views
Using XMLType Views
Creating XML Schema-Based XMLType Views
Performing DML Operations on XML Schema-Based XMLType Views
Using Oracle XML DB Repository
Manipulating Repository Resources with PL/SQL
Accessing Repository Resources with SQL
Taking Advantage of Standard Internet Protocols
Handling Transactions
Querying Data with Oracle XQuery
Using XQuery to Construct XML from Relational Data
Breaking up XML into Relational Data
Summary
9. Web Services
Exposing a PHP/Oracle Application as a Web Service Using PHP SOAP Extension
Communicating Using SOAP
What you Need to Build a SOAP Web Service
Building a SOAP Web Service on Top of a PHP/Oracle Application
Building the Business Logic of a Web Service Inside the Database
Creating an XML Schema to Validate Incoming Documents
Generating Unique IDs for Incoming Documents
Creating PL/SQL Subprograms Implementing the Business Logic of the Web Service
Building a PHP Handler Class
Using WSDL
Creating a SOAP Server with PHP's SOAP Extension
Building a SOAP Client to Test the SOAP Server
Adding Security
Implementing Authorization Logic Inside the Database
Creating a PHP Handler Class
Creating a WSDL Document
Creating a Client Script
Summary
10. AJAX-Based Applications
Building AJAX-Based PHP/Oracle Applications
AJAX Interactions
Designing an AJAX/PHP/Oracle Monitoring Application
Building Blocks of an AJAX-Based Solution
Creating the Data Structures
Building the PHP Script that will Process AJAX Requests
Using the XMLHttpRequest JavaScript Object
Putting It All Together
Using Caching to Further Improve Responsiveness
Implementing Master/Detail Solutions with AJAX
Planning a Master/Detail Solution that uses AJAX
Building the Sample Application
Creating the Data Structures
Generating HTML with Oracle XQuery
Sending Post Requests with AJAX
Styling with CSS
Putting It All Together
Summary
A. Installing PHP and Oracle Software
Installing Oracle Database Software
Installing Oracle Database Enterprise/Standard Editions
Installing Oracle Database Express Edition (XE)
Installing Oracle Database XE on Windows
Installing Oracle Database XE on Linux
Installing Apache HTTP Server
Installing PHP
Installing PHP on Windows
Installing PHP on Unix-Like Systems
Testing PHP
Bridging the Gap Between Oracle and PHP
Oracle Instant Client
Enabling the OCI8 Extension in an Existing PHP Installation
Installing SQL*Plus Instant Client
Installing Zend Core for Oracle
Installing Zend Core for Oracle on Windows
Installing Zend Core for Oracle on Linux
Index

PHP Oracle Web Development

Yuli Vasiliev

PHP Oracle Web Development

Data Processing, Security, Caching, XML, Web Services, and AJAX

Copyright © 2007 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, Packt Publishing, nor its dealers or distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: August 2007

Production Reference: 1240707

Published by Packt Publishing Ltd.

32 Lincoln Road

Olton

Birmingham, B27 6PA, UK.

ISBN 978-1-847193-63-6

www.packtpub.com

Cover Image by Vinayak Chittar (<[email protected]>)

Credits

Author

Yuli Vasiliev

Reviewer

Anup Nanda

Acquisition Editor

Priyanka Baruah

Technical Editor

Akshara Aware

Code Testing

Bansari Barot

Editorial Manager

Dipali Chittar

Project Manager

Patricia Weir

Indexer

Bhushan Pangaonkar

Proofreader

Chris Smith

Production Coordinator

Shantanu Zagade

Cover Designer

Shantanu Zagade

About the Author

Yuli Vasiliev is a software developer, freelance author, and a consultant currently specializing in open-source development, Oracle technologies, and service-oriented architecture (SOA). He has over 10 years of software development experience as well as several years of technical writing experience. He has written a series of technical articles for Oracle Technology Network (OTN) and Oracle Magazine.

About the Reviewer

Arup Nanda (<[email protected]>) has been an Oracle DBA since 1993, when the world was slowly turning its attention to a big force to reckon with—Oracle7. But he was not so lucky; he was entrusted with a production Oracle database running Oracle 6. Since then, he has never been out of the Oracle DBA career path—weaving several interesting situations from modeling to performance tuning to backup/recovery and beyond, with lots of gray hairs to document each ORA-600. He has written several articles for publications such as Oracle Magazine and for Oracle Tech Net, he has presented at conferences such as Oracle World and IOUG Live, and he has coauthored four books. In 2003, Oracle chose him as the DBA of the Year. He lives in Danbury, Connecticut, with his wife, Anu, and their son, Anish.

Preface

Oracle Database is the premier commercial database available today, providing support for a wide range of features for professional developers. It's incomparable in terms of performance, reliability, and scalability. With the advent of Oracle Database XE, a lightweight edition of Oracle Database, you now have the option to use an Oracle database for free even in a final product.

PHP is the most popular tool when it comes to building dynamic web applications. Unlike Oracle Database, PHP is an open-source product. The key reasons behind PHP's popularity are its ease of use, short development time, and high performance. Even if you are new to PHP, getting started is pretty simple. When used in a complementary way, though, PHP and Oracle allow you to build high-performance, scalable, and reliable data-driven web applications with minimum effort.

PHP Oracle Web Development: Data processing, Security, Caching, XML, Web Services, and AJAX is a 100% practical book crammed full of easy-to-follow examples. The book provides all the tools a PHP/Oracle developer needs to take advantage of the winning combination. It addresses the needs of a wide spectrum of PHP/Oracle developers, placing the emphasis on the most up-to‑date topics, such as new PHP and Oracle Database features, stored procedure programming, handling transactions, security, caching, web services, and AJAX.

What This Book Covers

Chapter 1 gives an overview of the PHP and Oracle technologies, explaining why you might want to use PHP in conjunction with Oracle.

Chapter 2 covers the basics of using the PHP OCI8 extension to interact with an Oracle database from PHP. It also briefly discusses some popular alternatives to the OCI8 extension to connect to Oracle from within PHP.

Chapter 3 discusses how you can move data processing performed by your PHP/Oracle application into the database by using sophisticated SQL queries, stored PL/SQL subprograms, and database triggers.

Chapter 4 discusses the various mechanisms that can be used to perform transactions with PHP and Oracle.

Chapter 5 examines the object-oriented approach to developing PHP/Oracle applications, as an efficient means to reduce the development time and complexity, and increase the maintainability and flexibility of your applications.

Chapter 6 looks at how to effectively use the security features of both PHP and Oracle together, examining the fundamental aspects of building a secure PHP/Oracle application.

Chapter 7 discusses how to effectively use caching mechanisms available in PHP and Oracle and provides several examples of caching in action.

Chapter 8 explains how to effectively use XML techniques and technologies available in PHP and Oracle when building XML-enabled PHP/Oracle applications.

Chapter 9 shows how to build a SOAP web service exposing the functionality of a PHP/Oracle application, using the PHP SOAP extension and Oracle XML technologies.

Chapter 10 explains how AJAX and some other client-side (browser-side) JavaScript technologies can be used along with the Oracle Database technologies as well as PHP features to improve the responsiveness of PHP/Oracle applications.

Appendix A discusses how to install and configure the PHP and Oracle software components required to follow the book's examples.

Who is This Book For?

Although the book covers only the most popular and up-to-date topic areas on the use of PHP in conjunction with Oracle, the author does not make any assumption about the skill level of the reader. Packed with information in an easy-to-read format, the book is ideal for any PHP developer who deals with Oracle.

Reader Feedback

Feedback from our readers is always welcome. Let us know what you think about this book, what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply drop an email to <[email protected]>, making sure to mention the book title in the subject of your message.

If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com or email <[email protected]>.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer Support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the Example Code for the Book

Visit http://www.packtpub.com/support, and select this book from the list of titles to download any example code or extra resources for this book. The files available for download will then be displayed.

The downloadable files contain instructions on how to use them.

Errata

Although we have taken every care to ensure the accuracy of our contents, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in text or code—we would be grateful if you would report this to us. By doing this you can save other readers from frustration, and help to improve subsequent versions of this book. If you find any errata, report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the Submit Errata link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata added to the list of existing errata. The existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Questions

You can contact us at <[email protected]>if you are having a problem with some aspect of the book, and we will do our best to address it.

Chapter 1. Getting Started with PHP and Oracle

There are two kinds of database-driven applications. Ones that use databases just to store data, performing all the operations on it on the client side; and the others that use databases not only to store data, but also to process it, thus moving data processing to the data. While building the key business logic of a database-driven application inside the database is always a good idea, you should bear in mind that not all the databases available today allow you to put this into practice. However, the Oracle database offers record‑breaking performance, scalability, and reliability. The partnership formed by Oracle and PHP, an open-source scripting language, is an excellent solution for building high-performance, scalable, and reliable data-driven web applications.

This chapter contains technical information that will help you to quickly start developing PHP applications on top of Oracle. It begins with a concise discussion of why you might want to use PHP in conjunction with Oracle, followed by the PHP and Oracle alternatives. Having learned what advantages the PHP/Oracle combination has over its competitors, you might want to see its strengths in action. If you don't have PHP and Oracle database software installed, you can read the What You Need to Start section in this chapter. This section discusses the pieces of software required to run the examples provided in this book. You could also read Appendix A Installing PHP and Oracle Software, which provides a quick-and-dirty guide to installing and configuring these software components to work together in your system.

Once you have all the required pieces of software installed, configured, and working properly, you are ready to build your first PHP/Oracle application. For the sake of simplicity, the sample application provided in this chapter simply obtains the current time from the database and then displays it to the user. In spite of its simplicity, the example demonstrates how to perform two basic things that every PHP/Oracle application must take care of. Specifically, it demonstrates how a PHP application can connect to an Oracle database and then interact with it.

If you have already got your feet wet with PHP/Oracle development, you probably will not be interested in reading this quick-start chapter. If so, you can move to Chapter 2, which discusses how to use PHP's OCI8 extension, providing a common way to interact with Oracle database from PHP.

Why PHP and Oracle?

With Oracle as the back-end database, you can develop and deploy data-driven PHP applications with a powerful, proven, and industry-leading infrastructure, while still taking advantage of PHP's ease of use, short development time, and high performance.

Simplicity and Flexibility

One of the key reasons behind PHP's popularity is its simplicity. So, you don't have to be a PHP guru to start building PHP applications on Oracle. All you need to learn are a few APIs, which allow you to interact with the database and handle the received data. The example discussed later in this chapter will show you how to build a simple PHP/Oracle application by using a few OCI8 functions.

PHP's Object-Oriented features, available since PHP 3 and significantly improved in PHP 5, help you create complex applications easily and quickly. Once a class has been written and debugged, you can reuse it in a number of ways. This allows you to reuse well‑designed pieces of object-oriented code over and over, reducing or eliminating redundant code in your applications. For a detailed discussion of how to combine the power of object-oriented PHP and Oracle, refer to Chapter 5Object-Oriented Approach.

From a PHP developer's perspective, developing PHP/Oracle applications is much easier than developing, PHP/MySQL applications. This is because, in the case of Oracle database, you may implement key business logic of the application on the database side. This not only reduces the amount of PHP code, but also improves the performance and scalability of the entire application.

If you are a PHP developer who tends to think that Oracle database represents a complicated, hard-to-drive mechanism, you should realize that—no matter how complex the Oracle insides may be—what really matters is that Oracle offers a lot of comprehensive tools intended to help you manage database objects and access data stored in the database with minimum effort. Although coverage of all the tools is beyond the scope of this book, the examples provided throughout the book will help you to obtain a good understanding of how Oracle SQL and PL/SQL—two of the most popular Oracle tools—are used to access and manipulate data, metadata, and other database resources.

Performance

Although you can process your application data on the client side in the case of Oracle database, there are many advantages of processing data inside the database. From a performance standpoint, moving processing to the data allows you to:

Reduce the communication overhead between the web server and the databaseConserve the web server resourcesTake advantage of optimizations and indexing techniques provided by the Oracle database

By using triggers and stored procedures, you can develop an application whose business logic resides entirely inside the database. Moving data processing to the database tier is particularly useful if your application is database intensive. This is because your application doesn't need to transfer a large amount of data between tiers while processing data inside the database; instead, it sends only the final product across the wire.

Robustness

Oracle gets high marks when it comes to performance, reliability, and scalability. Building and deploying your PHP applications on Oracle database enables you to combine the power and robustness of Oracle and the ease of use, short development time, and high performance of PHP. By using both of these technologies in a complementary way, you will be able to:

Move key business logic of your application to the dataProtect your application against data lossTake advantage of Oracle security technologiesLeverage the power of object-oriented technologyBuild transactional applicationsDevelop robust XML-enabled applications

All these capabilities make using PHP in conjunction with Oracle a natural choice when it comes to developing mission-critical, highly secure data-driven web applications.

Exploring PHP and Oracle Alternatives

Now that you have a rough idea of what the PHP/Oracle combination has to offer, it is worth taking a moment to familiarize yourself with some other popular combinations that can be used as alternatives to PHP and Oracle. Exploring such alternatives, including their advantages and disadvantages, can help you understand better whether PHP and Oracle best suit your needs or there is another combination that suits your needs better.

Although PHP supports all the major relational databases, including commercial ones such as IBM's DB2 and Microsoft SQL Server, MySQL, an open-source database, is still a popular choice among PHP developers. The major reason behind MySQL's popularity is that it is completely free under the GPL license.

Of those based on Oracle, JSF and Oracle is probably one of the most powerful combinations available. To make JSF/Oracle application development easier, Oracle offers ADF Faces, a fully compliant JSF component library including over 100 JSF components.

PHP and MySQL

MySQL is extremely popular among the open‑source community that uses PHP. There are several reasons behind MySQL's popularity among PHP developers. The most significant ones are as follows:

Completely free under the GPL licenseLow Total Cost of Ownership (TOC)PHP natively supports MySQL—no additional modules are required

All these factors make MySQL a natural choice for web hosts providing support for PHP. However, you should realize that the PHP/MySQL combination is a good solution for small data-driven web applications whereas professional-quality applications require much more.

JSF and Oracle

JavaServer Faces technology is a new server-side user interface (UI) component framework that is quickly becoming the standard web-application framework for J2EE applications. The biggest advantage of JavaServer Faces technology is that it enables web developers to apply the Model-View-Controller (MVC) principle, thus achieving a clean separation between the model and presentation layers of a web application. The entire user interaction with the application is handled by a front-end Faces servlet.

The only disadvantage the JSF and Oracle combination has compared to PHP and Oracle is that JavaServer Faces is a bit more difficult to learn than PHP.