PHP5 AND MYSQL BIBLE

By DAVID JONES

CONTENTS PART I: PHP: THE BASICS CHAPTER 1: WHY PHP AND MYSQL? WHAT IS PHP? WHAT IS MYSQL? THE HISTORY OF PHP THE HISTORY OF MYSQL REASONS TO LOVE PHP AND MYSQL COST EASE OF USE HTML-EMBEDDEDNESS CROSS-PLATFORM COMPATIBILITY NOT TAG-BASED STABILITY SPEED OPEN SOURCE LICENSING MANY EXTENSIONS FAST FEATURE DEVELOPMENT POPULARITY NOT PROPRIETARY STRONG USER COMMUNITIES SUMMARY CHAPTER 2: SERVER-SIDE WEB SCRIPTING STATIC HTML CLIENT-SIDE TECHNOLOGIES SERVER-SIDE SCRIPTING WHAT IS SERVER-SIDE SCRIPTING GOOD FOR? CHAPTER 3: GETTING STARTED WITH PHP HOSTING VERSUS DIY THE ISP OPTION THE SELF-HOSTING OPTION: PROS AND CONS COMPROMISE SOLUTIONS INSTALLING PHP BEFORE YOU CAN BEGIN INSTALLATION PROCEDURES DEVELOPMENT TOOLS CHAPTER 4: ADDING PHP TO HTML YOUR HTML IS ALREADY PHP-COMPLIANT! ESCAPING FROM HTML CANONICAL PHP TAGS SHORT-OPEN (SGML-STYLE) TAGS HELLO WORLD JUMPING IN AND OUT OF PHP MODE INCLUDING FILES CHAPTER 5: SYNTAX AND VARIABLES PHP IS FORGIVING HTML IS NOT PHP PHP’S SYNTAX IS C-LIKE PHP IS WHITESPACE INSENSITIVE PHP IS SOMETIMES CASE SENSITIVE STATEMENTS ARE EXPRESSIONS TERMINATED BY SEMICOLONS BRACES MAKE BLOCKS COMMENTS C-STYLE MULTILINE COMMENTS SINGLE-LINE COMMENTS: # AND // VARIABLES PHP VARIABLES ARE PERL-LIKE DECLARING VARIABLES (OR NOT) ASSIGNING VARIABLES REASSIGNING VARIABLES UNASSIGNED VARIABLES VARIABLE SCOPE YOU CAN SWITCH MODES IF YOU WANT CONSTANTS TYPES IN PHP: DON’T WORRY, BE HAPPY NO VARIABLE TYPE DECLARATIONS AUTOMATIC TYPE CONVERSION TYPES ASSIGNED BY CONTEXT TYPE SUMMARY THE SIMPLE TYPES INTEGERS DOUBLES BOOLEANS NULL STRINGS OUTPUT ECHO AND PRINT VARIABLES AND STRINGS CHAPTER 6: CONTROL AND FUNCTIONS BOOLEAN EXPRESSIONS BOOLEAN CONSTANTS LOGICAL OPERATORS COMPARISON OPERATORS THE TERNARY OPERATOR BRANCHING IF-ELSE SWITCH LOOPING BOUNDED LOOPS VERSUS UNBOUNDED LOOPS WHILE DO-WHILE FOR LOOPING EXAMPLES BREAK AND CONTINUE A NOTE ON INFINITE LOOPS ALTERNATE CONTROL SYNTAXES TERMINATING EXECUTION USING FUNCTIONS RETURN VALUES VERSUS SIDE EFFECTS FUNCTION DOCUMENTATION HEADERS IN DOCUMENTATION FINDING FUNCTION DOCUMENTATION DEFINING YOUR OWN FUNCTIONS WHAT IS A FUNCTION? FUNCTION DEFINITION SYNTAX FUNCTION DEFINITION EXAMPLE FORMAL PARAMETERS VERSUS ACTUAL PARAMETERS ARGUMENT NUMBER MISMATCHES FUNCTIONS AND VARIABLE SCOPE GLOBAL VERSUS LOCAL STATIC VARIABLES EXCEPTIONS FUNCTION SCOPE INCLUDE AND REQUIRE RECURSION CHAPTER 7: PASSING INFORMATION BETWEEN PAGES HTTP IS STATELESS GET ARGUMENTS A BETTER USE FOR GET-STYLE URLS POST ARGUMENTS FORMATTING FORM VARIABLES CONSOLIDATING FORMS AND FORM HANDLERS USING ARRAY VARIABLES WITH FORMS PHP SUPERGLOBAL ARRAYS EXTENDED EXAMPLE: AN EXERCISE CALCULATOR CHAPTER 8: STRINGS STRINGS IN PHP INTERPOLATION WITH CURLY BRACES CHARACTERS AND STRING INDEXES STRING OPERATORS CONCATENATION AND ASSIGNMENT THE HEREDOC SYNTAX STRING FUNCTIONS INSPECTING STRINGS FINDING CHARACTERS AND SUBSTRINGS COMPARISON AND SEARCHING SEARCHING SUBSTRING SELECTION STRING CLEANUP FUNCTIONS STRING REPLACEMENT CASE FUNCTIONS ESCAPING FUNCTIONS PRINTING AND OUTPUT CHAPTER 9: ARRAYS AND ARRAY FUNCTIONS THE USES OF ARRAYS WHAT ARE PHP ARRAYS? CREATING ARRAYS DIRECT ASSIGNMENT THE ARRAY() CONSTRUCT SPECIFYING INDICES USING ARRAY() FUNCTIONS RETURNING ARRAYS RETRIEVING VALUES RETRIEVING BY INDEX THE LIST() CONSTRUCT MULTIDIMENSIONAL ARRAYS INSPECTING ARRAYS DELETING FROM ARRAYS ITERATION SUPPORT FOR ITERATION USING ITERATION FUNCTIONS OUR FAVORITE ITERATION METHOD: FOREACH ITERATING WITH CURRENT() AND NEXT() STARTING OVER WITH RESET() REVERSE ORDER WITH END() AND PREV() EXTRACTING KEYS WITH KEY() EMPTY VALUES AND THE EACH() FUNCTION WALKING WITH ARRAY_WALK() CHAPTER 10: NUMBERS NUMERICAL TYPES MATHEMATICAL OPERATORS ARITHMETIC OPERATORS ARITHMETIC OPERATORS AND TYPES INCREMENTING OPERATORS ASSIGNMENT OPERATORS PRECEDENCE AND PARENTHESES SIMPLE MATHEMATICAL FUNCTIONS RANDOMNESS SEEDING THE GENERATOR EXAMPLE: MAKING A RANDOM SELECTION CHAPTER 11: BASIC PHP GOTCHAS INSTALLATION-RELATED PROBLEMS SYMPTOM: TEXT OF FILE DISPLAYED IN BROWSER WINDOW SYMPTOM: PHP BLOCKS SHOWING UP AS TEXT UNDER HTTP OR BROWSER PROMPTS YOU TO SAVE FILE SYMPTOM: SERVER OR HOST NOT FOUND/PAGE CANNOT BE DISPLAYED RENDERING PROBLEMS SYMPTOM: TOTALLY BLANK PAGE SYMPTOM: DOCUMENT CONTAINS NO DATA SYMPTOM: INCOMPLETE OR UNINTENDED PAGE SYMPTOM: PHP CODE SHOWING UP IN WEB BROWSER FAILURES TO LOAD PAGE SYMPTOM: PAGE CANNOT BE FOUND SYMPTOM: FAILED OPENING [FILE] FOR INCLUSION PARSE ERRORS SYMPTOM: PARSE ERROR MESSAGE THE MISSING SEMICOLON NO DOLLAR SIGNS MODE ISSUES UNESCAPED QUOTES UNTERMINATED STRINGS OTHER PARSE ERROR CAUSES FILE PERMISSIONS SYMPTOM: HTTP ERROR 403 MISSING INCLUDES SYMPTOM: INCLUDE WARNING UNBOUND VARIABLES SYMPTOM: VARIABLE NOT SHOWING UP IN PRINT STRING SYMPTOM: NUMERICAL VARIABLE UNEXPECTEDLY ZERO CAUSES OF UNBOUND VARIABLES OVERWRITTEN VARIABLES SYMPTOM: THE VARIABLE HAS A VALID VALUE, JUST NOT THE ONE YOU EXPECTED FUNCTION PROBLEMS SYMPTOM: CALL TO UNDEFINED FUNCTION MY_FUNCTION() SYMPTOM: CALL TO UNDEFINED FUNCTION () SYMPTOM: CALL TO UNDEFINED FUNCTION ARRAY() SYMPTOM: CANNOT REDECLARE MY_FUNCTION() SYMPTOM: WRONG PARAMETER COUNT MATH PROBLEMS SYMPTOM: DIVISION-BY-ZERO WARNING SYMPTOM: UNEXPECTED ARITHMETIC RESULT SYMPTOM: NAN (OR NAN) TIME-OUTS PART II: PHP AND MYSQL CHAPTER 12: CHOOSING A DATABASE FOR PHP WHAT IS A DATABASE? WHY A DATABASE? MAINTAINABILITY AND SCALABILITY PORTABILITY AVOIDING AWKWARD PROGRAMMING SECURITY N-TIER ARCHITECTURE POTENTIAL DOWNSIDE: PERFORMANCE CHOOSING A DATABASE YOU MAY NOT HAVE A CHOICE FLAT-FILE, RELATIONAL, OBJECT-RELATIONAL ODBC/JDBC VERSUS NATIVE API SWAPPABLE DATABASES ADVANCED FEATURES TO LOOK FOR A GUI SUBQUERY SELECT INTO COMPLEX JOINS THREADING AND LOCKING TRANSACTIONAL DATABASES PROCEDURES AND TRIGGERS INDEXES FOREIGN KEYS AND INTEGRITY CONSTRAINTS DATABASE REPLICATION PHP-SUPPORTED DATABASES DATABASE ABSTRACTION (OR NOT) OUR FOCUS: MYSQL CHAPTER 13: SQL TUTORIAL RELATIONAL DATABASES AND SQL SQL STANDARDS THE WORKHORSES OF SQL SELECT INSERT UPDATE DELETE DATABASE DESIGN PRIVILEGES AND SECURITY SETTING DATABASE PERMISSIONS KEEP DATABASE PASSWORDS OUTSIDE THE WEB TREE USE TWO LAYERS OF PASSWORD PROTECTION LEARN TO MAKE BACKUPS CHAPTER 14: MYSQL DATABASE ADMINISTRATION MYSQL LICENSING INSTALLING MYSQL: MOVING TO VERSION 4 PREINSTALL CONSIDERATIONS DOWNLOADING MYSQL INSTALLING MYSQL ON WINDOWS INSTALLING MYSQL ON UNIX INSTALLING MYSQL ON MAC OS X POST-INSTALLATION HOUSEKEEPING BASIC MYSQL CLIENT COMMANDS MYSQL USER ADMINISTRATION LOCAL DEVELOPMENT STANDALONE WEB SITE SHARED-HOSTING WEB SITE PHPMYADMIN BACKUPS REPLICATION RECOVERY MYISAMCHK MYSQLCHECK CHAPTER 15: PHP/MYSQL FUNCTIONS CONNECTING TO MYSQL MAKING MYSQL QUERIES FETCHING DATA SETS GETTING DATA ABOUT DATA MULTIPLE CONNECTIONS BUILDING IN ERROR CHECKING CREATING MYSQL DATABASES WITH PHP MYSQL DATA TYPES MYSQL FUNCTIONS CHAPTER 16: DISPLAYING QUERIES IN TABLES HTML TABLES AND DATABASE TABLES ONE-TO-ONE MAPPING EXAMPLE: A SINGLE-TABLE DISPLAYER THE SAMPLE TABLES IMPROVING THE DISPLAYER COMPLEX MAPPINGS MULTIPLE QUERIES VERSUS COMPLEX PRINTING A MULTIPLE-QUERY EXAMPLE A COMPLEX PRINTING EXAMPLE CREATING THE SAMPLE TABLES CHAPTER 17: BUILDING FORMS FROM QUERIES HTML FORMS BASIC FORM SUBMISSION TO A DATABASE SELF-SUBMISSION EDITING DATA WITH AN HTML FORM TEXT AND TEXTAREA CHECKBOX RADIO CHAPTER 18: PHP/MYSQL EFFICIENCY CONNECTIONS — REDUCE, REUSE, RECYCLE A BAD EXAMPLE: ONE CONNECTION PER STATEMENT MULTIPLE RESULTS DON’T NEED MULTIPLE CONNECTIONS PERSISTENT CONNECTIONS INDEXING AND TABLE DESIGN INDEXING EVERYTHING INCLUDING THE KITCHEN SINK OTHER TYPES OF INDEXES TABLE DESIGN MAKING THE DATABASE WORK FOR YOU IT’S PROBABLY FASTER THAN YOU ARE A BAD EXAMPLE: LOOPING, NOT RESTRICTING CREATING DATE AND TIME FIELDS FINDING THE LAST INSERTED ROW CHAPTER 19: PHP/MYSQL GOTCHAS NO CONNECTION PROBLEMS WITH PRIVILEGES BROKEN SQL STATEMENTS MISSPELLED NAMES COMMA FAULTS UNQUOTED STRING ARGUMENTS TOO LITTLE DATA, TOO MUCH DATA SPECIFIC SQL FUNCTIONS MYSQL_AFFECTED_ROWS() VERSUS MYSQL_NUM_ROWS() MYSQL_RESULT() OCIFETCH() DEBUGGING AND SANITY CHECKING PART III: ADVANCED FEATURES AND TECHNIQUES CHAPTER 20: OBJECT-ORIENTED PROGRAMMING WITH PHP WHAT IS OBJECT-ORIENTED PROGRAMMING? THE SIMPLE IDEA ELABORATION: OBJECTS AS DATATYPES ELABORATION: INHERITANCE ELABORATION: ENCAPSULATION ELABORATION: CONSTRUCTORS AND DESTRUCTORS TERMINOLOGY BASIC PHP CONSTRUCTS FOR OOP DEFINING CLASSES ACCESSING MEMBER VARIABLES CREATING INSTANCES CONSTRUCTOR FUNCTIONS INHERITANCE OVERRIDING FUNCTIONS CHAINED SUBCLASSING MODIFYING AND ASSIGNING OBJECTS SCOPING ISSUES ADVANCED OOP FEATURES PUBLIC, PRIVATE, AND PROTECTED MEMBERS INTERFACES ABSTRACT CLASSES SIMULATING CLASS FUNCTIONS CALLING PARENT FUNCTIONS AUTOMATIC CALLS TO PARENT CONSTRUCTORS SIMULATING METHOD OVERLOADING SERIALIZATION INTROSPECTION FUNCTIONS FUNCTION OVERVIEW EXAMPLE: CLASS GENEALOGY EXAMPLE: MATCHING VARIABLES AND DB COLUMNS EXAMPLE: GENERALIZED TEST METHODS EXTENDED EXAMPLE: HTML FORMS GOTCHAS AND TROUBLESHOOTING SYMPTOM: MEMBER VARIABLE HAS NO VALUE IN MEMBER FUNCTION SYMPTOM: PARSE ERROR, EXPECTING T_VARIABLE OOP STYLE IN PHP NAMING CONVENTIONS ACCESSOR FUNCTIONS DESIGNING FOR INHERITANCE CHAPTER 21: ADVANCED ARRAY FUNCTIONS TRANSFORMATIONS OF ARRAYS RETRIEVING KEYS AND VALUES FLIPPING, REVERSING, AND SHUFFLING MERGING, PADDING, SLICING, AND SPLICING STACKS AND QUEUES TRANSLATING BETWEEN VARIABLES AND ARRAYS SORTING PRINTING FUNCTIONS FOR VISUALIZING ARRAYS CHAPTER 22: STRING AND REGULAR EXPRESSION FUNCTIONS TOKENIZING AND PARSING FUNCTIONS WHY REGULAR EXPRESSIONS? REGEX IN PHP AN EXAMPLE OF POSIX-STYLE REGEX REGULAR EXPRESSION FUNCTIONS PERL-COMPATIBLE REGULAR EXPRESSIONS EXAMPLE: A SIMPLE LINK-SCRAPER THE REGULAR EXPRESSION USING THE EXPRESSION IN A FUNCTION ADVANCED STRING FUNCTIONS HTML FUNCTIONS HASHING USING MD5 STRINGS AS CHARACTER COLLECTIONS STRING SIMILARITY FUNCTIONS CHAPTER 23: FILESYSTEM AND SYSTEM FUNCTIONS UNDERSTANDING PHP FILE PERMISSIONS FILE READING AND WRITING FUNCTIONS FILE OPEN FILE READ CONSTRUCTING FILE DOWNLOADS BY USING FPASSTHRU() FILE WRITE FILE CLOSE FILESYSTEM AND DIRECTORY FUNCTIONS FEOF FILE_EXISTS FILESIZE NETWORK FUNCTIONS SYSLOG FUNCTIONS DNS FUNCTIONS SOCKET FUNCTIONS DATE AND TIME FUNCTIONS IF YOU DON’T KNOW EITHER DATE OR TIME IF YOU’VE ALREADY DETERMINED THE DATE/TIME/TIMESTAMP CALENDAR CONVERSION FUNCTIONS CHAPTER 24: SESSIONS, COOKIES, AND HTTP WHAT’S A SESSION? SO WHAT’S THE PROBLEM? WHY SHOULD YOU CARE? HOME-GROWN ALTERNATIVES IP ADDRESS HIDDEN VARIABLES COOKIE-BASED HOMEGROWN SESSIONS HOW SESSIONS WORK IN PHP MAKING PHP AWARE OF YOUR SESSION PROPAGATING SESSION VARIABLES WHERE IS THE DATA REALLY STORED? SAMPLE SESSION CODE SESSION FUNCTIONS CONFIGURATION ISSUES COOKIES THE SETCOOKIE() FUNCTION EXAMPLES DELETING COOKIES READING COOKIES REGISTER_GLOBALS AND VARIABLE OVERWRITING COOKIE PITFALLS SENDING HTTP HEADERS EXAMPLE: REDIRECTION EXAMPLE: HTTP AUTHENTICATION HEADER GOTCHAS CHAPTER 25: TYPES AND TYPE CONVERSIONS TYPE ROUND-UP RESOURCES WHAT ARE RESOURCES? HOW TO HANDLE RESOURCES TYPE TESTING ASSIGNMENT AND COERCION INTEGER OVERFLOW FINDING THE LARGEST INTEGER CHAPTER 26: ADVANCED USE OF FUNCTIONS VARIABLE NUMBERS OF ARGUMENTS DEFAULT ARGUMENTS ARRAYS AS MULTIPLE-ARGUMENT SUBSTITUTES MULTIPLE ARGUMENTS IN PHP4 AND ABOVE CALL-BY-VALUE CALL-BY-REFERENCE VARIABLE FUNCTION NAMES AN EXTENDED EXAMPLE CHAPTER 27: MATHEMATICS MATHEMATICAL CONSTANTS TESTS ON NUMBERS BASE CONVERSION EXPONENTS AND LOGARITHMS TRIGONOMETRY ARBITRARY PRECISION (BC) AN ARBITRARY-PRECISION EXAMPLE CONVERTING CODE TO ARBITRARY-PRECISION CHAPTER 28: PEAR WHAT IS PEAR? THE PEAR PACKAGE SYSTEM A SAMPLING OF PEAR PACKAGES HOW THE PEAR DATABASE WORKS THE PACKAGE MANAGER USING THE MANAGER PHP FOUNDATION CLASSES (PFC) PHP EXTENSION CODE LIBRARY (PECL) THE PEAR CODING STYLE INDENTING, WHITESPACE, AND LINE LENGTH FORMATTING CONTROL STRUCTURES FORMATTING FUNCTIONS AND FUNCTION CALLS CHAPTER 29: SECURITY POSSIBLE ATTACKS SITE DEFACEMENT ACCESSING SOURCE CODE READING ARBITRARY FILES RUNNING ARBITRARY PROGRAMS VIRUSES AND OTHER E-CRITTERS E-MAIL SAFETY REGISTER GLOBALS FILE UPLOADS ENCRYPTION PUBLIC-KEY ENCRYPTION SINGLE-KEY ENCRYPTION ENCRYPTING COOKIES HASHING DIGITALLY SIGNING FILES SECURE SOCKETS LAYER FYI: SECURITY WEB SITES CHAPTER 30: CONFIGURATION VIEWING ENVIRONMENT VARIABLES UNDERSTANDING PHP CONFIGURATION COMPILE-TIME OPTIONS CGI COMPILE-TIME OPTIONS APACHE CONFIGURATION FILES THE PHP.INI FILE IMPROVING PHP PERFORMANCE CHAPTER 31: EXCEPTIONS AND ERROR HANDLING ERROR HANDLING IN PHP5 ERRORS AND EXCEPTIONS THE EXCEPTION CLASS THE TRY/CATCH BLOCK THROWING AN EXCEPTION DEFINING YOUR OWN EXCEPTION SUBCLASSES LIMITATIONS OF EXCEPTIONS IN PHP OTHER METHODS OF ERROR HANDLING NATIVE PHP ERRORS DEFINING AN ERROR HANDLER TRIGGERING A USER ERROR LOGGING AND DEBUGGING CHAPTER 32: DEBUGGING GENERAL TROUBLESHOOTING STRATEGIES CHANGE ONE THING AT A TIME TRY TO ISOLATE THE PROBLEM SIMPLIFY, THEN BUILD UP CHECK THE OBVIOUS DOCUMENT YOUR SOLUTION AFTER FIXING, RE-TEST A MENAGERIE OF BUGS COMPILE-TIME BUGS RUN-TIME BUGS LOGICAL BUGS USING WEB SERVER LOGS APACHE IIS PHP ERROR REPORTING AND LOGGING ERROR REPORTING ERROR LOGGING CHOOSING WHICH ERRORS TO REPORT OR LOG ERROR-REPORTING FUNCTIONS DIAGNOSTIC PRINT STATEMENTS USING PRINT_R() USING SYSLOG() LOGGING TO A CUSTOM LOCATION USING ERROR_LOG() VISUAL DEBUGGING TOOLS AVOIDING ERRORS IN THE FIRST PLACE FINDING ERRORS WHEN THEY OCCUR CHAPTER 33: STYLE THE USES OF STYLE READABILITY PHPDOC FILE AND VARIABLE NAMES UNIFORMITY OF STYLE MAINTAINABILITY AVOID MAGIC NUMBERS FUNCTIONS INCLUDE FILES OBJECT WRAPPERS CONSIDER USING VERSION CONTROL ROBUSTNESS UNAVAILABILITY OF SERVICE UNEXPECTED VARIABLE TYPES EFFICIENCY AND CONCISENESS EFFICIENCY: ONLY THE ALGORITHM MATTERS EFFICIENCY OPTIMIZATION TIPS CONCISENESS: THE DOWNSIDE CONCISENESS TIPS HTML MODE OR PHP MODE? MINIMAL PHP MAXIMAL PHP MEDIUM PHP THE HEREDOC STYLE SEPARATING CODE FROM DESIGN CASCADING STYLE SHEETS IN PHP TEMPLATES AND PAGE CONSISTENCY PART IV: CONNECTIONS CHAPTER 34: POSTGRESQL WHY CHOOSE POSTGRESQL? WHY OBJECT-RELATIONAL ANYWAY? INSTALLING POSTGRESQL LINUX INSTALLATION BUT IS IT A DATABASE YET? DOWN TO REAL WORK PHP AND POSTGRESQL THE CARTOONS DATABASE CHAPTER 35: ORACLE WHEN DO YOU NEED ORACLE? MONEY OTHER RIVALROUS RESOURCES HUGE DATA SETS LOTS OF BIG FORMULAIC WRITES OR DATA MUNGING TRIGGERS LEGAL LIABILITY BOTTOM LINE: TWO-YEAR OUTLOOK ORACLE AND WEB ARCHITECTURE SPECIALIZED TEAM MEMBERS SHARED DEVELOPMENT DATABASES LIMITED SCHEMA CHANGES TOOLS (OR LACK THEREOF) REPLICATION AND FAILOVER DATA CACHING USING OCI8 FUNCTIONS ESCAPING STRINGS PARSING AND EXECUTING MEMORY MANAGEMENT ASK FOR NULLS FETCHING ENTIRE DATA SETS ALL CAPS TRANSACTIONALITY STORED PROCEDURES AND CURSORS PROJECT: POINT EDITOR PROJECT: BATCH EDITOR CHAPTER 36: PEAR DATABASE FUNCTIONS THE DEBATABLE VIRTUE OF DATABASE INDEPENDENCE NATIVE DATABASE CONNECTIVITY DATABASE ABSTRACTION PEAR DB CONCEPTS DATA SOURCE NAMES (DSNS) CONNECTION QUERY ROW RETRIEVAL DISCONNECTION A COMPLETE EXAMPLE PEAR DB FUNCTIONS MEMBERS OF THE DB CLASS MEMBERS OF THE DB_COMMON CLASS MEMBERS OF THE DB_RESULT CLASS CHAPTER 37: E-MAIL UNDERSTANDING E-MAIL TCP/IP SERVER MAIL TRANSFER AGENT, AKA SMTP SERVER MAIL SPOOL MAIL USER AGENT, AKA LOCAL MAIL CLIENT MAIL-RETRIEVAL PROGRAM, AKA POP/IMAP SERVER MAILING LIST MANAGER RECEIVING E-MAIL WITH PHP IMPLEMENTING FROM SCRATCH MODIFYING OTHER PEOPLE’S PHP COSMETIC CHANGES SENDING E-MAIL WITH PHP WINDOWS CONFIGURATION UNIX CONFIGURATION THE MAIL FUNCTION MORE FUN WITH PHP E-MAIL SENDING MAIL FROM A FORM SENDING MAIL FROM A DATABASE SENDING ATTACHMENTS WITH MIME MAIL A CUSTOM PHP MAIL APPLICATION SENDING MAIL FROM A CRONJOB E-MAIL GOTCHAS CHAPTER 38: PHP AND JAVASCRIPT OUTPUTTING JAVASCRIPT WITH PHP DUELING OBJECTS PHP DOESN’T CARE WHAT IT OUTPUTS WHERE TO USE JAVASCRIPT PHP AS A BACKUP FOR JAVASCRIPT STATIC VERSUS DYNAMIC JAVASCRIPT DYNAMICALLY GENERATED FORMS PASSING DATA BACK TO PHP FROM JAVASCRIPT CHAPTER 39: PHP AND JAVA PHP FOR JAVA PROGRAMMERS SIMILARITIES DIFFERENCES JAVA SERVER PAGES AND PHP GUIDE TO THIS BOOK INTEGRATING PHP AND JAVA THE JAVA SAPI THE JAVA EXTENSION THE JAVA OBJECT POTENTIAL GOTCHAS THE SKY’S THE LIMIT CHAPTER 40: PHP AND XML WHAT IS XML? WORKING WITH XML DOCUMENTS AND DTDS THE STRUCTURE OF A DTD VALIDATING AND NONVALIDATING PARSERS SAX VERSUS DOM DOM USING DOM XML DOM FUNCTIONS SAX USING SAX SAX OPTIONS SAX FUNCTIONS SIMPLEXML API USING SIMPLEXML SIMPLEXML FUNCTIONS A SAMPLE XML APPLICATION CHAPTER 41: WEB SERVICES THE END OF PROGRAMMING AS WE KNOW IT THE UGLY TRUTH ABOUT DATA MUNGING BRUTAL SIMPLICITY REST, XML-RPC, SOAP, .NET REST XML-RPC SOAP NET SERVICES CURRENT ISSUES WITH WEB SERVICES FAT AND SLOW POTENTIALLY HEAVY LOAD STANDARDS HIDE AND SEEK WHO PAYS AND HOW? PROJECT: A REST CLIENT PROJECT: A SOAP SERVER AND CLIENT CHAPTER 42: GRAPHICS YOUR OPTIONS HTML GRAPHICS CREATING IMAGES USING GD WHAT IS GD? IMAGE FORMATS AND BROWSERS CHOOSING VERSIONS INSTALLATION GD CONCEPTS IMAGES AND HTTP EXAMPLE: FRACTAL IMAGES SYMPTOM: COMPLETELY BLANK IMAGE SYMPTOM: HEADERS ALREADY SENT SYMPTOM: BROKEN IMAGE PART V: CASE STUDIES CHAPTER 43: WEBLOGS WHY WEBLOGS? THE SIMPLEST WEBLOG ADDING AN HTML EDITING TOOL ADDING DATABASE CONNECTIVITY CHANGES AND ADDITIONS CHAPTER 44: USER AUTHENTICATION DESIGNING A USER-AUTHENTICATION SYSTEM AVOIDING COMMON SECURITY ISSUES TURN OFF REGISTER_GLOBALS CHECK FOR STRING LENGTH AND SAFETY ONE-WAY ENCRYPT PASSWORDS REGISTRATION LOGIN/LOGOUT USER TOOLS FORGOTTEN PASSWORD CHANGING SENSITIVE USER DATA EDIT NON-SENSITIVE USER DATA ADMINISTRATOR TOOLS AUTHORIZATION: BASIC AUTH, COOKIE, DATABASE, AND IP LOGIN AS USER CHAPTER 45: A USER-RATING SYSTEM INITIAL DESIGN DOMAIN: A QUOTATION SITE POSSIBLE RATINGS LINKING RATINGS WITH CONTENT COLLECTING VOTES AGGREGATING RESULTS EXTENSIONS AND ALTERNATIVES CHAPTER 46: A TRIVIA GAME CONCEPTS USED IN THIS CHAPTER THE GAME OUR VERSION SAMPLE SCREENS THE RULES PLAYING THE GAME YOURSELF THE CODE CODE FILES CREATING THE DATABASE GENERAL DESIGN CONSIDERATIONS SEPARATION OF CODE AND DISPLAY PERSISTENCE OF DATA EXCEPTION HANDLING CHAPTER 47: CONVERTING STATIC HTML SITES PLANNING THE BIG UPGRADE THE BABY AND THE BATHWATER TECHNICAL ASSESSMENT REDESIGNING THE USER INTERFACE PLANNING A NEW DATABASE SCHEMA DUMPING DATA INTO A DATABASE DATA-MASSAGING DATA DUMPING HARVESTING DATA TEMPLATING PERFORMANCE AND CACHING CACHING CHAPTER 48: DATA VISUALIZATION WITH VENN DIAGRAMS SCALED VENN DIAGRAMS THE TASK OUTLINE OF THE CODE NECESSARY TRIGONOMETRY PLANNING THE DISPLAY SIMPLIFYING ASSUMPTIONS DETERMINING SIZE AND SCALE DISPLAY VISUALIZING A DATABASE TRYING IT OUT EXTENSIONS

ISBN978-93-7790-380-0
Copyright Year2027
Pages990
Price$275.99
LanguageEnglish
FormatPDF