CS 318 - Week 13 Lab - 4-22-13 Intro to PHP -- ******** MAY 9, Thursday, 3:30 - 5:00 - SH 120 - you are invited to attend the CS 435 - Software Engineering - final project demos! ******** ******** EMAIL me if you're interested in Art/CS small experimental directed study developing either an iOS or Android app ******** ...back to PHP intro! * note that the course text DOES have MUCH info on -- in Chapter 5 AND within a number of the subsequent chapters! * created by Rasmus Lerdorf in 1995 originally stood for "Personal Home Page" but when it was expanded into the language it is today, it was changed to stand for: PHP Hypertext Preprocessor (yes, it IS a recursive acronym) * PHP is server-side -- executed on the application tier; * you embed snippets of code within HTML, like JavaScript, but those snippets are executed on the application tier "server-side", like JSP IF I UNDERSTAND CORRECTLY, it is INTERPRETED on the application tier (rather than compiled) * much of its syntax id borrowed from C, Java, Perl, but also has some unique PHP-specific features/style thrown in; (because of its Perl influence, I get a UNIX-shell-like vibe at times, too) * our CS 318 course-coding-style PHP tags: <?php ?> we'll also use its expression tag: <?= ?> ^ yes, you CAN use this like the JSP expression tag... (but can ONLY use expression tag if short tags are enabled by your PHP preprocessor on your server -- beware?) * you DO need to end PHP files (or HTML with PHP embedded) with the suffix .php BUT you can place this anywhere in your public_html directory tree; * if I want to get to a dreaded PHP "hello world" page -- I might quickly throw 3 more concepts out there: * variables don't have types, a value of any type can just be thrown into a variable -- (values have types, variables don't) * scalar variables start with $ and so: <?php $answer = 6*7; ?> <?= $answer ?> * let's go ahead and throw in server-side includes, also -- require include require_once include_once require/require_once will cause a FATAL error if the file to be included CAN'T be included include/include_once will cause a WARNING message if the file to be included cannot be included (but it'll try valiantly to go on) ...choose the appropriate function based on how vital the included file is! * the _once variants will ONLY include that file once, even if several files happen to be including the same thing... * strings can be surrounded by ' ' or " " BUT! variables within " " WILL be replaced by their value, variables within ' ' will NOT; (and you can escape special characters with a \) * can print with echo or print ...but text suggests AVOIDING these when possible and use <?= ?> expression tags instead ^ BUT if DON'T know server it'll be running on -- print and echo and here docs etc. are SAFER (not all servers have short tags enabled) * you DO have many familiar arithmetic operators -- + * / - ++ -- >= <= < > == != === <-- equal to AND the same type! !== <-- not equal to OR not the same type! += *= -= /= = is assignment and && or || ...DIFFERENT LEVELS of operator precedence! * supports 4 scalar data types: integer, float, string, boolean also supports 2 non-scalar types: arrays and objects * (many non-boolean values are treated as false in a boolean context -- e.g., 0 is treated as false -- see the php manual for more) * functions in PHP: function funct_name( parameters ) { // function code return; or return value; } * return; is optional IF your function isn't to return anything * varplay.php includes an if-else, so you can see that's very C-flavored; ...likewise for other basic control structures; ...(although there are also ALTERNATE syntaxes for these too, oy!) <-- with labelled ends instead of { } * WHEN PHP is being used to handle a request... there are some associative arrays set up and populated for you: $_GET["parametername"] will have the value for a name parametername from a form whose method is "get" $_POST["parametername"] will have the value for a name parametername from a form whose method is "post" * PHP provides some handy functions to help with fighting XSS --- strip_tags($blah) will return a version of its argument with HTML tags REMOVED htmlspecialchars($blah) will return a version of its argument with potentially-harmful characters replaced with their HTML display-equivalents $_SESSION["attributename"] will have the value for a prevously-set-up session attribute named attributename ...BUT there is setup you need to for sessions to work, more on that on Wednesday;