Introduction.
Organization of the Book
I. WORKING WITH PHP FOR GENERAL WEB DEVELOPMENT.
1. Basic PHP Development.
How PHP Scripts Work
Basic PHP Syntax
Basic PHP Data Types
Variable Manipulation
Control Structures
Logical Control Structures
Repetition Control Structures
Embedding Control Structures
User-Defined Functions
Dynamic Variables and Functions
Dynamic Variables
Dynamic Functions
Multiple File PHP Scripts
References
Variable References
References Used in Functions
Strings in PHP
Speed and Efficiency of String Expressions
Comparing Strings
Advanced String Comparison
Comparing Phrases
Search and Replacement
Replacing Strings
Formatting Strings
Alternatives to printf()
Strings and Locales
Formatting Currency Values
Formatting Date and Time Values
Summary
2. Arrays.
Basic Arrays
Array Syntax
Working with Arrays
Implementing Arrays
Using an Array as a List
Using Arrays as a Sortable Table
Using Arrays as a Lookup Table
Converting from Strings to Arrays and Back
More Array Materials
3. Regular Expressions.
The Basics of Regular Expressions
Limitations of the Basic Syntax
POSIX Regular Expressions
Perl-Compatible Regular Expressions (PCRE)
Named Patterns
PCRE Modifiers
A Few Final Words
4. Working with Forms in PHP.
HTML Forms 101
How Forms Are Created
HTML Widgets
Working with Form Submissions in PHP
Retrieving Form Values
Using Arrays as Widget Names
Handling File Uploads
Summary
5. Advanced Form Techniques.
Data Manipulation and Conversion
Dealing with Magic Quotes
Data Conversion and Encoding
Serialization
Form Data Integrity
Securing Hidden Elements
The protect() Function
The validate() Function
Putting protect() and validate() into Action
Form Processing
Basic Form Processing and Validation
General-Purpose Form Validation
Separation of Presentation from Validation
Summary
6. Persistent Data Using Sessions and Cookies.
HTTP Cookies
Cookie Features and Restrictions
How Cookies Are Implemented
Implementing Cookies in Your Scripts
PHP Sessions
Basic Session Use
Session Propagation
Advanced Sessions
Custom Session Handling
Customizing Session Support
Summary
7. Using Templates.
The What and Why of Templates
if (window.amznJQ) { amznJQ.onCompletion('amznJQ.criticalFeature', function() { var precacheDetailImages = function(imageUrls, pids) { function transformUrl(imgUrl, pid) { var suffix = '._SL500_AA300_.jpg', defaultApparel = '._AA300_.jpg', imgUrlSplit = imgUrl.split("._"); if (imgUrlSplit.length) { var prefix = imgUrlSplit[0]; if ((!pid && storeName == "books") || pid == "books_display_on_website") { if (imgUrl.match("PIsitb-sticker-arrow")){ var OUID = imgUrl.substr(imgUrl.indexOf('_OU'), 6); var lookInsideSticker = '._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20'+ OUID +'.jpg'; urls.push(prefix + lookInsideSticker); } else { urls.push(prefix + suffix); } } else if ((!pid && storeName == "apparel") || pid == "apparel_display_on_website") { urls.push(prefix + "._SX342_.jpg"); urls.push(prefix + "._SY445_.jpg"); } else if ((!pid && storeName == "shoes") || pid == "shoes_display_on_website") { urls.push(prefix + "._SX395_.jpg"); urls.push(prefix + "._SY395_.jpg"); } else { urls.push(prefix + suffix); } } }; var urls = [], numImgsPreload = Math.min(6, imageUrls.length), storeName = "english-books"; for (var i = 0; i < numImgsPreload; i++){ var currPid = (pids && pids.length) ? pids[i] : ""; transformUrl(imageUrls[i], currPid); } for (var j = 0; j < urls.length; j++) { var img = new Image(); img.src = urls[j]; } }; var win = jQuery(window); var feature = jQuery("#purchaseShvl"); var shvlPresent = feature.length > 0 ? 1:0; var lastCheck = 0; var pending = 0; var onScrollPrecache = function() { if (pending) { return; } var lastCheckDiff = new Date().getTime() - lastCheck; var checkDelay = (lastCheckDiff < 200 ? 200 - lastCheckDiff : 10); pending = 1; var u = function() { if(shvlPresent && (win.scrollTop() + win.height() > feature.offset().top + 200)) { var p = precacheDetailImages, $ = jQuery; if (p) { var selector = "#purchaseButtonWrapper"; var imgElems = $(selector).find("a > div > img"); var pgs, imgs = [], i = imgElems.length; while (i-- > 0) { imgs[i] = $(imgElems[i]).attr('src'); } p(imgs,pgs); } // unbind listening on scroll once pre-caching completed $(window).unbind('scroll', onScrollPrecache); return; } pending = 0; //precache not execute yet, wait next invoke lastCheck = new Date().getTime(); }; setTimeout(u, checkDelay); return; }; jQuery(window).bind('scroll', onScrollPrecache); }); }
|