search for books and compare prices
Tables of Contents for Instant Cgi/Perl
Chapter/Section Title
Page #
Page Count
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