CART

(0) items

Instant Cgi/Perl,9780072133875

Instant Cgi/Perl

by
ISBN13:

9780072133875

ISBN10:
0072133872
Format:
Paperback
Pub. Date:
5/1/2001
Publisher(s):
McGraw-Hill Osborne Media
List Price: $49.99
More New and Used
from Private Sellers
Starting at $4.28

Rent Book

We're Sorry
Sold Out

Used Book

We're Sorry
Sold Out

eBook

We're Sorry
Not Available

New Book

We're Sorry
Sold Out

Summary

The ultimate collection of ready-to-run code and expert techniques for CGI/Perl developers! This sourcebook explains how to configure, customize, run, and debug CGI/Perl applications. Plus, the bonus CD-ROM contains all the code from the book--ready to use.

Table of Contents

Part 1 Understanding the Applications 1(439)
Introduction
3(20)
How Should You Read this Book?
4(2)
Structure of the Book as a Whole
4(1)
Reading this Book by Example
5(1)
Why Was this Book Written?
6(17)
The Very Beginning
6(1)
The First Web Application: WebBBS
6(3)
The Birth of the Selena Sol Script Archive
9(1)
Applying Classical Rigor to the Applications
9(4)
Instant Web Scripts with CGI/Perl
13(2)
Limitations of the Model
15(2)
Object-Oriented Design Was the Answer!
17(1)
The extropia Application Development Toolkit (ADT)
18(1)
Instant CGI/Perl
19(4)
The Basics of Installation
23(76)
The 12-Step Checklist
24(1)
Prepare Your Site
24(4)
Obtain the Installation File
28(2)
Advanced Source Code Access with Sourceforge
28(2)
Unpack the Application Archive File
30(10)
Unpacking on UNIX
31(3)
Unpacking on Windows and Mac
34(1)
What You've Got When You Unpack
35(5)
Assign File Permissions
40(4)
Permissions for extropia Applications
42(2)
Modify the Perl Path Line
44(3)
Perl Version Backward Compatibility
46(1)
Configure the Application
47(1)
Modify Application Look and Feel
48(1)
Run the Application
49(1)
Debug the Application
50(19)
Sherlock Holmes and the Case of the Broken CGI Application
50(2)
The Virtue of Nothingness
52(1)
CGI Debugging is a State of Mind
53(1)
The Scientific Methods and the Nitty Gritty of Debugging
53(6)
What the Application Sees
59(2)
Advanced Error Hunting
61(8)
Review the Security
69(29)
What is the Worst that Can Happen?
70(1)
Security and Web Servers
71(1)
CGI Applications
71(1)
Reviewing Applications
72(1)
Writing Safe CGI Applications
73(1)
Stopping Snoopers
74(3)
Writable Directories
77(1)
User Input
78(1)
Cross Site Scripting Problem
79(1)
Taint Mode
80(14)
Security and eXtropia Applications
94(2)
Moving the Datafiles Directory
96(2)
Testing and Registration
98(1)
In Summary
98(1)
Configuring eXtropia Applications with the Application Executable
99(66)
What is an Application Executable?
100(1)
What Is an ADT Component?
100(2)
Configuring an Entire Application
102(1)
Understanding the Application Executable Preamble
102(6)
Execute Perl
103(1)
Import Supporting Perl Modules
104(1)
Define the Library Path for eXtropia Modules
105(1)
Remove Libraries for mod-perl Compliance
106(1)
Import eXtropia Modules
107(1)
Instantiate Helper Objects
107(1)
Standardize Incoming Form Data
108(1)
How to Modify and Test Configuration Options
108(6)
Spotting Configuration Errors
109(3)
How to Modify List-Based Configuration Parameters
112(1)
Understanding Reference-Based Configuration Parameters
113(1)
The Standard Configuration Options for eXtropia Applications
114(49)
Session and Session Manager Configuration
115(3)
Authentication Configuration
118(4)
Authentication Manager Configuration
122(7)
Data Handler Manager Configuration
129(5)
Datasource Configuration
134(7)
Logging Configuration
141(2)
Mail Configuration
143(5)
Encryption Configuration
148(1)
View Configuration
149(5)
Filter Confinguration
154(2)
Action Handler Configuration
156(7)
Putting it All Together
163(2)
Controlling Application Workflow with Action Handlers
165(36)
Action Handler Basics
166(9)
Understanding the Action Handler Preamble
167(1)
Subscribing to @Action_Handle_Action_Parms with the_rearrangeAsHash()Method
168(2)
Defining the Logic of an Action
170(5)
Understanding the Default Action Handlers
175(18)
Understanding CheckForLogicalConfigurationErrorsAction
176(4)
Understanding DisplaySessionTimeoutErrorAction
180(2)
Understanding DownloadFileAction
182(1)
Understanding DisplayAddFormAction
182(2)
Understanding DisplayAddRecordConfirmationAction
184(3)
Understanding ProcessAddRequestAction
187(3)
Understanding Modify and Delete Action Handlers
190(1)
Understanding the Custom Search Action Handlers
191(2)
Understanding Extropia::App
193(3)
The loadViewAndDisplay( )Method
193(1)
The handleIncomingData( )Method
194(1)
The getDataHandlerErrors( )Method
195(1)
The setNextViewToDisplay( )Method
195(1)
The setAdditionalViewDisplayParams( ) Methods
195(1)
The sendMail() Method
196(1)
The getDate() Method
196(1)
The getCurrentTime() Method
196(1)
Understanding Extropia::App::DBApp
196(5)
The loadData() Method
197(1)
The addRecord() Method
198(1)
The modifyRecord() Method
198(1)
The deleteRecord() Method
199(2)
Defining Application Look and Feel with Views
201(66)
Basic View Introduction
202(3)
Defining the Package Name
203(1)
Importing Supporting Modules
203(1)
Declaring View Inheritance
203(1)
Defining the display( ) Method
203(2)
Views and Style
205(4)
Embedding Applications with the Embed Filter
209(1)
Views Within Other Views
210(2)
Error Messages
212(1)
Sticky Forms
213(3)
Maintaining Application State
216(2)
Adding Your Own Custom View Display Parameters
218(2)
Walking Through Record Sets
220(2)
Understanding the Standard Views
222(45)
The Default extropia Views
222(1)
Understanding ApplicationSubMenuView
223(4)
Understanding ErrorDisplayView
227(2)
Understanding InputWidgetDisplayView
229(5)
Understanding PageTopView
234(3)
Understanding PageBottomView
237(1)
Understanding SessionTimeoutView
237(2)
Understanding AddRecordView
239(3)
Understanding AddRecordConfirmationView
242(3)
Understanding AddAcknowledgementView
245(2)
Understanding AddEventEmailView
247(1)
Understanding BasicDataView
248(7)
Understanding the Delete-Specific Views
255(1)
Understanding DetailsView
256(6)
Understanding HiddenAdminFieldsView and URLAdminFieldsView
262(3)
Understanding the Modification Views
265(1)
Understanding the Search-Related Views
265(2)
Advanced Application Configuration
267(52)
Getting the Basic Screen
268(6)
Understanding the Application Executable
268(3)
Understanding SubmitAnswerView
271(3)
Adding a Datasource and Extra Fields
274(8)
Understanding Changes to the Application Executable
274(3)
Using a Relational Database
277(5)
Adding Action Handlers for Performing an Addition to the Datasource
282(4)
Understanding Changes to the Application Executable
283(3)
Adding Confirmation and Acknowledgments
286(6)
Understanding Changes to the Application Executable
286(4)
Understanding the Changes to SubmitAnswerView
290(2)
Data Handling and Data Handling Errors
292(7)
Understanding Changes to the Application Executable
292(4)
Understanding the Changes to SubmitAnswerView
296(3)
Sending Mail from the Application
299(5)
Understanding the Changes to SubmitAnswerView
300(4)
Session and Authentication
304(8)
Advanced Setup Issues
312(7)
Loading Setup Files
312(2)
Enhancing eXtropia Application Performance
314(5)
Simple Form Processing
319(36)
Form-Processing Functionality
321(4)
Logging From Submissions
321(2)
Authentication
323(1)
Data Handling
323(1)
Confirmations and Acknowledgements
324(1)
Comment Forms
325(16)
The Application Executable
327(3)
Custom Action Handlers
330(5)
Custom Views
335(6)
Download and Jump Forms
341(4)
The Application Executable
342(2)
Custom Action Handlers
344(1)
Custom Views
344(1)
Tell-a-Friend Forms
345(4)
The Application Executable
346(3)
Custom Action Handlers
349(1)
Custom Views
349(1)
Online Survey Form
349(6)
The Application Executable
351(2)
Custom Action Handlers
353(1)
Custom Views
353(2)
Database Frontends
355(40)
Database Functionality
356(4)
Searching, Sorting, and Viewing Data
356(2)
Adding, Modifying, and Deleting Data with the Administrative Interface
358(2)
Guestbook
360(13)
Viewing Guestbook Entries
362(1)
Adding Guestbook Entries
362(2)
The Application Executable
364(3)
Custom Views
367(6)
Address Book
373(5)
The Application Executable
375(3)
Custom Action Handlers
378(1)
Custom Views
378(1)
Document Manager
378(4)
The Application Executable
380(1)
Custom Action Handlers
381(1)
Custom Views
382(1)
News Publisher
382(9)
Understanding the News Client
383(1)
The Application Executable
383(2)
Custom Action Handlers
385(1)
Custom Views
385(6)
Understanding the News Manager Administrator
391(4)
The Application Executable
391(2)
Custom Action Handlers
393(1)
Custom Views
393(2)
Process-Management Applications
395(44)
Project Tracker
396(4)
The Application Executable
396(4)
Custom Views
400(1)
Custom Action Handlers
400(1)
Mailing List Manager
400(27)
List Additions
402(1)
List Deletions
403(2)
Sending Mail to the Entire List
405(1)
The Application Executable
406(3)
Custom Views
409(10)
Custom Action Handlers
419(8)
Bug Tracker
427(12)
The Application Executable
427(3)
Custom Views
430(6)
Custom Actions
436(3)
Part 2 Understanding the Application Development Toolkit 439(530)
Application Toolkit Architecture
441(98)
Flexibility
442(1)
Flexibility in Code Reuse
443(2)
Flexibility in the Application Development Toolkit
445(1)
Engineering Web Applications
445(3)
Application Architecture
448(10)
Make Use of Existing Code
448(1)
Code Must Run on All Perl Environments
449(1)
Take Advantage of Perl Acceleration
450(1)
Provide Security
451(1)
Gracefully Handle Errors
452(1)
Provide a Modular Application Design
453(5)
eXtropia Objects
458(4)
References and Data Structures
462(9)
References 101
463(1)
Cookies
463(1)
What Cookies Have to Do with Perl
464(2)
Using References
466(4)
Representing Data Structures Using References
470(1)
References Summary
471(1)
Object-Oriented Programming
471(27)
Procedural Programming
473(1)
Limitations of Procedural Programming
474(2)
Object-Oriented Programming Is Born
476(1)
Objects
477(1)
More Object-Oriented Abstraction
478(1)
Encapsulation
479(1)
Application Programming Interface (API)
480(2)
Inheritance
482(1)
Polymorphism
483(2)
Writing Objects in Perl
485(2)
Creating an Object
487(11)
Interfaces and Drivers
498(5)
Interface/Driver Template
503(16)
Coding Conventions
503(6)
How to Write an Interface and Driver
509(2)
Interface Template
511(3)
Driver Template
514(5)
Using Extropia::Base
519(10)
Accepting Named and Positional Parameters
522(3)
Assigning Defaults
525(1)
Loading a Driver
526(1)
Working with Complex Data Structures
526(1)
Working with Errors
527(2)
Handling Errors
529(7)
Summary
536(3)
Designing User Interfaces with Views and Filters
539(28)
Views Inherit from Other Views
541(1)
Views Can Contain Other Views
542(1)
Views Return Data
543(1)
Views Can be Filtered
544(1)
Views Can Be Cached
545(3)
Using Views and Filters
548(8)
Views
548(3)
Filters
551(3)
The_loadViewAndDisplay () Convenience Method
554(2)
How to Write a View
556(5)
Creating a View Module
557(2)
Sample View Code Walkthrough
559(1)
Creating a View Module Summary
560(1)
How to Write a Filter Driver
561(1)
Implementing a Filter
561(1)
Understanding the View Module
562(5)
View Architecture
564(1)
View Methods Walkthrough
565(2)
Processing Incoming Data with DataHandler
567(70)
Validation
569(1)
Untainting
570(1)
Data Transformation
570(1)
Using Data Handler Managers
571(42)
Using Data Handler Manager Summary
577(5)
Creating a Data Handler Manager
582(1)
Validation of Data
582(10)
Untainting Data
592(13)
Transforming Data
605(7)
Putting All the Handlers Together
612(1)
Using Data Handlers
613(2)
How to Write a Data Handler Manager
615(3)
Implementing a Data Handler Manager
616(2)
How to Write a Data Handler Driver
618(12)
Implementing a Data Handler Driver
618(12)
Base Data Handler Manager Architecture
630(3)
Base Data Handler Architecture
633(4)
Locking Resources with Extropia::Lock
637(24)
Why Not Use flock ()?
638(1)
Locking Resources Versus Files
638(4)
Using Locks
642(14)
Creating a Lock
645(1)
Lock Driver Definitions
646(8)
Locking and Unlocking Resources
654(1)
Dealing with Lock Errors
655(1)
Clean up After Locking a Resource
656(1)
How to Write a Lock Driver
656(3)
Implementing a Lock
657(2)
Base Lock Architecture
659(2)
Protecting Data with Extropia::Encrypt
661(32)
Encryption 101
663(9)
Traditional Two-Way Encryption
665(3)
Symmetric Encryption
668(1)
Asymmetric Encryption
669(1)
Signing Data
669(1)
One-Way Encryption
670(2)
Using the Encrypt Modules
672(18)
Creating an Encryptor
677(1)
Encrypt Driver Definitions
678(7)
Encrypting Data
685(1)
Comparing Encrypted Data
685(2)
Configuring PGP Encryption
687(3)
How to Write an Encrypt Driver
690(3)
Implementing an Encrypt Driver
691(2)
Generating Keys with KeyGenerator
693(18)
Key Generation Strategies
694(4)
POSIX
694(1)
Random
694(2)
Counter
696(1)
Process
697(1)
Composite
697(1)
Summary
698(1)
Using KeyGenerator
698(11)
Key Generator Drivers
699(3)
Creating a Key Generator
702(1)
Key Generator Driver Definitions
703(5)
Generating a Key
708(1)
How to Write a Key Generator Driver
709(2)
Implementing a Key Generator
709(2)
Generating Unique Files with UniqueFile
711(10)
Generating Unique Filenames
713(3)
Filenames that Are Transient
713(1)
Filenames that Are Not Easily Guessed
714(1)
Filenames that Contain a Counter-Based ID
714(1)
Filenames that Contain Application Information
715(1)
Using Extropia::UniqueFile to Handle These Situations
715(1)
Using Unique Files
716(5)
Creating a Unique File
717(2)
Removing a Unique File
719(1)
Other Unique File Operations
719(1)
Finding a Temporary Directory
719(1)
Summary
720(1)
Sending Email from Applications Using Extropia::Mail
721(14)
Using Mail
722(10)
Creating a Mailer
723(1)
Mail Driver Definitions
723(3)
Sending Mail
726(3)
Installing Drivers
729(3)
How to Write a Mail Driver
732(3)
Implementing a Mailer
732(3)
Maintaining State with Session and SessionManager
735(56)
Session 101
736(7)
Method 1: HTML From Variables
737(1)
Method 2: The PATH-INFO Environment Variable
738(1)
Method 3: Cookies
739(1)
Summary
740(1)
Sessions
741(1)
Session Managers
742(1)
Using Sessions
743(27)
Creating a Session
749(2)
Session Driver Definitions
751(13)
Getting and Setting Attributes
764(1)
An Alternative View: Using a Session Hash
765(1)
Session Metadata Management
766(1)
Data and Lock Policies
767(3)
Using a Session Manager
770(10)
Creating a Session Manager
772(1)
Session Manager Driver Definitions
773(6)
Creating Sessions
779(1)
Obtaining a List of Currently Active Sessions
779(1)
Removing Old Sessions
779(1)
How to Write a Session Driver
780(9)
Implementing a Session
780(9)
How to Write a Session Manager Driver
789(2)
Implementing a Session Manager
789(1)
Conclusion
790(1)
Accessing Data Anywhere with Extropia::DataSource
791(94)
Data Abstraction
794(1)
DataSource Terminology
795(3)
Using DataSource
798(35)
Creating a Datasource
800(16)
Using the DataSource Query Language
816(3)
Adding Data
819(2)
Deleting Data
821(2)
Updating Data
823(2)
Batching Changes
825(4)
Retrieving Data
829(4)
Using RecordSets
833(16)
Retrieving Data
836(2)
Getting Information About the Whole RecordSet
838(1)
Other RecordSet Methods
839(4)
Selecting the Right Type of RecordSet for the Job
843(4)
Putting It All Together: RecordSets and CGI
847(2)
Using DataType and Sort Objects
849(4)
Using DataTypes
850(2)
Using Sorts
852(1)
Writing Custom Drivers
853(24)
Architectural Overview
854(1)
Writing a DataSource Driver
855(17)
Writing a RecordSet Driver
872(1)
Writing a Sort Object
872(1)
Writing a DataType Object
873(4)
Understanding DataSource and RecordSet
877(8)
Adding a Record: Behind the Scenes
878(1)
Searching: Behind the Scenes
878(7)
Implementing Web Application Security with Extropia::Auth
885(64)
Authentication and Authorization
886(14)
Extropia::Auth Architecture
887(1)
Auth Management
888(2)
Auth
890(1)
Auth Coaching
891(2)
Auth Scenarios
893(7)
Using Auth Manager
900(15)
Creating an Auth Manager
901(1)
Auth Manager Driver Definitions
902(10)
Authenticating Users
912(1)
Authorizing Users
912(1)
Obtaining User Information
913(1)
Setting Cached User Information
914(1)
Refreshing Cached User Information
914(1)
Logging Out
915(1)
Using Auth
915(16)
Creating an Auth Object
916(1)
Auth Driver Definitions
917(11)
Authenticating Users
928(1)
Registering Users
929(1)
Searching for Users
929(1)
Authorizing Users
930(1)
Obtaining User Information
930(1)
Setting Cached User Information
930(1)
Refreshing Cached User Information
931(1)
Using Auth::Cache
931(8)
Creating an Auth::Cache Object
932(1)
Auth::Cache Driver Definitions
932(5)
Obtaining User Information
937(1)
Setting Cached User Information
937(1)
Authorizing Users
937(1)
Managing the Group Cache
937(1)
Clearing the Cache
938(1)
How to Write an Auth Manager Driver
939(2)
Implementing an Auth Manager
939(2)
How to Write an Auth Driver
941(5)
Implementing an Auth Driver
941(5)
How to Write an Auth::Cache Driver
946(3)
Implementing an Auth::Cache Driver
946(3)
Logging with Extropia::Log
949(20)
Using Log
950(14)
Creating a Log
952(1)
Log Driver Definitions
953(10)
Writing to the Log
963(1)
How to Write a Log Driver
964(3)
Implementing a Log
964(1)
Extropia::Log::File Code Walkthrough
965(2)
Understanding the Base Log Module
967(2)
Index 969


Please wait while the item is added to your cart...