[{"data":1,"prerenderedAt":2982},["ShallowReactive",2],{"content-page:\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post":3,"content-page-quiz:none":1496,"content-navigation-index":1508},{"id":4,"title":5,"audience":6,"body":7,"contentType":1481,"course":1482,"description":1483,"estimateBasis":1484,"estimatedDiscussionMinutes":1485,"estimatedLiveMinutes":1486,"estimatedTotalMinutes":1487,"extension":1488,"meta":1489,"module":176,"navigation":1490,"order":1491,"path":1492,"presentationRole":1493,"promptAssist":1494,"revision":1495,"semester":1496,"seo":1497,"status":1498,"stem":1499,"syllabus":1496,"tags":1500,"updated":1502,"videoDuration":1503,"videoId":1504,"videoLink":1505,"videoTitle":1506,"week":176,"__hash__":1507},"content\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post.md","Intro To Forms And GET\u002FPOST","student",{"type":8,"value":9,"toc":1443},"minimark",[10,54,97,173,230,294,366,395,443,499,532,557,583,621,656,682,815,875,995,1069,1124,1139,1204,1227,1261,1325,1357],[11,12,15,19,23],"slide",{"id":13,"level":14},"main-idea","2",[16,17,18],"h2",{"id":13},"Main Idea",[20,21,22],"p",{},"Forms collect values, but the method controls how those values travel",[24,25,26,30,33,41,51],"ul",{},[27,28,29],"li",{},"GET sends values in the URL query string",[27,31,32],{},"POST sends values in the request body (visible in dev tools)",[27,34,35,36,40],{},"Every submitted control needs a ",[37,38,39],"code",{},"name"," attribute",[27,42,43,44,47,48],{},"PHP checks that the submitted key exists before reading from ",[37,45,46],{},"$_GET"," or ",[37,49,50],{},"$_POST",[27,52,53],{},"User-provided text must be escaped before display",[11,55,57,60],{"id":56,"level":14},"practice-workspace",[16,58,59],{"id":56},"Practice Workspace",[24,61,62,68,74,77,87,90],{},[27,63,64,65],{},"Work inside ",[37,66,67],{},"public_html\u002Fm03\u002Flessons\u002F",[27,69,70,71],{},"Lesson branch: ",[37,72,73],{},"Module03-Forms-Intro",[27,75,76],{},"Create the folder if it is missing",[27,78,79,80,83,84],{},"Use separate files such as ",[37,81,82],{},"search.php"," and ",[37,85,86],{},"contact.php",[27,88,89],{},"Keep GET and POST examples separate so behavior is easy to compare",[27,91,92,93,96],{},"When each page works, run ",[37,94,95],{},"git status",", stage the changed files, and commit",[11,98,100,103,163],{"id":99,"level":14},"form-anatomy",[16,101,102],{"id":99},"Form Anatomy",[104,105,109,118],"two-col",{"gap":106,"left-width":107,"right-width":108},"lg","1.1fr","0.9fr",[110,111,113],"template",{"v-slot:left":112},"",[114,115],"code-snippet",{"language":116,"src":117},"html","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fform-anatomy-01.html",[110,119,120,125],{"v-slot:right":112},[121,122,124],"h3",{"id":123},"key-pieces","Key Pieces",[24,126,127,133,139,144,153,156],{},[27,128,129,132],{},[37,130,131],{},"method",": how values are sent",[27,134,135,138],{},[37,136,137],{},"action",": where values are sent",[27,140,141,143],{},[37,142,39],{}," attribute: submitted key",[27,145,146,83,149,152],{},[37,147,148],{},"id",[37,150,151],{},"for",": connect label to input",[27,154,155],{},"Submit button sends the form",[27,157,158,159,162],{},"See the slide below for other common ",[37,160,161],{},"\u003Cform>"," attributes",[164,165,167],"admonition",{"type":166},"note",[20,168,169,170,172],{},"In this class, most forms submit back to the same PHP page, so they usually omit the ",[37,171,137],{}," attribute. That is not always the best design for larger applications, but it keeps each page focused on one request flow.",[11,174,177,184,187,224],{"id":175,"level":176},"common-form-attributes","3",[121,178,180,181,183],{"id":179},"other-common-form-attributes","Other Common ",[37,182,161],{}," Attributes",[20,185,186],{},"Use these when the whole form needs different browser behavior:",[24,188,189,195,206,212,218],{},[27,190,191,194],{},[37,192,193],{},"autocomplete",": allow or block browser autofill for the form",[27,196,197,200,201],{},[37,198,199],{},"novalidate",": skip browser validation and let server checks handle errors\n",[24,202,203],{},[27,204,205],{},"This will be useful when gathering evidence in some future homeworks",[27,207,208,211],{},[37,209,210],{},"target",": choose where the response opens, such as a new tab",[27,213,214,217],{},[37,215,216],{},"enctype",": encoding for submitted data, required for file uploads",[27,219,220,223],{},[37,221,222],{},"accept-charset",": character encodings the server can accept",[20,225,226,227,229],{},"Most forms only need ",[37,228,131],{},"; add the others when the behavior is needed",[11,231,233,237,283],{"id":232,"level":14},"get-vs-post",[16,234,236],{"id":235},"get-vs-post-and-_request","GET Vs POST and $_REQUEST",[104,238,240,262],{"gap":106,"left-width":239,"right-width":239},"1fr",[110,241,242,246],{"v-slot:left":112},[121,243,245],{"id":244},"get","GET",[24,247,248,251,254,257],{},[27,249,250],{},"Values in URL",[27,252,253],{},"Bookmarkable and shareable",[27,255,256],{},"Good for search, filters, sort, and page number",[27,258,259,260],{},"PHP reads ",[37,261,46],{},[110,263,264,268],{"v-slot:right":112},[121,265,267],{"id":266},"post","POST",[24,269,270,273,276,279],{},[27,271,272],{},"Values in request body",[27,274,275],{},"Not bookmarkable by value",[27,277,278],{},"Use when values should stay out of the address bar or may exceed a short URL, roughly 2048 characters",[27,280,259,281],{},[37,282,50],{},[20,284,285,288,289,47,291,293],{},[37,286,287],{},"$_REQUEST"," can include values from both GET and POST; GET is read first, then POST so duplicate keys between them would take POST as priority. This course usually reads ",[37,290,46],{},[37,292,50],{}," directly so the source of each value stays clear.",[11,295,297,301],{"id":296,"level":14},"build-a-simple-search-page",[16,298,300],{"id":299},"build-a-simple-get-search-page","Build A Simple GET Search Page",[104,302,303,309],{"gap":106,"left-width":239,"right-width":239},[110,304,305],{"v-slot:left":112},[114,306],{"language":307,"src":308},"php","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fbuild-the-search-page-02.php",[110,310,311,315,319,323],{"v-slot:right":112},[121,312,314],{"id":313},"save-as","Save As",[114,316],{"language":317,"src":318},"text","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fsave-as-03.txt",[121,320,322],{"id":321},"what-to-notice","What To Notice",[24,324,325,330,340,353],{},[27,326,327,329],{},[37,328,46],{},": PHP array for URL query values",[27,331,332,335,336,339],{},[37,333,334],{},"?? \"\"",": use an empty string if ",[37,337,338],{},"term"," is missing",[27,341,342,345,346,83,349,352],{},[37,343,344],{},"htmlspecialchars",": converts characters such as ",[37,347,348],{},"\u003C",[37,350,351],{},">"," so they display as text instead of being interpreted as markup",[27,354,355,356,358,359,362,363],{},"The form field's ",[37,357,39],{}," attribute, ",[37,360,361],{},"name=\"term\"",", becomes ",[37,364,365],{},"$_GET[\"term\"]",[11,367,369,372,375,378,383,386,389,392],{"id":368,"level":176},"submit-and-read-the-url",[121,370,371],{"id":368},"Submit And Read The URL",[20,373,374],{},"Open:",[114,376],{"language":317,"src":377},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fsubmit-and-read-the-url-04.txt",[20,379,380,381],{},"Submit ",[37,382,307],{},[20,384,385],{},"Expected URL:",[114,387],{"language":317,"src":388},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fsubmit-and-read-the-url-05.txt",[20,390,391],{},"Expected page output:",[114,393],{"language":317,"src":394},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fsubmit-and-read-the-url-06.txt",[11,396,398,401,404,414,440],{"id":397,"level":176},"when-get-fits",[121,399,400],{"id":397},"When GET Fits",[20,402,403],{},"Use GET when the value describes the page being viewed",[20,405,406,407,410,411],{},"NOTE: the ",[37,408,409],{},"?"," in the URL denotes a list of query parameters separated by ",[37,412,413],{},"&",[24,415,416,422,428,434],{},[27,417,418,419],{},"Search: ",[37,420,421],{},"?term=php",[27,423,424,425],{},"Filter: ",[37,426,427],{},"?category=books",[27,429,430,431],{},"Sort: ",[37,432,433],{},"?sort=price&order=asc",[27,435,436,437],{},"Page: ",[37,438,439],{},"?page=2&limit=10",[20,441,442],{},"Avoid GET for values you would not want copied from the address bar; for example, any sensitive data",[11,444,446,450],{"id":445,"level":14},"build-the-contact-page",[16,447,449],{"id":448},"build-the-post-contact-page","Build The POST Contact Page",[104,451,454,459],{"gap":106,"left-width":452,"right-width":453},"1.15fr","0.85fr",[110,455,456],{"v-slot:left":112},[114,457],{"language":307,"src":458},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fbuild-the-contact-page-01.php",[110,460,461,464,467,470],{"v-slot:right":112},[121,462,314],{"id":463},"save-as-1",[114,465],{"language":317,"src":466},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fsave-as-02.txt",[121,468,322],{"id":469},"what-to-notice-1",[24,471,472,478,487,493],{},[27,473,474,477],{},[37,475,476],{},"isset($_POST[\"name\"])",": confirms the field exists before reading it",[27,479,480,483,484],{},[37,481,482],{},"$_POST[\"name\"]",": value sent by the input with ",[37,485,486],{},"name=\"name\"",[27,488,489,492],{},[37,490,491],{},"trim",": removes extra spaces; useful for user input",[27,494,495,498],{},[37,496,497],{},"required",": browser asks for a value before allowing submission",[11,500,502,505,507,510,515,517,520,522,525],{"id":501,"level":176},"submit-and-check-post",[121,503,504],{"id":501},"Submit And Check POST",[20,506,374],{},[114,508],{"language":317,"src":509},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fsubmit-and-check-03.txt",[20,511,380,512],{},[37,513,514],{},"Sam",[20,516,391],{},[114,518],{"language":317,"src":519},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fsubmit-and-check-04.txt",[20,521,385],{},[114,523],{"language":317,"src":524},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fsubmit-and-check-05.txt",[20,526,527,528,531],{},"No ",[37,529,530],{},"?name=Sam"," query string should appear",[11,533,535,538,541],{"id":534,"level":176},"post-safety-boundary",[121,536,537],{"id":534},"POST Safety Boundary",[20,539,540],{},"POST changes where values travel, but it does not make them trusted",[24,542,543,546,551,554],{},[27,544,545],{},"Use HTTPS before treating submitted values as private in transit",[27,547,548,549],{},"Validate on the server even when the form has ",[37,550,497],{},[27,552,553],{},"Escape user-provided text before displaying it",[27,555,556],{},"Later lessons add stricter checks such as duplicate detection and CSRF protection",[11,558,560,563,566,569],{"id":559,"level":176},"safe-output",[121,561,562],{"id":559},"Safe Output",[20,564,565],{},"User input should not be echoed directly",[114,567],{"language":307,"src":568},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fsafe-output-06.php",[24,570,571,574,577,580],{},[27,572,573],{},"Converts HTML-like characters to safe text",[27,575,576],{},"Prevents the browser from treating user input as markup",[27,578,579],{},"Useful any time user-provided text is displayed",[27,581,582],{},"Keep display escaping separate from validation",[11,584,586,590],{"id":585,"level":176},"request-method-guard",[121,587,589],{"id":588},"check-before-reading","Check Before Reading",[104,591,592,597],{"gap":106,"left-width":107,"right-width":108},[110,593,594],{"v-slot:left":112},[114,595],{"language":307,"src":596},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Frequest-method-guard-07.php",[110,598,599,602],{"v-slot:right":112},[20,600,601],{},"Why this matters:",[24,603,604,607,613,618],{},[27,605,606],{},"First page load has no submitted field yet",[27,608,609,612],{},[37,610,611],{},"isset"," avoids undefined array key warnings",[27,614,615,616,40],{},"The check matches the form field's ",[37,617,39],{},[27,619,620],{},"Fetching after the check keeps the code easier to trace",[11,622,624,627],{"id":623,"level":176},"safer-post-reading",[121,625,626],{"id":623},"Safer POST Reading",[104,628,629,634],{"gap":106,"left-width":452,"right-width":453},[110,630,631],{"v-slot:left":112},[114,632],{"language":307,"src":633},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fsafer-post-reading-08.php",[110,635,636,639],{"v-slot:right":112},[20,637,638],{},"Use this pattern when the rule is clear:",[24,640,641,647,650,653],{},[27,642,643,644,646],{},"Check ",[37,645,611],{}," before reading the field",[27,648,649],{},"Trim the submitted value",[27,651,652],{},"Validate based on the expected format",[27,654,655],{},"Escape only when displaying output",[11,657,659,662,665,679],{"id":658,"level":176},"when-post-fits",[121,660,661],{"id":658},"When POST Fits",[20,663,664],{},"Use POST when the submitted values belong to an action instead of the page address",[24,666,667,670,673,676],{},[27,668,669],{},"Contact message",[27,671,672],{},"Sign-in attempt",[27,674,675],{},"Create, update, or delete request",[27,677,678],{},"File upload",[20,680,681],{},"POST keeps values out of the address bar, but server-side validation and safe output are still required",[11,683,685,688,691,809],{"id":684,"level":14},"checking-submitted-values",[16,686,687],{"id":684},"Checking Submitted Values",[20,689,690],{},"Use these checks before deciding whether a submitted value is ready to read or validate.",[692,693,694,695,694,711,694,731],"table",{},"\n  ",[696,697,698,699,698,703,698,706,698,709,694],"colgroup",{},"\n    ",[700,701],"col",{"style":702},"width: 20%",[700,704],{"style":705},"width: 34%",[700,707],{"style":708},"width: 26%",[700,710],{"style":702},[712,713,698,714,694],"thead",{},[715,716,717,718,717,722,717,725,717,728,698],"tr",{},"\n      ",[719,720,721],"th",{},"Check",[719,723,724],{},"True When",[719,726,727],{},"Use For",[719,729,730],{},"Caveat",[732,733,698,734,698,757,698,791,694],"tbody",{},[715,735,717,736,717,742,717,748,717,751,698],{},[737,738,739],"td",{},[37,740,741],{},"isset($val)",[737,743,744,745],{},"Exists and not ",[37,746,747],{},"null",[737,749,750],{},"Guard request keys",[737,752,753,756],{},[37,754,755],{},"\"\""," is still set",[715,758,717,759,717,764,717,783,717,786,698],{},[737,760,761],{},[37,762,763],{},"empty($val)",[737,765,766,767,770,771,770,774,770,777,780,781],{},"Missing, blank, ",[37,768,769],{},"0",", ",[37,772,773],{},"\"0\"",[37,775,776],{},"false",[37,778,779],{},"[]",", or ",[37,782,747],{},[737,784,785],{},"Required text after trim",[737,787,788,790],{},[37,789,773],{}," counts empty",[715,792,717,793,717,798,717,803,717,806,698],{},[737,794,795],{},[37,796,797],{},"is_null($val)",[737,799,800,801],{},"Exactly ",[37,802,747],{},[737,804,805],{},"Known variables",[737,807,808],{},"Missing keys still warn",[20,810,811,812,814],{},"For form fields, start with ",[37,813,611],{},", then fetch, trim, and validate based on what the field should contain.",[11,816,818,821],{"id":817,"level":14},"input-types-and-attributes",[16,819,820],{"id":817},"Input Types And Attributes",[104,822,823,828],{"gap":106,"left-width":107,"right-width":108},[110,824,825],{"v-slot:left":112},[114,826],{"language":116,"src":827},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Finput-types-and-attributes-07.html",[110,829,830,833],{"v-slot:right":112},[20,831,832],{},"Start with these attributes:",[24,834,835,841,846,851,857,863,868],{},[27,836,837,840],{},[37,838,839],{},"type",": browser control and basic format hint",[27,842,843,845],{},[37,844,39],{}," attribute: key sent to PHP",[27,847,848,850],{},[37,849,148],{},": target for labels, CSS, and JavaScript",[27,852,853,856],{},[37,854,855],{},"value",": starting or selected value",[27,858,859,862],{},[37,860,861],{},"placeholder",": hint text, not a label replacement",[27,864,865,867],{},[37,866,497],{},": browser-side required check",[27,869,870,871,874],{},"See the slides below for other common ",[37,872,873],{},"\u003Cinput>"," attributes and form overrides",[11,876,878,883],{"id":877,"level":176},"common-input-attributes",[121,879,180,881,183],{"id":880},"other-common-input-attributes",[37,882,873],{},[104,884,885,931],{"gap":106,"left-width":239,"right-width":239},[110,886,887,890],{"v-slot:left":112},[20,888,889],{},"Identity and value:",[24,891,892,897,903,909,919],{},[27,893,894,896],{},[37,895,193],{},": browser autofill hint",[27,898,899,902],{},[37,900,901],{},"autofocus",": focus this control when the page loads",[27,904,905,908],{},[37,906,907],{},"size",": visible width of a text-like control",[27,910,911,914,915,918],{},[37,912,913],{},"list",": connects to a ",[37,916,917],{},"\u003Cdatalist>"," suggestion list",[27,920,921,924,925,927,928,930],{},[37,922,923],{},"form"," attribute: connects to a ",[37,926,161],{}," by ",[37,929,148],{}," when outside it",[110,932,933,936],{"v-slot:right":112},[20,934,935],{},"Rules and states:",[24,937,938,944,950,956,968,977,983,989],{},[27,939,940,943],{},[37,941,942],{},"disabled",": cannot edit and does not submit",[27,945,946,949],{},[37,947,948],{},"readonly",": cannot edit but can submit",[27,951,952,955],{},[37,953,954],{},"checked",": starts checkbox or radio selected",[27,957,958,770,961,770,964,967],{},[37,959,960],{},"min",[37,962,963],{},"max",[37,965,966],{},"step",": numeric\u002Fdate boundaries",[27,969,970,770,973,976],{},[37,971,972],{},"minlength",[37,974,975],{},"maxlength",": text length boundaries",[27,978,979,982],{},[37,980,981],{},"pattern",": regular expression format check",[27,984,985,988],{},[37,986,987],{},"accept",": allowed file types for file inputs",[27,990,991,994],{},[37,992,993],{},"multiple",": allow more than one value where supported",[11,996,998,1001,1007],{"id":997,"level":176},"form-override-attributes",[121,999,1000],{"id":997},"Form Override Attributes",[20,1002,1003,1004,1006],{},"Some submit controls can override the parent ",[37,1005,161],{}," settings.",[104,1008,1009,1050],{"gap":106,"left-width":239,"right-width":239},[110,1010,1011,1014],{"v-slot:left":112},[20,1012,1013],{},"Common overrides:",[24,1015,1016,1022,1032,1038,1044],{},[27,1017,1018,1021],{},[37,1019,1020],{},"formaction",": submit to a different URL",[27,1023,1024,1027,1028,47,1030],{},[37,1025,1026],{},"formmethod",": use a different method, such as ",[37,1029,244],{},[37,1031,266],{},[27,1033,1034,1037],{},[37,1035,1036],{},"formenctype",": change how form data is encoded",[27,1039,1040,1043],{},[37,1041,1042],{},"formtarget",": open the response in a different browsing context",[27,1045,1046,1049],{},[37,1047,1048],{},"formnovalidate",": skip browser validation for that submit",[110,1051,1052,1055],{"v-slot:right":112},[20,1053,1054],{},"Use carefully:",[24,1056,1057,1060,1063,1066],{},[27,1058,1059],{},"Overrides usually belong on submit buttons",[27,1061,1062],{},"They can make a form harder to trace",[27,1064,1065],{},"Most course forms should keep one clear submit path",[27,1067,1068],{},"Prefer separate forms when behavior is meaningfully different",[11,1070,1072,1075],{"id":1071,"level":14},"other-form-controls",[16,1073,1074],{"id":1071},"Other Form Controls",[104,1076,1077,1082],{"gap":106,"left-width":452,"right-width":453},[110,1078,1079],{"v-slot:left":112},[114,1080],{"language":116,"src":1081},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fother-form-controls-08.html",[110,1083,1084,1087],{"v-slot:right":112},[20,1085,1086],{},"Use the control that matches the data:",[24,1088,1089,1099,1104,1110,1116,1119],{},[27,1090,1091,1094,1095,1098],{},[37,1092,1093],{},"\u003Cselect>",": one choice from nested ",[37,1096,1097],{},"\u003Coption>"," elements",[27,1100,1101,1103],{},[37,1102,1097],{},": submitted value for one selectable choice",[27,1105,1106,1109],{},[37,1107,1108],{},"\u003Ctextarea>",": longer text between opening and closing tags",[27,1111,1112,1115],{},[37,1113,1114],{},"checkbox",": checked submits its value; unchecked submits nothing",[27,1117,1118],{},"Radio buttons: one value from a named group",[27,1120,1121,1122,40],{},"Every submitted control still needs a ",[37,1123,39],{},[11,1125,1127,1130,1133,1136],{"id":1126,"level":176},"checkbox-defaults",[121,1128,1129],{"id":1126},"Checkbox Defaults",[20,1131,1132],{},"Unchecked checkboxes do not submit a key, so PHP cannot read a literal false value from the request.",[114,1134],{"language":307,"src":1135},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post\u002Fcheckbox-defaults-09.php",[20,1137,1138],{},"Treat the missing key as false, then flip it to true only when the checkbox key exists.",[11,1140,1142,1146,1160],{"id":1141,"level":14},"debug-forms",[16,1143,1145],{"id":1144},"debugging-forms","Debugging Forms",[164,1147,1148],{"type":166},[20,1149,1150,1151,1153,1154,1156,1157,1159],{},"Submitting a form causes a browser navigation. If the ",[37,1152,161],{}," has no ",[37,1155,137],{},", the current page reloads; if it has an ",[37,1158,137],{},", the browser navigates there.",[24,1161,1162,1170,1180,1188,1196],{},[27,1163,1164,1165],{},"URL does not change\n",[24,1166,1167],{},[27,1168,1169],{},"Check the method and button location",[27,1171,1172,1173],{},"Submitted key is wrong\n",[24,1174,1175],{},[27,1176,1177,1178,40],{},"Check the input's ",[37,1179,39],{},[27,1181,1182,1183],{},"Output is blank or isn't expected\n",[24,1184,1185],{},[27,1186,1187],{},"Check PHP reads the same key the form submits",[27,1189,1190,1191],{},"Value appears in URL unexpectedly\n",[24,1192,1193],{},[27,1194,1195],{},"Form is using GET or the default method",[27,1197,1198,1199],{},"Raw PHP appears\n",[24,1200,1201],{},[27,1202,1203],{},"Check file extension and server setup",[11,1205,1207,1210],{"id":1206,"level":14},"try-it",[16,1208,1209],{"id":1206},"Try It",[24,1211,1212,1215,1218,1221,1224],{},[27,1213,1214],{},"Submit the GET search form and copy the full URL",[27,1216,1217],{},"Paste that URL into a new tab",[27,1219,1220],{},"Submit the POST contact form",[27,1222,1223],{},"Refresh the POST result and compare browser behavior",[27,1225,1226],{},"Explain which form should be bookmarkable and why",[11,1228,1230,1233],{"id":1229,"level":14},"knowledge-check",[16,1231,1232],{"id":1229},"Knowledge Check",[24,1234,1235,1238,1241,1244,1247,1250,1255],{},[27,1236,1237],{},"Which attribute becomes the submitted key?",[27,1239,1240],{},"Why is GET useful for search pages?",[27,1242,1243],{},"Why should passwords not use GET?",[27,1245,1246],{},"Which PHP array reads POST body values?",[27,1248,1249],{},"Why does POST not make data secret by itself?",[27,1251,1252,1253,409],{},"Why should displayed form input use ",[37,1254,344],{},[27,1256,1257,1258,1260],{},"Why check ",[37,1259,476],{}," before reading the field?",[11,1262,1264,1268],{"id":1263,"level":14},"finish-lesson-branch",[16,1265,1267],{"id":1266},"finish-the-lesson-branch","Finish The Lesson Branch",[1269,1270,1271,1276,1282,1288,1294,1304,1315],"ol",{},[27,1272,1273,1274],{},"Check the final file list: ",[37,1275,95],{},[27,1277,1278,1279],{},"Stage the lesson work: ",[37,1280,1281],{},"git add public_html\u002Fm03\u002Flessons\u002F",[27,1283,1284,1285],{},"Commit the practice work: ",[37,1286,1287],{},"git commit -m \"Complete forms practice\"",[27,1289,1290,1291],{},"Push the branch: ",[37,1292,1293],{},"git push origin Module03-Forms-Intro",[27,1295,1296,1297,1299,1300,1303],{},"On GitHub, open a pull request from ",[37,1298,73],{}," into ",[37,1301,1302],{},"qa",", review it, then merge",[27,1305,1306,1307,1309,1310,1299,1312],{},"Briefly test ",[37,1308,1302],{},", then open and merge a pull request from ",[37,1311,1302],{},[37,1313,1314],{},"prod",[27,1316,1317,1318,1321,1322],{},"Prepare for the next lesson: ",[37,1319,1320],{},"git checkout qa"," then ",[37,1323,1324],{},"git pull origin qa",[11,1326,1328,1331],{"id":1327,"level":14},"summary",[16,1329,1330],{"id":1327},"Summary",[24,1332,1333,1336,1339,1345,1348,1354],{},[27,1334,1335],{},"GET forms send submitted values in the URL query string",[27,1337,1338],{},"POST forms send submitted values in the request body",[27,1340,1341,1342,1344],{},"The ",[37,1343,39],{}," attribute becomes the key PHP reads from request data",[27,1346,1347],{},"Browser-side checks help users, but server-side validation still decides what is accepted",[27,1349,1350,1353],{},[37,1351,1352],{},"htmlspecialchars()"," protects output that comes from submitted text",[27,1355,1356],{},"Debugging starts with the method, submitted keys, rendered output, and browser URL",[11,1358,1360,1364],{"id":1359,"level":14},"further-learning",[16,1361,1363],{"id":1362},"key-terms-and-further-learning","Key Terms And Further Learning",[104,1365,1366,1402],{"gap":106,"left-width":239,"right-width":239},[110,1367,1368,1372,1378,1383,1394],{"v-slot:left":112},[121,1369,1371],{"id":1370},"key-terms","Key Terms",[20,1373,1374,1377],{},[1375,1376,245],"strong",{}," - Form method that appends submitted values to the URL",[20,1379,1380,1382],{},[1375,1381,267],{}," - Form method that sends values in the request body",[20,1384,1385,1388,1389,1391,1392],{},[1375,1386,1387],{},"Query string"," - URL portion after ",[37,1390,409],{},", such as ",[37,1393,421],{},[20,1395,1396,1399,1400],{},[1375,1397,1398],{},"Superglobal"," - PHP array automatically available during a request, such as ",[37,1401,50],{},[110,1403,1404,1407],{"v-slot:right":112},[121,1405,1406],{"id":1359},"Further Learning",[24,1408,1409,1418,1427,1435],{},[27,1410,1411],{},[1412,1413,1417],"a",{"href":1414,"rel":1415},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FLearn\u002FForms\u002FSending_and_retrieving_form_data",[1416],"nofollow","MDN Sending form data",[27,1419,1420],{},[1412,1421,1424,1425],{"href":1422,"rel":1423},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Freserved.variables.get.php",[1416],"PHP ",[37,1426,46],{},[27,1428,1429],{},[1412,1430,1424,1433],{"href":1431,"rel":1432},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Freserved.variables.post.php",[1416],[37,1434,50],{},[27,1436,1437],{},[1412,1438,1424,1441],{"href":1439,"rel":1440},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Ffunction.htmlspecialchars.php",[1416],[37,1442,344],{},{"title":112,"searchDepth":1444,"depth":1444,"links":1445},2,[1446,1447,1448,1453,1454,1458,1466,1467,1472,1475,1476,1477,1478,1479,1480],{"id":13,"depth":1444,"text":18},{"id":56,"depth":1444,"text":59},{"id":99,"depth":1444,"text":102,"children":1449},[1450],{"id":179,"depth":1451,"text":1452},3,"Other Common \u003Cform> Attributes",{"id":235,"depth":1444,"text":236},{"id":299,"depth":1444,"text":300,"children":1455},[1456,1457],{"id":368,"depth":1451,"text":371},{"id":397,"depth":1451,"text":400},{"id":448,"depth":1444,"text":449,"children":1459},[1460,1461,1462,1463,1464,1465],{"id":501,"depth":1451,"text":504},{"id":534,"depth":1451,"text":537},{"id":559,"depth":1451,"text":562},{"id":588,"depth":1451,"text":589},{"id":623,"depth":1451,"text":626},{"id":658,"depth":1451,"text":661},{"id":684,"depth":1444,"text":687},{"id":817,"depth":1444,"text":820,"children":1468},[1469,1471],{"id":880,"depth":1451,"text":1470},"Other Common \u003Cinput> Attributes",{"id":997,"depth":1451,"text":1000},{"id":1071,"depth":1444,"text":1074,"children":1473},[1474],{"id":1126,"depth":1451,"text":1129},{"id":1144,"depth":1444,"text":1145},{"id":1206,"depth":1444,"text":1209},{"id":1229,"depth":1444,"text":1232},{"id":1266,"depth":1444,"text":1267},{"id":1327,"depth":1444,"text":1330},{"id":1362,"depth":1444,"text":1363},"presentation","Internet Applications","Build forms, compare GET and POST requests, and safely display submitted text in PHP.","Face-to-face class of about 40 students; combines the former GET and POST form lessons with focused typing, testing, and comparison time.","10","70","80","md",{},true,"20","\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post","Core",false,"18",null,{"title":5,"description":1483},"published","internet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post",[116,1501,307,244,266],"forms","2026-06-16T09:16:12-04:00","48:58","lB17Fnv2JZA","https:\u002F\u002Fyoutu.be\u002FlB17Fnv2JZA","Intro to Forms","xhh4WO3Dgc8AGbeiASBGiHVYgFfG_5d9x5K-55W57vw",[1509,1512,1518,1521,1524,1527,1530,1533,1537,1540,1543,1547,1551,1554,1558,1561,1564,1567,1570,1573,1576,1578,1580,1582,1584,1586,1588,1590,1593,1596,1599,1602,1605,1607,1610,1613,1617,1621,1625,1629,1632,1635,1638,1642,1646,1649,1652,1655,1658,1662,1666,1669,1671,1674,1677,1680,1683,1686,1689,1692,1695,1698,1701,1705,1709,1712,1715,1718,1720,1723,1726,1729,1732,1735,1738,1741,1744,1747,1750,1753,1756,1760,1763,1766,1769,1772,1775,1778,1781,1784,1787,1790,1794,1797,1800,1803,1806,1809,1812,1815,1818,1821,1824,1827,1830,1833,1836,1839,1842,1845,1848,1851,1854,1857,1860,1863,1866,1869,1872,1875,1878,1881,1884,1887,1890,1893,1896,1899,1902,1905,1908,1911,1914,1917,1920,1923,1926,1929,1932,1935,1938,1941,1944,1947,1950,1953,1956,1959,1962,1965,1968,1971,1974,1977,1980,1983,1986,1989,1992,1995,1998,2001,2004,2007,2010,2013,2016,2019,2022,2025,2028,2031,2034,2037,2040,2043,2046,2049,2052,2055,2058,2061,2064,2067,2070,2073,2076,2079,2082,2085,2088,2091,2094,2097,2100,2103,2106,2109,2112,2115,2118,2121,2124,2127,2130,2133,2136,2139,2142,2145,2148,2152,2155,2158,2161,2164,2167,2170,2173,2176,2179,2182,2185,2188,2191,2194,2197,2200,2203,2206,2209,2212,2215,2218,2221,2224,2227,2230,2233,2236,2239,2242,2245,2248,2251,2254,2257,2260,2263,2266,2269,2272,2275,2278,2281,2284,2287,2290,2293,2296,2299,2302,2305,2308,2311,2314,2317,2320,2323,2326,2329,2332,2335,2338,2341,2344,2347,2350,2353,2356,2359,2362,2365,2368,2371,2374,2377,2380,2383,2386,2389,2392,2395,2398,2401,2404,2407,2410,2413,2416,2419,2422,2425,2428,2431,2434,2437,2440,2443,2446,2449,2452,2455,2458,2461,2464,2467,2470,2473,2476,2479,2482,2485,2488,2491,2494,2497,2500,2503,2506,2509,2512,2515,2518,2521,2524,2527,2530,2533,2537,2540,2543,2546,2549,2552,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2584,2586,2588,2590,2592,2594,2596,2598,2601,2603,2605,2607,2609,2611,2613,2615,2617,2619,2621,2623,2625,2627,2629,2631,2635,2639,2643,2646,2650,2654,2657,2660,2663,2666,2669,2672,2676,2679,2682,2685,2688,2690,2692,2694,2696,2699,2702,2705,2708,2711,2714,2717,2720,2723,2726,2729,2732,2735,2738,2741,2744,2747,2750,2753,2756,2759,2762,2765,2768,2771,2774,2777,2780,2783,2786,2789,2792,2795,2798,2801,2804,2807,2810,2813,2816,2819,2822,2825,2828,2831,2834,2837,2840,2843,2846,2849,2852,2855,2858,2861,2863,2865,2867,2869,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895,2897,2900,2902,2904,2906,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2945,2948,2951,2954,2957,2959,2961,2964,2967,2970,2973,2976,2979],{"path":1510,"title":1511,"order":1496,"module":1496,"status":1496},"\u002Fabout","About Content Version 3",{"path":1513,"title":1514,"order":1515,"module":1516,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-first-concept","First Concept","5","1","draft",{"path":1519,"title":1520,"order":1485,"module":1516,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game","What is a Game?",{"path":1522,"title":1523,"order":1491,"module":1516,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay","What is Gameplay?",{"path":1525,"title":1526,"order":1485,"module":14,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F02-game-balance\u002F01-game-balance","Game Balance",{"path":1528,"title":1529,"order":1485,"module":176,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory","Game Design: Color Theory",{"path":1531,"title":1532,"order":1491,"module":176,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel","Game Design - Look and Feel",{"path":1534,"title":1535,"order":1485,"module":1536,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics","Game Mechanics","4",{"path":1538,"title":1539,"order":1491,"module":1536,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-game-mechanics\u002F02-decks","Technical: Decks and Cards",{"path":1541,"title":1542,"order":1485,"module":1515,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth, Complexity, And Randomness",{"path":1544,"title":1545,"order":1491,"module":1546,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning From Concept To Prototype","6",{"path":1548,"title":1549,"order":1485,"module":1550,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts And Design","8",{"path":1552,"title":1553,"order":1491,"module":1550,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Engine Features And Browser Feasibility",{"path":1555,"title":1556,"order":1485,"module":1557,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs","Entity-Based Systems","9",{"path":1559,"title":1560,"order":1485,"module":1485,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-player-facing-feature-systems\u002F01-spatial-rules-levels-and-interface","Spatial Rules, Levels, And Interface",{"path":1562,"title":1563,"order":1491,"module":1485,"status":1517},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-player-facing-feature-systems\u002F02-actors-behavior-and-effects","Actors, Behavior, And Effects",{"path":1565,"title":1566,"order":1516,"module":769,"status":1498},"\u002Fgame-architecture-and-design\u002F2e\u002Fsyllabus\u002Ffall-2026","Course Syllabus: IT265 - Game Architecture and Design",{"path":1568,"title":1569,"order":1516,"module":769,"status":1517},"\u002Fgame-architecture-and-design","Game Architecture and Design",{"path":1571,"title":1572,"order":1496,"module":1496,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F00-revision-plan","Game Architecture And Design Presentation Revision Plan",{"path":1574,"title":1575,"order":1496,"module":1496,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Game Architecture And Design Twenty-Minute Recording Plan",{"path":1577,"title":1520,"order":1485,"module":1516,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game",{"path":1579,"title":1523,"order":1491,"module":1516,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay",{"path":1581,"title":1526,"order":1485,"module":14,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F02-game-balance\u002F01-game-balance",{"path":1583,"title":1529,"order":1485,"module":176,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory",{"path":1585,"title":1532,"order":1491,"module":176,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel",{"path":1587,"title":1535,"order":1485,"module":1536,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics",{"path":1589,"title":1539,"order":1491,"module":1536,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F02-decks",{"path":1591,"title":1592,"order":1485,"module":1515,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth vs Complexity and Randomness",{"path":1594,"title":1595,"order":1485,"module":1546,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F01-first-concept","First Concept: Updated Lesson",{"path":1597,"title":1598,"order":1491,"module":1546,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning and Management",{"path":1600,"title":1601,"order":1485,"module":1550,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts and Design",{"path":1603,"title":1604,"order":1491,"module":1550,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Architecture: Features of a Game Engine",{"path":1606,"title":1556,"order":1485,"module":1557,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs",{"path":1608,"title":1609,"order":1485,"module":1485,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F01-level-mechanics","Game Design: Introduction to Level Mechanics",{"path":1611,"title":1612,"order":1491,"module":1485,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F02-grids","Technical: Square vs Hex Grids in Board Games",{"path":1614,"title":1615,"order":1485,"module":1616,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F11-user-interfaces\u002F01-user-interfaces","Game Design: User Interfaces","11",{"path":1618,"title":1619,"order":1485,"module":1620,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F12-actor-representations\u002F01-actors","Game Design: Actor Representations","12",{"path":1622,"title":1623,"order":1485,"module":1624,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F13-artificial-intelligence\u002F01-ai","Game Design: AI","13",{"path":1626,"title":1627,"order":1485,"module":1628,"status":1517},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F14-particles-and-physics\u002F01-particles-and-physics","IT265: Particle Systems and Physics Engine","14",{"path":1630,"title":1631,"order":1516,"module":769,"status":1517},"\u002Fgame-architecture-and-design\u002Fsyllabus\u002Fspring-2026","Course Syllabus: IT265 - Game Architecture",{"path":1633,"title":1634,"order":1485,"module":769,"status":1517},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fcase-study-1-atari-worksheet","Case Study 1 - Atari",{"path":1636,"title":1637,"order":1491,"module":769,"status":1517},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-color-theory-worksheet","IT265 Case Study - Color Theory",{"path":1639,"title":1640,"order":1641,"module":769,"status":1517},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-personal-choice-worksheet","IT265 Case Study - Personal Choice","40",{"path":1643,"title":1644,"order":1645,"module":769,"status":1517},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-design-treatment-checkpoint-worksheet","IT265 Design Treatment Checkpoint","30",{"path":1647,"title":1648,"order":1485,"module":1516,"status":1517},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F01-git-and-terminal-setup","Git And Terminal Setup",{"path":1650,"title":1651,"order":1491,"module":1516,"status":1517},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F02-cli-foundations","CLI Foundations",{"path":1653,"title":1654,"order":1645,"module":1516,"status":1517},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F03-github-setup-and-ssh","GitHub Setup And SSH",{"path":1656,"title":1657,"order":1641,"module":1516,"status":1517},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F04-local-git-workflow-and-course-repositories","Local Git Workflow And Course Repositories",{"path":1659,"title":1660,"order":1661,"module":1516,"status":1517},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F05-vscode-setup-and-course-extensions","VS Code Setup And Course Extensions","50",{"path":1663,"title":1664,"order":1665,"module":1516,"status":1517},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F06-trace-learning-journal","TRACE Learning Journal Foundations","60",{"path":1667,"title":1668,"order":1496,"module":1496,"status":1496},"\u002Fgeneral\u002Fbasic-cli","Basic Command Line",{"path":1670,"title":1668,"order":1485,"module":1516,"status":1496},"\u002Fgeneral\u002Fbasic-command-line",{"path":1672,"title":1673,"order":1496,"module":1496,"status":1498},"\u002F","Ethereal Lab Course Materials",{"path":1675,"title":1676,"order":769,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord","Learn Courses Platform And Discord",{"path":1678,"title":1679,"order":1485,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands","Basic CLI Commands",{"path":1681,"title":1682,"order":1491,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools","Git Tools",{"path":1684,"title":1685,"order":1645,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh","Set Up GitHub SSH",{"path":1687,"title":1688,"order":1641,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs","Git Commands And Pull Requests",{"path":1690,"title":1691,"order":1661,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment","Local Development Environment Setup",{"path":1693,"title":1694,"order":1665,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository","Add Instructor Template To Your Repository",{"path":1696,"title":1697,"order":1486,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches","QA And Prod Branches",{"path":1699,"title":1700,"order":1487,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup","Render Setup",{"path":1702,"title":1703,"order":1704,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox","Local Ubuntu Web Server With VirtualBox","90",{"path":1706,"title":1707,"order":1708,"module":1516,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware","Local Ubuntu Web Server With VMware","100",{"path":1710,"title":1711,"order":1485,"module":14,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript","Compare PHP And JavaScript",{"path":1713,"title":1714,"order":1491,"module":14,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions","Use Conditions Loops And Functions",{"path":1716,"title":1717,"order":1485,"module":176,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html","Intro To HTML",{"path":1719,"title":5,"order":1491,"module":176,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post",{"path":1721,"title":1722,"order":1645,"module":176,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates","Understanding CSS\u002FJS Selectors And DOM Updates",{"path":1724,"title":1725,"order":1485,"module":1536,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql","Intro To SQL",{"path":1727,"title":1728,"order":1491,"module":1536,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup","Project Database Setup",{"path":1730,"title":1731,"order":1645,"module":1536,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration","User Registration",{"path":1733,"title":1734,"order":1641,"module":1536,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login","User Login",{"path":1736,"title":1737,"order":1485,"module":1515,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex","Intro To Regex",{"path":1739,"title":1740,"order":1491,"module":1515,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers","Project Shared Helpers",{"path":1742,"title":1743,"order":1645,"module":1515,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","User Feedback After Redirects",{"path":1745,"title":1746,"order":1641,"module":1515,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile","User Profile",{"path":1748,"title":1749,"order":1485,"module":1546,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization","User Roles Authorization",{"path":1751,"title":1752,"order":1491,"module":1546,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement","User Login Enhancement",{"path":1754,"title":1755,"order":1645,"module":1546,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content","Dynamic Content",{"path":1757,"title":1758,"order":1485,"module":1759,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data","Working With API Data","7",{"path":1761,"title":1762,"order":1491,"module":1759,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration","API Integration",{"path":1764,"title":1765,"order":1645,"module":1759,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions","Database Utility Functions",{"path":1767,"title":1768,"order":1485,"module":1550,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability","Milestone 2 Bootstrap And Reusability",{"path":1770,"title":1771,"order":1491,"module":1550,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro","jQuery Brief Intro",{"path":1773,"title":1774,"order":1645,"module":1550,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax","Intro To AJAX",{"path":1776,"title":1777,"order":1485,"module":1557,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations","Add User Associations",{"path":1779,"title":1780,"order":1491,"module":1557,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination","Add Association Views And Pagination",{"path":1782,"title":1783,"order":1485,"module":1485,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles","Association Management And Public Profiles",{"path":1785,"title":1786,"order":1491,"module":1485,"status":1517},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection","Reusable CSRF Protection",{"path":1788,"title":1789,"order":1516,"module":769,"status":1498},"\u002Finternet-applications\u002F2e\u002Fsyllabus\u002Ffall-2026","IT202 - Internet Applications Syllabus",{"path":1791,"title":1792,"order":1641,"module":1485,"status":1793},"\u002Finternet-applications\u002Fassignments\u002Ffinal-project-submission","Final Project Submission","review",{"path":1795,"title":1796,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F01-account-access-and-profile-system","Milestone 1: Account, Access, And Profile System",{"path":1798,"title":1799,"order":1491,"module":1550,"status":1793},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F02-api-data-and-project-crud","Milestone 2: API Data And Project CRUD",{"path":1801,"title":1802,"order":1645,"module":1557,"status":1793},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F03-user-associations-search-and-summary","Milestone 3: User Associations, Search, And Summary Views",{"path":1804,"title":1805,"order":1515,"module":1536,"status":1498},"\u002Finternet-applications\u002Fassignments\u002Fproject-proposal","IT 202 Project Proposal",{"path":1807,"title":1808,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F01-what-this-course-is-building","What Internet Applications Build",{"path":1810,"title":1811,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02-files-folders-and-project-structure","Files, Folders, And Project Structure",{"path":1813,"title":1814,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02a-basic-cli-commands-for-course-work","Basic CLI Commands For Web Development",{"path":1816,"title":1817,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02b-install-git-and-terminal-tools","Install Git And Terminal Tools",{"path":1819,"title":1820,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03-version-control-with-git-and-github","Version Control With Git And GitHub",{"path":1822,"title":1823,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Set Up A Local Development Environment",{"path":1825,"title":1826,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F04-adding-the-instructor-template-to-your-repository","Starting From A Starter Template",{"path":1828,"title":1829,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F05-editing-locally-and-seeing-changes-run","Editing Locally And Seeing Changes Run",{"path":1831,"title":1832,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F06-building-a-local-ubuntu-web-server","Building A Local Ubuntu Web Server",{"path":1834,"title":1835,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F07-git-recovery-and-common-mistakes","Git Recovery And Common Mistakes",{"path":1837,"title":1838,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Installing Apache, PHP, And MySQL",{"path":1840,"title":1841,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F09-your-first-php-page-through-apache","Your First PHP Page Through Apache",{"path":1843,"title":1844,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F10-how-http-works-requests-and-responses","How HTTP Works: Requests And Responses",{"path":1846,"title":1847,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F11-http-methods-get-post-and-status-codes","HTTP Methods: GET, POST, And Status Codes",{"path":1849,"title":1850,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F12-local-qa-and-production-environments","Local, QA, And Production Environments",{"path":1852,"title":1853,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F01-how-php-runs-on-the-server","How PHP Runs On The Server",{"path":1855,"title":1856,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Displaying Output With PHP",{"path":1858,"title":1859,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Displaying Output With JavaScript",{"path":1861,"title":1862,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F04-variables-storing-and-naming-values","Variables: Storing And Naming Values",{"path":1864,"title":1865,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F05-data-types-strings-numbers-booleans-and-null","Data Types: Strings, Numbers, Booleans, And Null",{"path":1867,"title":1868,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F06-arrays-storing-lists-of-values","Arrays: Storing Lists Of Values",{"path":1870,"title":1871,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Conditional Statements: Making Decisions",{"path":1873,"title":1874,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Loops: Repeating Actions",{"path":1876,"title":1877,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F09-functions-reusable-blocks-of-logic","Functions: Reusable Blocks Of Logic",{"path":1879,"title":1880,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F10-reading-and-debugging-error-messages","Reading And Debugging Error Messages",{"path":1882,"title":1883,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","HTML: Structure And Meaning",{"path":1885,"title":1886,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F02-writing-a-valid-html-document","Writing A Valid HTML Document",{"path":1888,"title":1889,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F03-common-html-elements-and-semantic-tags","Common HTML Elements And Semantic Tags",{"path":1891,"title":1892,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F04-building-forms-inputs-labels-and-buttons","Building Forms: Inputs, Labels, And Buttons",{"path":1894,"title":1895,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F05-get-requests-and-query-string-data","GET Requests And Query String Data",{"path":1897,"title":1898,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F06-post-requests-and-form-body-data","POST Requests And Form Body Data",{"path":1900,"title":1901,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F07-css-fundamentals-selectors-properties-and-values","CSS Fundamentals: Selectors, Properties, And Values",{"path":1903,"title":1904,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F08-the-box-model-margin-border-padding-and-content","The Box Model: Margin, Border, Padding, And Content",{"path":1906,"title":1907,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Page Layout With Flexbox",{"path":1909,"title":1910,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09a-css-positioning-fixed-headers-and-body-offsets","CSS Positioning: Fixed Headers And Body Offsets",{"path":1912,"title":1913,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F10-selecting-and-changing-elements-with-javascript","Selecting And Changing Elements With JavaScript",{"path":1915,"title":1916,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F11-inline-validation-and-client-side-feedback","Inline Validation And Client-Side Feedback",{"path":1918,"title":1919,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Basic Web Accessibility Habits",{"path":1921,"title":1922,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F01-why-web-applications-need-a-database","Why Web Applications Need A Database",{"path":1924,"title":1925,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F02-relational-concepts-tables-rows-columns-and-primary-keys","Relational Concepts: Tables, Rows, Columns, And Primary Keys",{"path":1927,"title":1928,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F03-writing-sql-create-insert-select-update-delete","Writing SQL: CREATE, INSERT, SELECT, UPDATE, DELETE",{"path":1930,"title":1931,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Creating Tables With SQL Scripts",{"path":1933,"title":1934,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F05-connecting-php-to-mysql-with-pdo","Connecting PHP To MySQL With PDO",{"path":1936,"title":1937,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F06-parameterized-queries-and-sql-injection-prevention","Parameterized Queries And SQL Injection Prevention",{"path":1939,"title":1940,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Building A Registration Page",{"path":1942,"title":1943,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Hashing Passwords With password_hash()",{"path":1945,"title":1946,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Building A Login Page",{"path":1948,"title":1949,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F10-sessions-remembering-the-logged-in-user","Sessions: Remembering The Logged-In User",{"path":1951,"title":1952,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Cookies: Persistent Client-Side State",{"path":1954,"title":1955,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F12-navigation-that-responds-to-login-state","Navigation That Responds To Login State",{"path":1957,"title":1958,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F01-why-client-side-validation-is-not-enough","Why Client-Side Validation Is Not Enough",{"path":1960,"title":1961,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F02-sanitizing-and-escaping-user-input","Sanitizing And Escaping User Input",{"path":1963,"title":1964,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F03-required-fields-and-length-rules","Required Fields And Length Rules",{"path":1966,"title":1967,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F04-regular-expressions-for-pattern-matching","Regular Expressions For Pattern Matching",{"path":1969,"title":1970,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F05-server-side-validation-in-php","Server-Side Validation In PHP",{"path":1972,"title":1973,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F06-cross-site-scripting-xss-prevention","Cross-Site Scripting (XSS) Prevention",{"path":1975,"title":1976,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F07-flash-messages-and-persistent-feedback","Flash Messages And Persistent Feedback",{"path":1978,"title":1979,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F08-allowing-login-by-username-or-email","Allowing Login By Username Or Email",{"path":1981,"title":1982,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F09-building-a-profile-edit-page","Building A Profile Edit Page",{"path":1984,"title":1985,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F10-debugging-account-and-authentication-problems","Debugging Account And Authentication Problems",{"path":1987,"title":1988,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F11-review-the-full-account-system-so-far","Review: The Full Account System So Far",{"path":1990,"title":1991,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Role-Based Access Control",{"path":1993,"title":1994,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Storing Roles In The Database",{"path":1996,"title":1997,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F03-protecting-a-page-with-an-access-check","Protecting A Page With An Access Check",{"path":1999,"title":2000,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F04-safe-redirects-after-login-and-logout","Safe Redirects After Login And Logout",{"path":2002,"title":2003,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Listing Records From The Database",{"path":2005,"title":2006,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F06-creating-new-records-with-a-form","Creating New Records With A Form",{"path":2008,"title":2009,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Editing Existing Records",{"path":2011,"title":2012,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Deleting Records Safely",{"path":2014,"title":2015,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Ownership: Linking Records To Users",{"path":2017,"title":2018,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","First Project Milestone Checklist",{"path":2020,"title":2021,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Organizing Growing PHP Applications",{"path":2023,"title":2024,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Reading A Growing PHP Application",{"path":2026,"title":2027,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F01-what-asynchronous-requests-ajax-solve","What Asynchronous Requests (AJAX) Solve",{"path":2029,"title":2030,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F02-json-a-common-data-format-for-the-web","JSON: A Common Data Format For The Web",{"path":2032,"title":2033,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F03-building-a-php-endpoint-that-returns-json","Building A PHP Endpoint That Returns JSON",{"path":2035,"title":2036,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F04-sending-requests-from-javascript-with-fetch","Sending Requests From JavaScript With Fetch",{"path":2038,"title":2039,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F05-handling-fetch-responses-and-errors","Handling Fetch Responses And Errors",{"path":2041,"title":2042,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F06-updating-the-page-with-returned-data","Updating The Page With Returned Data",{"path":2044,"title":2045,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Introduction To REST APIs",{"path":2047,"title":2048,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Reading API Documentation",{"path":2050,"title":2051,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F09-making-authenticated-api-calls-from-php","Making Authenticated API Calls From PHP",{"path":2053,"title":2054,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F10-storing-and-caching-api-responses","Storing And Caching API Responses",{"path":2056,"title":2057,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F11-cors-and-cross-origin-request-basics","CORS And Cross-Origin Request Basics",{"path":2059,"title":2060,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F12-browser-devtools-for-web-application-debugging","Browser DevTools For Web Application Debugging",{"path":2062,"title":2063,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F01-jquery-simplified-dom-and-event-work","jQuery: Simplified DOM And Event Work",{"path":2065,"title":2066,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Selecting Elements With jQuery",{"path":2068,"title":2069,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F03-responding-to-events-clicks-inputs-and-submissions","Responding To Events: Clicks, Inputs, And Submissions",{"path":2071,"title":2072,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F04-updating-the-dom-after-a-user-action","Updating The DOM After A User Action",{"path":2074,"title":2075,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Sending AJAX Requests With jQuery",{"path":2077,"title":2078,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F06-saving-external-api-data-through-php","Saving External API Data Through PHP",{"path":2080,"title":2081,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Saving User-Created Records",{"path":2083,"title":2084,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Building A Project Listing Page",{"path":2086,"title":2087,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Inline Editing And Detail Views",{"path":2089,"title":2090,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Second Project Milestone Checklist",{"path":2092,"title":2093,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Foreign Keys And Referential Integrity",{"path":2095,"title":2096,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F02-joining-tables-inner-join-left-join","Joining Tables: INNER JOIN, LEFT JOIN",{"path":2098,"title":2099,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F03-user-owned-records-and-access-enforcement","User-Owned Records And Access Enforcement",{"path":2101,"title":2102,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F04-connecting-api-data-to-user-records","Connecting API Data To User Records",{"path":2104,"title":2105,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Searching And Filtering With SQL",{"path":2107,"title":2108,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Pagination: Displaying Records In Pages",{"path":2110,"title":2111,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Aggregate Functions: COUNT, SUM, AVG",{"path":2113,"title":2114,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Simple Analytics And Summary Views",{"path":2116,"title":2117,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Third Project Milestone Checklist",{"path":2119,"title":2120,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Public Pages And Unauthenticated Views",{"path":2122,"title":2123,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","User Profile And Activity Pages",{"path":2125,"title":2126,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F03-refreshing-and-expiring-external-api-data","Refreshing And Expiring External API Data",{"path":2128,"title":2129,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Application-Wide Security Audit",{"path":2131,"title":2132,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F05-cross-site-request-forgery-csrf-protection","Cross-Site Request Forgery (CSRF) Protection",{"path":2134,"title":2135,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","QA Testing And Collecting Evidence",{"path":2137,"title":2138,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Production Environment Checklist",{"path":2140,"title":2141,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Writing A Project README",{"path":2143,"title":2144,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Final Presentation And Code Walkthrough",{"path":2146,"title":2147,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Configuration Drift And Secrets Checks",{"path":2149,"title":2150,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F01-what-this-course-is-building","Quiz - What Internet Applications Build","ready",{"path":2153,"title":2154,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02-files-folders-and-project-structure","Quiz - Files, Folders, And Project Structure",{"path":2156,"title":2157,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02a-basic-cli-commands-for-course-work","Quiz - Basic CLI Commands For Web Development",{"path":2159,"title":2160,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02b-install-git-and-terminal-tools","Quiz - Install Git And Terminal Tools",{"path":2162,"title":2163,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03-version-control-with-git-and-github","Quiz - Version Control With Git And GitHub",{"path":2165,"title":2166,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Quiz - Set Up A Local Development Environment",{"path":2168,"title":2169,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F04-adding-the-instructor-template-to-your-repository","Quiz - Starting From A Starter Template",{"path":2171,"title":2172,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F05-editing-locally-and-seeing-changes-run","Quiz - Editing Locally And Seeing Changes Run",{"path":2174,"title":2175,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F06-building-a-local-ubuntu-web-server","Quiz - Building A Local Ubuntu Web Server",{"path":2177,"title":2178,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F07-git-recovery-and-common-mistakes","Quiz - Git Recovery And Common Mistakes",{"path":2180,"title":2181,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Quiz - Installing Apache, PHP, And MySQL",{"path":2183,"title":2184,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F09-your-first-php-page-through-apache","Quiz - Your First PHP Page Through Apache",{"path":2186,"title":2187,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F10-how-http-works-requests-and-responses","Quiz - How HTTP Works: Requests And Responses",{"path":2189,"title":2190,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F11-http-methods-get-post-and-status-codes","Quiz - HTTP Methods: GET, POST, And Status Codes",{"path":2192,"title":2193,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F12-local-qa-and-production-environments","Quiz - Local, QA, And Production Environments",{"path":2195,"title":2196,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F01-how-php-runs-on-the-server","Quiz - How PHP Runs On The Server",{"path":2198,"title":2199,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Quiz - Displaying Output With PHP",{"path":2201,"title":2202,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Quiz - Displaying Output With JavaScript",{"path":2204,"title":2205,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F04-variables-storing-and-naming-values","Quiz - Variables: Storing And Naming Values",{"path":2207,"title":2208,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F05-data-types-strings-numbers-booleans-and-null","Quiz - Data Types: Strings, Numbers, Booleans, And Null",{"path":2210,"title":2211,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F06-arrays-storing-lists-of-values","Quiz - Arrays: Storing Lists Of Values",{"path":2213,"title":2214,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Quiz - Conditional Statements: Making Decisions",{"path":2216,"title":2217,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Quiz - Loops: Repeating Actions",{"path":2219,"title":2220,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F09-functions-reusable-blocks-of-logic","Quiz - Functions: Reusable Blocks Of Logic",{"path":2222,"title":2223,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F10-reading-and-debugging-error-messages","Quiz - Reading And Debugging Error Messages",{"path":2225,"title":2226,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","Quiz - HTML: Structure And Meaning",{"path":2228,"title":2229,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F02-writing-a-valid-html-document","Quiz - Writing A Valid HTML Document",{"path":2231,"title":2232,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F03-common-html-elements-and-semantic-tags","Quiz - Common HTML Elements And Semantic Tags",{"path":2234,"title":2235,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F04-building-forms-inputs-labels-and-buttons","Quiz - Building Forms: Inputs, Labels, And Buttons",{"path":2237,"title":2238,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F05-get-requests-and-query-string-data","Quiz - GET Requests And Query String Data",{"path":2240,"title":2241,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F06-post-requests-and-form-body-data","Quiz - POST Requests And Form Body Data",{"path":2243,"title":2244,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F07-css-fundamentals-selectors-properties-and-values","Quiz - CSS Fundamentals: Selectors, Properties, And Values",{"path":2246,"title":2247,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F08-the-box-model-margin-border-padding-and-content","Quiz - The Box Model: Margin, Border, Padding, And Content",{"path":2249,"title":2250,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Quiz - Page Layout With Flexbox",{"path":2252,"title":2253,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09a-css-positioning-fixed-headers-and-body-offsets","Quiz - CSS Positioning: Fixed Headers And Body Offsets",{"path":2255,"title":2256,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F10-selecting-and-changing-elements-with-javascript","Quiz - Selecting And Changing Elements With JavaScript",{"path":2258,"title":2259,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F11-inline-validation-and-client-side-feedback","Quiz - Inline Validation And Client-Side Feedback",{"path":2261,"title":2262,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Quiz - Basic Web Accessibility Habits",{"path":2264,"title":2265,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F01-why-web-applications-need-a-database","Quiz - Why Web Applications Need A Database",{"path":2267,"title":2268,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F02-relational-concepts-tables-rows-columns-and-primary-keys","Quiz - Relational Concepts: Tables, Rows, Columns, And Primary Keys",{"path":2270,"title":2271,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F03-writing-sql-create-insert-select-update-delete","Quiz - Writing SQL: CREATE, INSERT, SELECT, UPDATE, DELETE",{"path":2273,"title":2274,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Quiz - Creating Tables With SQL Scripts",{"path":2276,"title":2277,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F05-connecting-php-to-mysql-with-pdo","Quiz - Connecting PHP To MySQL With PDO",{"path":2279,"title":2280,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F06-parameterized-queries-and-sql-injection-prevention","Quiz - Parameterized Queries And SQL Injection Prevention",{"path":2282,"title":2283,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Quiz - Building A Registration Page",{"path":2285,"title":2286,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Quiz - Hashing Passwords With password_hash()",{"path":2288,"title":2289,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Quiz - Building A Login Page",{"path":2291,"title":2292,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F10-sessions-remembering-the-logged-in-user","Quiz - Sessions: Remembering The Logged-In User",{"path":2294,"title":2295,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Quiz - Cookies: Persistent Client-Side State",{"path":2297,"title":2298,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F12-navigation-that-responds-to-login-state","Quiz - Navigation That Responds To Login State",{"path":2300,"title":2301,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F01-why-client-side-validation-is-not-enough","Quiz - Why Client-Side Validation Is Not Enough",{"path":2303,"title":2304,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F02-sanitizing-and-escaping-user-input","Quiz - Sanitizing And Escaping User Input",{"path":2306,"title":2307,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F03-required-fields-and-length-rules","Quiz - Required Fields And Length Rules",{"path":2309,"title":2310,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F04-regular-expressions-for-pattern-matching","Quiz - Regular Expressions For Pattern Matching",{"path":2312,"title":2313,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F05-server-side-validation-in-php","Quiz - Server-Side Validation In PHP",{"path":2315,"title":2316,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F06-cross-site-scripting-xss-prevention","Quiz - Cross-Site Scripting (XSS) Prevention",{"path":2318,"title":2319,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F07-flash-messages-and-persistent-feedback","Quiz - Flash Messages And Persistent Feedback",{"path":2321,"title":2322,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F08-allowing-login-by-username-or-email","Quiz - Allowing Login By Username Or Email",{"path":2324,"title":2325,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F09-building-a-profile-edit-page","Quiz - Building A Profile Edit Page",{"path":2327,"title":2328,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F10-debugging-account-and-authentication-problems","Quiz - Debugging Account And Authentication Problems",{"path":2330,"title":2331,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F11-review-the-full-account-system-so-far","Quiz - Review: The Full Account System So Far",{"path":2333,"title":2334,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Quiz - Role-Based Access Control",{"path":2336,"title":2337,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Quiz - Storing Roles In The Database",{"path":2339,"title":2340,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F03-protecting-a-page-with-an-access-check","Quiz - Protecting A Page With An Access Check",{"path":2342,"title":2343,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F04-safe-redirects-after-login-and-logout","Quiz - Safe Redirects After Login And Logout",{"path":2345,"title":2346,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Quiz - Listing Records From The Database",{"path":2348,"title":2349,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F06-creating-new-records-with-a-form","Quiz - Creating New Records With A Form",{"path":2351,"title":2352,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Quiz - Editing Existing Records",{"path":2354,"title":2355,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Quiz - Deleting Records Safely",{"path":2357,"title":2358,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Quiz - Ownership: Linking Records To Users",{"path":2360,"title":2361,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","Quiz - First Project Milestone Checklist",{"path":2363,"title":2364,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Quiz - Organizing Growing PHP Applications",{"path":2366,"title":2367,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Quiz - Reading A Growing PHP Application",{"path":2369,"title":2370,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F01-what-asynchronous-requests-ajax-solve","Quiz - What Asynchronous Requests (AJAX) Solve",{"path":2372,"title":2373,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F02-json-a-common-data-format-for-the-web","Quiz - JSON: A Common Data Format For The Web",{"path":2375,"title":2376,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F03-building-a-php-endpoint-that-returns-json","Quiz - Building A PHP Endpoint That Returns JSON",{"path":2378,"title":2379,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F04-sending-requests-from-javascript-with-fetch","Quiz - Sending Requests From JavaScript With Fetch",{"path":2381,"title":2382,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F05-handling-fetch-responses-and-errors","Quiz - Handling Fetch Responses And Errors",{"path":2384,"title":2385,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F06-updating-the-page-with-returned-data","Quiz - Updating The Page With Returned Data",{"path":2387,"title":2388,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Quiz - Introduction To REST APIs",{"path":2390,"title":2391,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Quiz - Reading API Documentation",{"path":2393,"title":2394,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F09-making-authenticated-api-calls-from-php","Quiz - Making Authenticated API Calls From PHP",{"path":2396,"title":2397,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F10-storing-and-caching-api-responses","Quiz - Storing And Caching API Responses",{"path":2399,"title":2400,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F11-cors-and-cross-origin-request-basics","Quiz - CORS And Cross-Origin Request Basics",{"path":2402,"title":2403,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F12-browser-devtools-for-web-application-debugging","Quiz - Browser DevTools For Web Application Debugging",{"path":2405,"title":2406,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F01-jquery-simplified-dom-and-event-work","Quiz - jQuery: Simplified DOM And Event Work",{"path":2408,"title":2409,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Quiz - Selecting Elements With jQuery",{"path":2411,"title":2412,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F03-responding-to-events-clicks-inputs-and-submissions","Quiz - Responding To Events: Clicks, Inputs, And Submissions",{"path":2414,"title":2415,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F04-updating-the-dom-after-a-user-action","Quiz - Updating The DOM After A User Action",{"path":2417,"title":2418,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Quiz - Sending AJAX Requests With jQuery",{"path":2420,"title":2421,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F06-saving-external-api-data-through-php","Quiz - Saving External API Data Through PHP",{"path":2423,"title":2424,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Quiz - Saving User-Created Records",{"path":2426,"title":2427,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Quiz - Building A Project Listing Page",{"path":2429,"title":2430,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Quiz - Inline Editing And Detail Views",{"path":2432,"title":2433,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Quiz - Second Project Milestone Checklist",{"path":2435,"title":2436,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Quiz - Foreign Keys And Referential Integrity",{"path":2438,"title":2439,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F02-joining-tables-inner-join-left-join","Quiz - Joining Tables: INNER JOIN, LEFT JOIN",{"path":2441,"title":2442,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F03-user-owned-records-and-access-enforcement","Quiz - User-Owned Records And Access Enforcement",{"path":2444,"title":2445,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F04-connecting-api-data-to-user-records","Quiz - Connecting API Data To User Records",{"path":2447,"title":2448,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Quiz - Searching And Filtering With SQL",{"path":2450,"title":2451,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Quiz - Pagination: Displaying Records In Pages",{"path":2453,"title":2454,"order":1496,"module":1496,"status":1496},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Quiz - Aggregate Functions: COUNT, SUM, AVG",{"path":2456,"title":2457,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Quiz - Simple Analytics And Summary Views",{"path":2459,"title":2460,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Quiz - Third Project Milestone Checklist",{"path":2462,"title":2463,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Quiz - Public Pages And Unauthenticated Views",{"path":2465,"title":2466,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","Quiz - User Profile And Activity Pages",{"path":2468,"title":2469,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F03-refreshing-and-expiring-external-api-data","Quiz - Refreshing And Expiring External API Data",{"path":2471,"title":2472,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Quiz - Application-Wide Security Audit",{"path":2474,"title":2475,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F05-cross-site-request-forgery-csrf-protection","Quiz - Cross-Site Request Forgery (CSRF) Protection",{"path":2477,"title":2478,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","Quiz - QA Testing And Collecting Evidence",{"path":2480,"title":2481,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Quiz - Production Environment Checklist",{"path":2483,"title":2484,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Quiz - Writing A Project README",{"path":2486,"title":2487,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Quiz - Final Presentation And Code Walkthrough",{"path":2489,"title":2490,"order":1496,"module":1496,"status":2151},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Quiz - Configuration Drift And Secrets Checks",{"path":2492,"title":2493,"order":1516,"module":769,"status":1517},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fa-command-line-basics","Command Line Basics",{"path":2495,"title":2496,"order":14,"module":769,"status":1517},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fb-git-and-github-recovery","Git And GitHub Recovery",{"path":2498,"title":2499,"order":176,"module":769,"status":1517},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fc-apache-and-php-troubleshooting","Apache And PHP Troubleshooting",{"path":2501,"title":2502,"order":1536,"module":769,"status":1517},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fd-mysql-troubleshooting","MySQL Troubleshooting",{"path":2504,"title":2505,"order":1515,"module":769,"status":1517},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fe-http-request-and-response-reference","HTTP Request And Response Reference",{"path":2507,"title":2508,"order":1546,"module":769,"status":1517},"\u002Finternet-applications\u002Fbook\u002Freference\u002Ff-common-security-mistakes","Common Security Mistakes",{"path":2510,"title":2511,"order":1759,"module":769,"status":1517},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fg-ai-collaboration-and-disclosure","AI Collaboration And Disclosure",{"path":2513,"title":2514,"order":769,"module":769,"status":1517},"\u002Finternet-applications\u002Fbook\u002Ftoc","Internet Applications: Table of Contents",{"path":2516,"title":2517,"order":1485,"module":1516,"status":1517},"\u002Finternet-applications\u002Flabs\u002F01-git-recovery-and-submission-evidence","Lab 1: Git Recovery And Submission Evidence",{"path":2519,"title":2520,"order":1491,"module":14,"status":1517},"\u002Finternet-applications\u002Flabs\u002F02-php-output-and-error-reading","Lab 2: PHP Output And Error Reading",{"path":2522,"title":2523,"order":1645,"module":176,"status":1517},"\u002Finternet-applications\u002Flabs\u002F03-form-methods-and-sticky-values","Lab 3: Form Methods And Sticky Values",{"path":2525,"title":2526,"order":1641,"module":1536,"status":1517},"\u002Finternet-applications\u002Flabs\u002F04-pdo-query-and-sql-evidence","Lab 4: PDO Query And SQL Evidence",{"path":2528,"title":2529,"order":1661,"module":1515,"status":1517},"\u002Finternet-applications\u002Flabs\u002F05-validation-debugging-and-friendly-errors","Lab 5: Validation, Debugging, And Friendly Errors",{"path":2531,"title":2532,"order":1665,"module":1546,"status":1517},"\u002Finternet-applications\u002Flabs\u002F06-role-protected-crud-check","Lab 6: Role-Protected CRUD Check",{"path":2534,"title":2535,"order":2536,"module":1546,"status":1517},"\u002Finternet-applications\u002Flabs\u002F06a-relative-paths-includes-and-feature-trace","Lab 6A: Relative Paths, Includes, And Feature Tracing","61",{"path":2538,"title":2539,"order":1486,"module":1759,"status":1517},"\u002Finternet-applications\u002Flabs\u002F07-json-endpoint-and-fetch-check","Lab 7: JSON Endpoint And Fetch Check",{"path":2541,"title":2542,"order":1487,"module":1550,"status":1517},"\u002Finternet-applications\u002Flabs\u002F08-jquery-ajax-interface-check","Lab 8: jQuery AJAX Interface Check",{"path":2544,"title":2545,"order":1704,"module":1557,"status":1517},"\u002Finternet-applications\u002Flabs\u002F09-search-pagination-and-summary-check","Lab 9: Search, Pagination, And Summary Check",{"path":2547,"title":2548,"order":1708,"module":1485,"status":1517},"\u002Finternet-applications\u002Flabs\u002F10-final-security-and-readme-check","Lab 10: Final Security And README Check",{"path":2550,"title":2551,"order":1496,"module":1496,"status":1517},"\u002Finternet-applications\u002Fpresentations-revised\u002F00-revision-plan","Internet Applications Presentation Revision Plan",{"path":2553,"title":2554,"order":1496,"module":1496,"status":1517},"\u002Finternet-applications\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Internet Applications Twenty-Minute Recording Plan",{"path":2556,"title":1676,"order":769,"module":1516,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord",{"path":2558,"title":1679,"order":1485,"module":1516,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands",{"path":2560,"title":1682,"order":1491,"module":1516,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools",{"path":2562,"title":1685,"order":1645,"module":1516,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh",{"path":2564,"title":1688,"order":1641,"module":1516,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs",{"path":2566,"title":1691,"order":1661,"module":1516,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment",{"path":2568,"title":1694,"order":1665,"module":1516,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository",{"path":2570,"title":1697,"order":1486,"module":1516,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches",{"path":2572,"title":1700,"order":1487,"module":1516,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup",{"path":2574,"title":1703,"order":1704,"module":1516,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox",{"path":2576,"title":1707,"order":1708,"module":1516,"status":1517},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware",{"path":2578,"title":1711,"order":1485,"module":14,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript",{"path":2580,"title":1714,"order":1491,"module":14,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions",{"path":2582,"title":1717,"order":1485,"module":176,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html",{"path":1492,"title":5,"order":1491,"module":176,"status":1498},{"path":2585,"title":1722,"order":1645,"module":176,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates",{"path":2587,"title":1725,"order":1485,"module":1536,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql",{"path":2589,"title":1728,"order":1491,"module":1536,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup",{"path":2591,"title":1731,"order":1645,"module":1536,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration",{"path":2593,"title":1734,"order":1641,"module":1536,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login",{"path":2595,"title":1737,"order":1485,"module":1515,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex",{"path":2597,"title":1740,"order":1491,"module":1515,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers",{"path":2599,"title":2600,"order":1645,"module":1515,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","Flash Messages And Redirect Feedback",{"path":2602,"title":1746,"order":1641,"module":1515,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile",{"path":2604,"title":1749,"order":1485,"module":1546,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization",{"path":2606,"title":1752,"order":1491,"module":1546,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement",{"path":2608,"title":1755,"order":1645,"module":1546,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content",{"path":2610,"title":1758,"order":1485,"module":1759,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data",{"path":2612,"title":1762,"order":1491,"module":1759,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration",{"path":2614,"title":1765,"order":1645,"module":1759,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions",{"path":2616,"title":1768,"order":1485,"module":1550,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability",{"path":2618,"title":1771,"order":1491,"module":1550,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro",{"path":2620,"title":1774,"order":1645,"module":1550,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax",{"path":2622,"title":1777,"order":1485,"module":1557,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations",{"path":2624,"title":1780,"order":1491,"module":1557,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination",{"path":2626,"title":1783,"order":1485,"module":1485,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles",{"path":2628,"title":1786,"order":1491,"module":1485,"status":1498},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection",{"path":2630,"title":1789,"order":1516,"module":769,"status":1498},"\u002Finternet-applications\u002Fsyllabus\u002Fsummer-2026",{"path":2632,"title":2633,"order":2634,"module":1485,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Ffinal-project-submission-worksheet","Final Project Submission Worksheet","110",{"path":2636,"title":2637,"order":2638,"module":1546,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-milestone-01-worksheet","Legacy Milestone 1 Worksheet","118",{"path":2640,"title":2641,"order":2642,"module":1546,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-multi-dimension-php-problems-worksheet","Legacy Multi-Dimension PHP Problems Worksheet","119",{"path":2644,"title":2645,"order":2634,"module":1546,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-01-account-access-and-profile-worksheet","IT202 Milestone 1 - 2026",{"path":2647,"title":2648,"order":2649,"module":1550,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-02-api-data-and-crud-worksheet","IT202 Milestone 2 - 2026","120",{"path":2651,"title":2652,"order":2653,"module":1557,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-03-user-associations-worksheet","IT202 Milestone 3 - 2026","130",{"path":2655,"title":2656,"order":1485,"module":1516,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-01-git-and-local-server-worksheet","Module 1 Worksheet: Git, GitHub, And Local Server Evidence",{"path":2658,"title":2659,"order":1491,"module":14,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-02-php-and-debugging-worksheet","Module 2 Worksheet: PHP Challenge Scenarios",{"path":2661,"title":2662,"order":1645,"module":176,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-03-forms-css-and-dom-worksheet","Module 3 Worksheet: HTML, CSS, JS Challenges",{"path":2664,"title":2665,"order":1641,"module":1536,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-04-database-auth-and-sessions-worksheet","Module 4 Worksheet: SQL Todo Challenge",{"path":2667,"title":2668,"order":1661,"module":1515,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-05-validation-and-debugging-worksheet","Module 5 Worksheet: Validation And Debugging Evidence",{"path":2670,"title":2671,"order":1665,"module":1546,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-authorization-and-crud-worksheet","Module 6 Worksheet: Authorization And CRUD Evidence",{"path":2673,"title":2674,"order":2675,"module":1546,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-multi-dimensional-php-arrays-worksheet","Module 06 Worksheet: Multi-Dimensional PHP Arrays","62",{"path":2677,"title":2678,"order":1486,"module":1759,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-07-api-testing-worksheet","Module 07 Worksheet: Project API Testing",{"path":2680,"title":2681,"order":1487,"module":1550,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-08-jquery-and-dynamic-ui-worksheet","Module 8 Worksheet: jQuery And Dynamic UI Evidence",{"path":2683,"title":2684,"order":1704,"module":1557,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-09-search-pagination-and-summary-worksheet","Module 9 Worksheet: Search, Pagination, And Summary Evidence",{"path":2686,"title":2687,"order":1708,"module":1485,"status":1517},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-10-final-project-readiness-worksheet","Module 10 Worksheet: Final Project Readiness Evidence",{"path":2689,"title":1679,"order":1485,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":2691,"title":1682,"order":1491,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":2693,"title":1685,"order":1645,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":2695,"title":1688,"order":1641,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":2697,"title":2698,"order":1661,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup","Course Repository Setup",{"path":2700,"title":2701,"order":1665,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup","Java Development Environment Setup",{"path":2703,"title":2704,"order":1485,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics","Java Basics",{"path":2706,"title":2707,"order":1491,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control","Java Flow Control",{"path":2709,"title":2710,"order":1645,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops","Java Loops",{"path":2712,"title":2713,"order":1641,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections","Java Arrays, Queue, Stack, ArrayList",{"path":2715,"title":2716,"order":1485,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input","Java User Input",{"path":2718,"title":2719,"order":1491,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers","Java Intro to OOP - Modifiers",{"path":2721,"title":2722,"order":1645,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io","Java File I\u002FO",{"path":2724,"title":2725,"order":1641,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees","Java Recursion and Trees",{"path":2727,"title":2728,"order":1485,"module":1536,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview","Java Sockets: Overview",{"path":2730,"title":2731,"order":1491,"module":1536,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate","Java OOP Intermediate",{"path":2733,"title":2734,"order":1645,"module":1536,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F03-multi-client-chat-part-1","Java Sockets: Multi-Client Chat Server Part 1",{"path":2736,"title":2737,"order":1485,"module":1515,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F05-module-5-multi-client-sockets\u002F01-multi-client-chat-part-2","Java Sockets: Multi-Client Chat Server Part 2",{"path":2739,"title":2740,"order":1491,"module":1546,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026","Java Advanced Programming Preparing for Milestone 2",{"path":2742,"title":2743,"order":1645,"module":1546,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check","Java Advanced Programming Milestone 2: GameServer Ready Check",{"path":2745,"title":2746,"order":1485,"module":1759,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F01-game-rooms-ready-check","Java Advanced Programming Milestone 2: GameRooms and Ready Check",{"path":2748,"title":2749,"order":1491,"module":1759,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F02-round-robin-turns","Java Advanced Programming Milestone 2: Turn-based Turns (Round-Robin)",{"path":2751,"title":2752,"order":1645,"module":1759,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F03-phase-based-turns","Java Advanced Programming Milestone 2: Phase-based Turns",{"path":2754,"title":2755,"order":1641,"module":1759,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns","Java Advanced Programming Milestone 2: Simultaneous Turns",{"path":2757,"title":2758,"order":1661,"module":1759,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns","Java Advanced Programming Milestone 2: Individual Turns",{"path":2760,"title":2761,"order":1485,"module":1550,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration","Java Advanced Programming Milestone 2: Grid Integration",{"path":2763,"title":2764,"order":1491,"module":1550,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration","Java Advanced Programming Milestone 2: Cards Integration",{"path":2766,"title":2767,"order":1645,"module":1550,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F03-equals-6-mini-project","Java Advanced Programming Milestone 2: Equals 6 Mini Project",{"path":2769,"title":2770,"order":1641,"module":1550,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F04-nice-day-for-fishin","Java Advanced Programming Milestone 2: Project \"Nice Day For Fishin'\"",{"path":2772,"title":2773,"order":1661,"module":1550,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro","Java Advanced Programming Java UI 2025",{"path":2775,"title":2776,"order":1485,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026","UI Integration 2026",{"path":2778,"title":2779,"order":1491,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing","UI Drawing",{"path":2781,"title":2782,"order":1645,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration","Baseline UI Integration",{"path":2784,"title":2785,"order":1641,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration","NDFF UI Integration",{"path":2787,"title":2788,"order":1661,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui","Equals 6 UI",{"path":2790,"title":2791,"order":1665,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project","Popularity Mini Project",{"path":2793,"title":2794,"order":1485,"module":1485,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup","Milestone 3 Wrapup",{"path":2796,"title":2797,"order":1491,"module":1485,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps","Deploying Java Apps",{"path":2799,"title":2800,"order":1645,"module":1485,"status":1517},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator","NDFF Away Spectator",{"path":2802,"title":2803,"order":1516,"module":769,"status":1498},"\u002Fjava-advanced-programming\u002F2e\u002Fsyllabus\u002Ffall-2026","IT114 - Advanced Programming for Information Technology",{"path":2805,"title":2806,"order":1485,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F01-course-tools-and-workflow","Course Tools And Workflow",{"path":2808,"title":2809,"order":1491,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F02-terminal-git-and-github","Terminal, Git, And GitHub Basics",{"path":2811,"title":2812,"order":1645,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F03-java-development-environment","Java Development Environment",{"path":2814,"title":2815,"order":1485,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F01-java-program-shape","The Shape Of A Java Program",{"path":2817,"title":2818,"order":1491,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F02-values-types-and-expressions","Values, Types, And Expressions",{"path":2820,"title":2821,"order":1645,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F03-conditions-loops-and-collections","Conditions, Loops, And Collections",{"path":2823,"title":2824,"order":1485,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F01-user-input-and-output","User Input And Program Output",{"path":2826,"title":2827,"order":1491,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F02-classes-objects-and-modifiers","Classes, Objects, And Modifiers",{"path":2829,"title":2830,"order":1645,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F03-file-io-paths-and-exceptions","File I\u002FO, Paths, And Exceptions",{"path":2832,"title":2833,"order":1641,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F04-recursion-and-trees","Recursion And Tree Thinking",{"path":2835,"title":2836,"order":1485,"module":1536,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F01-sockets-client-server","Sockets And Client\u002FServer Thinking",{"path":2838,"title":2839,"order":1491,"module":1536,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F02-server-socket-flow","The ServerSocket Flow",{"path":2841,"title":2842,"order":1645,"module":1536,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F03-oop-for-socket-apps","OOP For Socket Applications",{"path":2844,"title":2845,"order":1485,"module":1515,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F01-multi-client-server-shape","Multi-Client Server Shape",{"path":2847,"title":2848,"order":1491,"module":1515,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F02-threads-shared-state-and-message-routing","Threads, Shared State, And Message Routing",{"path":2850,"title":2851,"order":1645,"module":1515,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F03-debugging-socket-programs","Debugging Socket Programs",{"path":2853,"title":2854,"order":769,"module":769,"status":1517},"\u002Fjava-advanced-programming\u002Fbook\u002Ftoc","Java Advanced Programming: Table of Contents",{"path":2856,"title":2857,"order":1496,"module":1496,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F00-revision-plan","Java Advanced Programming Presentation Revision Plan",{"path":2859,"title":2860,"order":1496,"module":1496,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Java Advanced Programming Twenty-Minute Recording Plan",{"path":2862,"title":1679,"order":1485,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":2864,"title":1682,"order":1491,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":2866,"title":1685,"order":1645,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":2868,"title":1688,"order":1641,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":2870,"title":2698,"order":1661,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup",{"path":2872,"title":2701,"order":1665,"module":1516,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup",{"path":2874,"title":2704,"order":1485,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics",{"path":2876,"title":2707,"order":1491,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control",{"path":2878,"title":2710,"order":1645,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops",{"path":2880,"title":2713,"order":1641,"module":14,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections",{"path":2882,"title":2716,"order":1485,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input",{"path":2884,"title":2719,"order":1491,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers",{"path":2886,"title":2722,"order":1645,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io",{"path":2888,"title":2725,"order":1641,"module":176,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees",{"path":2890,"title":2728,"order":1485,"module":1536,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview",{"path":2892,"title":2731,"order":1491,"module":1536,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate",{"path":2894,"title":2734,"order":1645,"module":1536,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F03-multi-client-chat-part-1",{"path":2896,"title":2737,"order":1485,"module":1515,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F05-module-5-multi-client-sockets\u002F01-multi-client-chat-part-2",{"path":2898,"title":2899,"order":1485,"module":1546,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F01-prepare-milestone-2-2025","Java Advanced Programming Preparing for Milestone2 2025",{"path":2901,"title":2740,"order":1491,"module":1546,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026",{"path":2903,"title":2743,"order":1645,"module":1546,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check",{"path":2905,"title":2746,"order":1485,"module":1759,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F01-game-rooms-ready-check",{"path":2907,"title":2749,"order":1491,"module":1759,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F02-round-robin-turns",{"path":2909,"title":2752,"order":1645,"module":1759,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F03-phase-based-turns",{"path":2911,"title":2755,"order":1641,"module":1759,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns",{"path":2913,"title":2758,"order":1661,"module":1759,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns",{"path":2915,"title":2761,"order":1485,"module":1550,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration",{"path":2917,"title":2764,"order":1491,"module":1550,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration",{"path":2919,"title":2767,"order":1645,"module":1550,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F03-equals-6-mini-project",{"path":2921,"title":2770,"order":1641,"module":1550,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F04-nice-day-for-fishin",{"path":2923,"title":2773,"order":1661,"module":1550,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro",{"path":2925,"title":2776,"order":1485,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026",{"path":2927,"title":2779,"order":1491,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing",{"path":2929,"title":2782,"order":1645,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration",{"path":2931,"title":2785,"order":1641,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration",{"path":2933,"title":2788,"order":1661,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui",{"path":2935,"title":2791,"order":1665,"module":1557,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project",{"path":2937,"title":2794,"order":1485,"module":1485,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup",{"path":2939,"title":2797,"order":1491,"module":1485,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps",{"path":2941,"title":2800,"order":1645,"module":1485,"status":1517},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator",{"path":2943,"title":2944,"order":1485,"module":1516,"status":1517},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview","Required Architecture Overview",{"path":2946,"title":2947,"order":1516,"module":769,"status":1498},"\u002Fsystems-integration\u002F2e\u002Fsyllabus\u002Ffall-2026","IT490 - Systems Integration Syllabus",{"path":2949,"title":2950,"order":1516,"module":769,"status":1498},"\u002Fsystems-integration","Systems Integration",{"path":2952,"title":2953,"order":1496,"module":1496,"status":1517},"\u002Fsystems-integration\u002Fpresentations-revised\u002F00-revision-plan","Systems Integration Presentation Revision Plan",{"path":2955,"title":2956,"order":1496,"module":1496,"status":1517},"\u002Fsystems-integration\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Systems Integration Twenty-Minute Recording Plan",{"path":2958,"title":2944,"order":1485,"module":1516,"status":1498},"\u002Fsystems-integration\u002Fpresentations\u002F01-required-architecture-overview",{"path":2960,"title":2947,"order":1516,"module":769,"status":1498},"\u002Fsystems-integration\u002Fsyllabus\u002Fsummer-2026",{"path":2962,"title":2963,"order":1496,"module":1496,"status":1496},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-authentication-authorization-core-2026-draft","IT490 Authentication and Authorization Core Milestone (2026)",{"path":2965,"title":2966,"order":1496,"module":1496,"status":1496},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-centralized-logging-milestone-draft","IT490 Centralized Logging Milestone",{"path":2968,"title":2969,"order":1496,"module":1496,"status":1496},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-3-resiliency-2026-draft","IT490 Milestone 3 - Deployment, Promotion, And Recovery",{"path":2971,"title":2972,"order":1496,"module":1496,"status":1496},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-4-availability-2026-draft","IT490 Milestone 4 - Availability, Load Balancing, And Recovery",{"path":2974,"title":2975,"order":1491,"module":769,"status":1517},"\u002Fsystems-integration\u002Fworksheets\u002Fmeeting-minutes-template","IT490 Meeting Minutes Template",{"path":2977,"title":2978,"order":1645,"module":769,"status":1517},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-changelog-template","IT490 Project Change Log Template",{"path":2980,"title":2981,"order":1485,"module":769,"status":1517},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-proposal-template","IT490 Project Proposal Template",1788152085975]