[{"data":1,"prerenderedAt":2591},["ShallowReactive",2],{"content-page:\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback":3,"content-page-quiz:none":1104,"content-navigation-index":1118},{"id":4,"title":5,"audience":6,"body":7,"contentType":1089,"course":1090,"description":1091,"estimateBasis":1092,"estimatedDiscussionMinutes":1093,"estimatedLiveMinutes":1094,"estimatedTotalMinutes":1095,"extension":1096,"meta":1097,"module":1098,"navigation":1099,"order":1100,"path":1101,"presentationRole":1102,"promptAssist":1103,"revision":1104,"semester":1104,"seo":1105,"status":1106,"stem":1107,"syllabus":1104,"tags":1108,"updated":1104,"videoDuration":1113,"videoId":1114,"videoLink":1115,"videoTitle":1116,"week":1098,"__hash__":1117},"content\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback.md","Flash Messages And Redirect Feedback","student",{"type":8,"value":9,"toc":1066},"minimark",[10,39,111,209,259,319,399,433,470,546,583,612,644,704,755,793,846,884,950,1014],[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",{},"Flash messages carry feedback across one redirect",[24,25,26,30,33,36],"ul",{},[27,28,29],"li",{},"Normal variables disappear when the browser requests the next page",[27,31,32],{},"Session data can hold a short queue of one-time messages",[27,34,35],{},"The next page displays the messages and clears them",[27,37,38],{},"This supports POST-Redirect-GET without losing success or error feedback",[11,40,42,45],{"id":41,"level":14},"practice-workspace",[16,43,44],{"id":41},"Practice Workspace",[24,46,47,62,68,73,79,84,89,95,98,104],{},[27,48,49,50,54,55,58,59],{},"Work in root ",[51,52,53],"code",{},"lib\u002F",", root ",[51,56,57],{},"partials\u002F",", and ",[51,60,61],{},"public_html\u002Fproject\u002F",[27,63,64,65],{},"Create ",[51,66,67],{},"lib\u002Fflash_messages.php",[27,69,64,70],{},[51,71,72],{},"partials\u002Fflash.php",[27,74,75,76],{},"Update ",[51,77,78],{},"lib\u002Frender_functions.php",[27,80,75,81],{},[51,82,83],{},"lib\u002Fapp.php",[27,85,75,86],{},[51,87,88],{},"public_html\u002Fproject\u002Fhelpers.js",[27,90,91,92],{},"Update the shared project stylesheet: ",[51,93,94],{},"public_html\u002Fproject\u002Fstyles.css",[27,96,97],{},"Update register and login browser validation to use flash feedback",[27,99,100,101],{},"Lesson branch: ",[51,102,103],{},"Milestone1-Part05-Flash-Messages",[27,105,106,107,110],{},"After a working change: run ",[51,108,109],{},"git status",", stage the changed files, and commit",[11,112,114,117,122],{"id":113,"level":14},"flash-helper",[16,115,116],{"id":113},"Flash Helper",[20,118,64,119,121],{},[51,120,67],{},".",[123,124,128,145],"two-col",{"gap":125,"left-width":126,"right-width":127},"lg","1.12fr","0.88fr",[129,130,132,137],"template",{"v-slot:left":131},"",[133,134],"code-snippet",{"language":135,"src":136},"php","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fflash-helper-02.php",[24,138,139,142],{},[27,140,141],{},"Validation helpers still collect errors; flash helpers decide how those errors are displayed",[27,143,144],{},"Store user-facing text, not internal error details",[129,146,147,150,156,163,169,175,186,202],{"v-slot:right":131},[27,148,149],{},"Flash helpers require an active session",[27,151,152,155],{},[51,153,154],{},"flash($msg, $color)"," uses the same shared-helper pattern as the rest of the project",[27,157,158,159,162],{},"Each ",[51,160,161],{},"flash(...)"," call appends one message instead of replacing the previous one",[27,164,165,168],{},[51,166,167],{},"flash_errors($errors)"," bridges validation arrays into queued flash messages",[27,170,171,174],{},[51,172,173],{},"get_messages()"," returns all queued messages and clears them",[27,176,177,178,181,182,185],{},"Messages use ",[51,179,180],{},"text"," and ",[51,183,184],{},"color"," keys",[27,187,188,189,192,193,192,196,192,199],{},"Colors stay predictable and Bootstrap-like: ",[51,190,191],{},"success",", ",[51,194,195],{},"danger",[51,197,198],{},"warning",[51,200,201],{},"info",[27,203,204,205,208],{},"Use known color names so the generated ",[51,206,207],{},"alert-*"," class has a matching style",[11,210,212,215,220,223],{"id":211,"level":14},"wire-flash-into-app",[16,213,214],{"id":211},"Wire Flash Into App",[20,216,217,218,121],{},"Add the flash helper to ",[51,219,83],{},[133,221],{"language":135,"src":222},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fwire-flash-into-app-03.php",[24,224,225,234,240,256],{},[27,226,227,230,231],{},[51,228,229],{},"session_start()"," must run before flash helpers use ",[51,232,233],{},"$_SESSION",[27,235,236,237],{},"Project pages keep requiring ",[51,238,239],{},"..\u002F..\u002Flib\u002Fapp.php",[27,241,242,243,192,246,192,249,58,252,255],{},"Keep the existing ",[51,244,245],{},"db.php",[51,247,248],{},"render_functions.php",[51,250,251],{},"validations.php",[51,253,254],{},"user_helpers.php"," requires",[27,257,258],{},"Flash works on any page that uses the shared app setup",[11,260,262,265,269],{"id":261,"level":14},"flash-partial",[16,263,264],{"id":261},"Flash Partial",[20,266,64,267,121],{},[51,268,72],{},[123,270,273,278],{"gap":125,"left-width":271,"right-width":272},"1.18fr","0.82fr",[129,274,275],{"v-slot:left":131},[133,276],{"language":135,"src":277},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fflash-partial-04.php",[129,279,280],{"v-slot:right":131},[24,281,282,285,290,293,296,303,306,309,316],{},[27,283,284],{},"Displays every queued message",[27,286,287,288],{},"Reads and clears messages through ",[51,289,173],{},[27,291,292],{},"Message text is escaped before output",[27,294,295],{},"Color is escaped before it becomes part of a class name",[27,297,298,299,302],{},"Uses Bootstrap-like ",[51,300,301],{},"alert alert-*"," class names",[27,304,305],{},"Keeps component positioning CSS with this partial",[27,307,308],{},"Keeps temporary alert color styles in the project stylesheet",[27,310,311,312,315],{},"Temporarily prefixes PHP messages with ",[51,313,314],{},"(php)"," for milestone evidence",[27,317,318],{},"The JavaScript section is explained in the next slides",[11,320,323,326],{"id":321,"level":322},"flash-auto-dismiss","3",[16,324,325],{"id":321},"Flash Auto Dismiss",[123,327,330,373],{"gap":125,"left-width":328,"right-width":329},"1.05fr","0.95fr",[129,331,332,336],{"v-slot:left":131},[133,333],{"language":334,"src":335},"js","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fflash-auto-dismiss-13.js",[24,337,338,357,364,370],{},[27,339,340,343,344],{},[51,341,342],{},"flash_message_delay"," is a setting you can change",[24,345,346],{},[27,347,348,349,352,353,356],{},"Recommended: ",[51,350,351],{},"30000"," for gathering evidence otherwise ~",[51,354,355],{},"5000"," for 5-second display",[27,358,359,360,363],{},"Every ",[51,361,362],{},"100"," milliseconds, the script checks visible flash rows",[27,365,366,367],{},"When a row is first seen, it stores its future removal time in ",[51,368,369],{},"data-remove-at",[27,371,372],{},"Once the saved time has passed, the row is removed",[129,374,375,380],{"v-slot:right":131},[376,377,379],"h3",{"id":378},"why-wrap-it","Why Wrap It?",[24,381,382,389,392],{},[27,383,384,385,388],{},"The wrapping ",[51,386,387],{},"(() => { ... })();"," keeps helper variables local to this script",[27,390,391],{},"This pattern is often called a self-executing function, or Immediately Invoked Function Expression (IIFE)",[27,393,394,395,398],{},"JavaScript creates the function, then the final ",[51,396,397],{},"()"," immediately runs it",[11,400,402,405,411,415,418],{"id":401,"level":322},"flash-styling",[16,403,404],{"id":401},"Flash Styling",[20,406,407,408,410],{},"Append the flash-message styles to the existing ",[51,409,94],{}," from the previous lesson.",[133,412],{"language":413,"src":414},"css","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fflash-styling-05.css",[20,416,417],{},"These temporary alert color styles imitate Bootstrap's alert classes until Bootstrap UI is added later.",[24,419,420,430],{},[27,421,422,423,426,427,429],{},"The positional ",[51,424,425],{},"#flash"," styles stay in ",[51,428,72],{}," because they belong to that component",[27,431,432],{},"The alert color classes can be deleted later when Bootstrap provides them",[11,434,436,439,444,447],{"id":435,"level":322},"add-flash-render-helper",[16,437,438],{"id":435},"Add Flash Render Helper",[20,440,75,441,443],{},[51,442,78],{}," so pages can render flash messages without knowing the partial path.",[133,445],{"language":135,"src":446},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fadd-flash-render-helper-11.php",[24,448,449,455,464,467],{},[27,450,242,451,454],{},[51,452,453],{},"render_nav()"," function",[27,456,457,460,461,463],{},[51,458,459],{},"render_flash_messages()"," requires the root ",[51,462,72],{}," file",[27,465,466],{},"Pages call the render helper instead of requiring the partial directly",[27,468,469],{},"This keeps page files focused on page flow instead of partial paths",[11,471,473,476,481],{"id":472,"level":14},"browser-flash-helper",[16,474,475],{"id":472},"Browser Flash Helper",[20,477,75,478,480],{},[51,479,88],{}," so browser validation uses the same flash area.",[123,482,485,507],{"gap":125,"left-width":483,"right-width":484},"1.08fr","0.92fr",[129,486,487,490],{"v-slot:left":131},[133,488],{"language":334,"src":489},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fupdate-browser-flash-helper-08.js",[24,491,492],{},[27,493,494,495,498,499],{},"Browser-rendered messages temporarily display a ",[51,496,497],{},"(js)"," prefix\n",[24,500,501,504],{},[27,502,503],{},"The prefix helps identify client-side validation evidence for milestone submissions",[27,505,506],{},"Remove it after all of the milestones (1-3) evidence is complete",[129,508,509,515,522,528,534,537,540],{"v-slot:right":131},[27,510,511,514],{},[51,512,513],{},"flash(message, color)"," adds a browser-side message to the shared flash area",[27,516,517,518,521],{},"It appends one ",[51,519,520],{},".alert"," row per message",[27,523,524,527],{},[51,525,526],{},"show_validation_errors(errors)"," clears old browser messages first",[27,529,530,531,533],{},"Each validation error becomes its own ",[51,532,195],{}," flash message",[27,535,536],{},"The flash partial handles message timing for both PHP and JS messages",[27,538,539],{},"PHP flash messages still come from the session after redirects",[27,541,542,543,545],{},"The shared ",[51,544,425],{}," container keeps both feedback paths visually consistent",[11,547,549,553,556],{"id":548,"level":322},"update-register-browser-flash",[16,550,552],{"id":551},"update-register-browser-feedback","Update Register Browser Feedback",[133,554],{"language":135,"src":555},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fregister-flash-validation-09.php",[24,557,558,568,571,578],{},[27,559,560,561,564,565],{},"Remove the old ",[51,562,563],{},"#form-message"," element from ",[51,566,567],{},"register.php",[27,569,570],{},"Keep the existing form fields",[27,572,573,574,577],{},"The page-specific ",[51,575,576],{},"validate(form)"," still chooses register rules",[27,579,580,581],{},"Each collected error is flashed individually by ",[51,582,526],{},[11,584,586,590,593],{"id":585,"level":322},"update-login-browser-flash",[16,587,589],{"id":588},"update-login-browser-feedback","Update Login Browser Feedback",[133,591],{"language":135,"src":592},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Flogin-flash-validation-10.php",[24,594,595,603,606,609],{},[27,596,560,597,564,600],{},[51,598,599],{},"#message",[51,601,602],{},"login.php",[27,604,605],{},"Keep the existing email and password fields",[27,607,608],{},"Login uses fewer validation helpers than registration",[27,610,611],{},"Browser-side login errors now appear in the same flash area",[11,613,615,618,621,624],{"id":614,"level":14},"post-redirect-get",[16,616,617],{"id":614},"POST-Redirect-GET",[20,619,620],{},"Use this pattern after a successful form submission so refresh does not submit the form again.",[133,622],{"language":180,"src":623},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fpost-redirect-get-01.txt",[24,625,626,629,632,635,638,641],{},[27,627,628],{},"The POST request validates and changes data",[27,630,631],{},"The redirect moves the browser away from the POST request",[27,633,634],{},"The GET page can be refreshed safely",[27,636,637],{},"Flash messages carry success or error feedback across that redirect",[27,639,640],{},"Without this pattern, refresh may ask to resubmit the form and repeat the action",[27,642,643],{},"Validation errors can stay on the same request when the form needs sticky values",[11,645,647,650,653,666],{"id":646,"level":14},"set-before-redirect",[16,648,649],{"id":646},"Set Before Redirect",[20,651,652],{},"Update form-handling pages so they set flash feedback before redirecting.",[123,654,656,661],{"gap":125,"left-width":655,"right-width":655},"1fr",[129,657,658],{"v-slot:left":131},[133,659],{"language":135,"src":660},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fset-before-redirect-06.php",[129,662,663],{"v-slot:right":131},[133,664],{"language":135,"src":665},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fset-before-redirect-login-12.php",[24,667,668,671,679,685,692,701],{},[27,669,670],{},"These snippets update existing POST handling blocks",[27,672,673,675,676],{},[51,674,161],{}," must happen before ",[51,677,678],{},"header(\"Location: ...\")",[27,680,681,682,684],{},"Calling ",[51,683,161],{}," multiple times queues multiple messages for the next page",[27,686,687,688,691],{},"Successful submissions redirects after the success flash is queued; ",[51,689,690],{},"exit"," stops the POST after a redirect header is sent",[27,693,694,696,697,700],{},[51,695,167],{}," keeps pages from repeating a ",[51,698,699],{},"foreach"," loop",[27,702,703],{},"The validation-error redirect lines are commented out so the rest of the page can reload with sticky form values",[11,705,707,710,713],{"id":706,"level":14},"display-after-redirect",[16,708,709],{"id":706},"Display After Redirect",[20,711,712],{},"Render flash messages at the end of the page body.",[123,714,715,720],{"gap":125,"left-width":328,"right-width":329},[129,716,717],{"v-slot:left":131},[133,718],{"language":135,"src":719},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback\u002Fdisplay-after-redirect-07.php",[129,721,722],{"v-slot:right":131},[24,723,724,735,742,749],{},[27,725,726,727],{},"Most pages should be able to display feedback\n",[24,728,729,732],{},[27,730,731],{},"Form pages especially need flash output",[27,733,734],{},"Any page that can be redirected to should be able to display queued messages",[27,736,737,739,740,463],{},[51,738,459],{}," loads the root ",[51,741,72],{},[27,743,744,745,748],{},"Call it as the last PHP in ",[51,746,747],{},"\u003Cbody>"," so the page can queue messages before they are displayed",[27,750,751,752,754],{},"Browser validation can still use ",[51,753,425],{}," because the element exists after the page loads",[11,756,758,761],{"id":757,"level":14},"test-flash-flow",[16,759,760],{"id":757},"Test Flash Flow",[24,762,763,766,769,772,775,778,781,784,790],{},[27,764,765],{},"Trigger a successful registration or login",[27,767,768],{},"Confirm the POST redirects to a GET page",[27,770,771],{},"Confirm the message appears once",[27,773,774],{},"Refresh the GET page",[27,776,777],{},"Confirm the message disappears",[27,779,780],{},"Submit an invalid register\u002Flogin form before POST",[27,782,783],{},"Confirm each browser validation error appears as a separate flash message",[27,785,786,787,789],{},"Trigger a failure that sets a ",[51,788,195],{}," message",[27,791,792],{},"Confirm unexpected system details go to logs, not the flash",[11,794,796,799],{"id":795,"level":14},"common-mistakes",[16,797,798],{"id":795},"Common Mistakes",[24,800,801,806,812,815,818,821,824,833,841],{},[27,802,803,804],{},"Setting flash after ",[51,805,678],{},[27,807,808,809,811],{},"Forgetting ",[51,810,690],{}," after redirect",[27,813,814],{},"Printing raw exception messages as user feedback",[27,816,817],{},"Building flash HTML in every page instead of one partial",[27,819,820],{},"Storing only one message when the page may need multiple messages",[27,822,823],{},"Leaving success or error flags in query strings",[27,825,826,827,829,830,832],{},"Leaving old ",[51,828,599],{}," or ",[51,831,563],{}," elements after standardizing flash feedback",[27,834,835,836,838,839],{},"Forgetting to call ",[51,837,459],{}," near the end of ",[51,840,747],{},[27,842,681,843,845],{},[51,844,459],{}," too early, before the page has queued all messages for the request",[11,847,849,852],{"id":848,"level":14},"knowledge-check",[16,850,851],{"id":848},"Knowledge Check",[24,853,854,857,863,866,875,878],{},[27,855,856],{},"Why does a flash message need session storage?",[27,858,859,860,862],{},"Why should ",[51,861,173],{}," clear messages after reading them?",[27,864,865],{},"What problem does POST-Redirect-GET prevent?",[27,867,868,869,871,872,874],{},"Why does ",[51,870,161],{}," run before ",[51,873,678],{},"?",[27,876,877],{},"Why should the flash partial escape message text?",[27,879,880,881,883],{},"Why does JavaScript need the empty ",[51,882,425],{}," container even when there are no PHP messages?",[11,885,887,891],{"id":886,"level":14},"further-learning",[16,888,890],{"id":889},"key-terms-and-further-learning","Key Terms And Further Learning",[123,892,893,917],{"gap":125,"left-width":655,"right-width":655},[129,894,895,899,906,911],{"v-slot:left":131},[376,896,898],{"id":897},"key-terms","Key Terms",[20,900,901,905],{},[902,903,904],"strong",{},"Flash message"," - A one-time message stored in the session for the next page load",[20,907,908,910],{},[902,909,617],{}," - A form pattern that redirects after a successful POST",[20,912,913,916],{},[902,914,915],{},"Queue"," - A list that can hold multiple messages in order",[129,918,919,922],{"v-slot:right":131},[376,920,921],{"id":886},"Further Learning",[24,923,924,933,943],{},[27,925,926],{},[927,928,932],"a",{"href":929,"rel":930},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Fbook.session.php",[931],"nofollow","PHP sessions",[27,934,935],{},[927,936,939,940],{"href":937,"rel":938},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Ffunction.header.php",[931],"PHP ",[51,941,942],{},"header",[27,944,945],{},[927,946,949],{"href":947,"rel":948},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FRedirections",[931],"MDN HTTP redirects",[11,951,953,957],{"id":952,"level":14},"finish-lesson-branch",[16,954,956],{"id":955},"finish-the-lesson-branch","Finish The Lesson Branch",[958,959,960,965,971,977,983,993,1004],"ol",{},[27,961,962,963],{},"Check the final file list: ",[51,964,109],{},[27,966,967,968],{},"Stage the lesson work: ",[51,969,970],{},"git add lib\u002F partials\u002F public_html\u002Fproject\u002F",[27,972,973,974],{},"Commit the practice work: ",[51,975,976],{},"git commit -m \"Add project flash messages\"",[27,978,979,980],{},"Push the branch: ",[51,981,982],{},"git push origin Milestone1-Part05-Flash-Messages",[27,984,985,986,988,989,992],{},"On GitHub, open a pull request from ",[51,987,103],{}," into ",[51,990,991],{},"qa",", review it, then merge",[27,994,995,996,998,999,988,1001],{},"Briefly test ",[51,997,991],{},", then open and merge a pull request from ",[51,1000,991],{},[51,1002,1003],{},"prod",[27,1005,1006,1007,1010,1011],{},"Prepare for the next lesson: ",[51,1008,1009],{},"git checkout qa"," then ",[51,1012,1013],{},"git pull origin qa",[11,1015,1017,1020],{"id":1016,"level":14},"summary",[16,1018,1019],{"id":1016},"Summary",[24,1021,1022,1025,1033,1038,1046,1052,1055,1058],{},[27,1023,1024],{},"Flash messages let POST pages redirect without losing user feedback",[27,1026,1027,1029,1030],{},[51,1028,154],{}," queues user-facing messages in ",[51,1031,1032],{},"$_SESSION[\"flash\"]",[27,1034,1035,1037],{},[51,1036,173],{}," reads and clears the queue",[27,1039,1040,1042,1043,1045],{},[51,1041,459],{}," loads ",[51,1044,72],{}," as the last PHP in the page body",[27,1047,1048,1051],{},[51,1049,1050],{},"helpers.js"," can append browser-side validation messages to the same flash area",[27,1053,1054],{},"POST-Redirect-GET prevents duplicate form submissions on refresh",[27,1056,1057],{},"Flash styling extends the shared project stylesheet introduced in the previous lesson",[27,1059,1060,1061],{},"GitHub reference checkpoint: ",[927,1062,1065],{"href":1063,"rel":1064},"https:\u002F\u002Fgithub.com\u002FMattToegel\u002FIT202-2026\u002Ftree\u002FMilestone1-Part05-Flash-Messages",[931],"Milestone1-Part05-Flash-Messages branch",{"title":131,"searchDepth":1067,"depth":1067,"links":1068},2,[1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088],{"id":13,"depth":1067,"text":18},{"id":41,"depth":1067,"text":44},{"id":113,"depth":1067,"text":116},{"id":211,"depth":1067,"text":214},{"id":261,"depth":1067,"text":264},{"id":321,"depth":1067,"text":325},{"id":401,"depth":1067,"text":404},{"id":435,"depth":1067,"text":438},{"id":472,"depth":1067,"text":475},{"id":551,"depth":1067,"text":552},{"id":588,"depth":1067,"text":589},{"id":614,"depth":1067,"text":617},{"id":646,"depth":1067,"text":649},{"id":706,"depth":1067,"text":709},{"id":757,"depth":1067,"text":760},{"id":795,"depth":1067,"text":798},{"id":848,"depth":1067,"text":851},{"id":889,"depth":1067,"text":890},{"id":955,"depth":1067,"text":956},{"id":1016,"depth":1067,"text":1019},"presentation","Internet Applications","Add session-backed flash messages so project pages can show one-time feedback after redirects.","Face-to-face class of about 40 students; includes typing time, troubleshooting, checks, and short questions.","10","50","60","md",{},"5",true,"30","\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","Core",false,null,{"title":5,"description":1091},"published","internet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback",[1109,1110,1111,1112],"validation","profiles","accounts","sessions","35:36","0oJ7GniLUnQ","https:\u002F\u002Fyoutu.be\u002F0oJ7GniLUnQ","Flash Messages","NCF16kZEK_eDOiifzy6G8hYdrRrVkrEjgK51GSQjm7g",[1119,1122,1127,1130,1134,1137,1140,1143,1147,1150,1153,1157,1161,1164,1168,1171,1174,1178,1181,1184,1187,1189,1191,1193,1195,1197,1199,1201,1204,1207,1210,1213,1216,1218,1221,1224,1228,1232,1236,1240,1243,1246,1249,1253,1256,1259,1262,1265,1268,1271,1274,1277,1279,1282,1285,1288,1291,1294,1297,1300,1303,1307,1311,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1370,1373,1376,1379,1382,1385,1388,1391,1394,1397,1400,1404,1407,1410,1413,1416,1419,1422,1425,1428,1431,1434,1437,1440,1443,1446,1449,1452,1455,1458,1461,1464,1467,1470,1473,1476,1479,1482,1485,1488,1491,1494,1497,1500,1503,1506,1509,1512,1515,1518,1521,1524,1527,1530,1533,1536,1539,1542,1545,1548,1551,1554,1557,1560,1563,1566,1569,1572,1575,1578,1581,1584,1587,1590,1593,1596,1599,1602,1605,1608,1611,1614,1617,1620,1623,1626,1629,1632,1635,1638,1641,1644,1647,1650,1653,1656,1659,1662,1665,1668,1671,1674,1677,1680,1683,1686,1689,1692,1695,1698,1701,1704,1707,1710,1713,1716,1719,1722,1725,1728,1731,1734,1737,1740,1743,1746,1749,1752,1755,1758,1762,1765,1768,1771,1774,1777,1780,1783,1786,1789,1792,1795,1798,1801,1804,1807,1810,1813,1816,1819,1822,1825,1828,1831,1834,1837,1840,1843,1846,1849,1852,1855,1858,1861,1864,1867,1870,1873,1876,1879,1882,1885,1888,1891,1894,1897,1900,1903,1906,1909,1912,1915,1918,1921,1924,1927,1930,1933,1936,1939,1942,1945,1948,1951,1954,1957,1960,1963,1966,1969,1972,1975,1978,1981,1984,1987,1990,1993,1996,1999,2002,2005,2008,2011,2014,2017,2020,2023,2026,2029,2032,2035,2038,2041,2044,2047,2050,2053,2056,2059,2062,2065,2068,2071,2074,2077,2080,2083,2086,2089,2092,2095,2098,2101,2104,2107,2110,2113,2116,2119,2122,2125,2128,2131,2134,2137,2140,2143,2147,2150,2153,2156,2159,2162,2165,2167,2169,2171,2173,2175,2177,2179,2181,2183,2185,2187,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207,2209,2210,2212,2214,2216,2218,2220,2222,2224,2226,2228,2230,2232,2234,2236,2238,2240,2244,2248,2252,2255,2259,2263,2266,2269,2272,2275,2278,2281,2285,2288,2291,2294,2297,2299,2301,2303,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,2472,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492,2494,2496,2498,2500,2502,2504,2506,2509,2511,2513,2515,2517,2519,2521,2523,2525,2527,2529,2531,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2554,2557,2560,2563,2566,2568,2570,2573,2576,2579,2582,2585,2588],{"path":1120,"title":1121,"order":1104,"module":1104,"status":1104},"\u002Fabout","About Content Version 3",{"path":1123,"title":1124,"order":1098,"module":1125,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-first-concept","First Concept","1","draft",{"path":1128,"title":1129,"order":1093,"module":1125,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game","What is a Game?",{"path":1131,"title":1132,"order":1133,"module":1125,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay","What is Gameplay?","20",{"path":1135,"title":1136,"order":1093,"module":14,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F02-game-balance\u002F01-game-balance","Game Balance",{"path":1138,"title":1139,"order":1093,"module":322,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory","Game Design: Color Theory",{"path":1141,"title":1142,"order":1133,"module":322,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel","Game Design - Look and Feel",{"path":1144,"title":1145,"order":1093,"module":1146,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics","Game Mechanics","4",{"path":1148,"title":1149,"order":1133,"module":1146,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-game-mechanics\u002F02-decks","Technical: Decks and Cards",{"path":1151,"title":1152,"order":1093,"module":1098,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth, Complexity, And Randomness",{"path":1154,"title":1155,"order":1133,"module":1156,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning From Concept To Prototype","6",{"path":1158,"title":1159,"order":1093,"module":1160,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts And Design","8",{"path":1162,"title":1163,"order":1133,"module":1160,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Engine Features And Browser Feasibility",{"path":1165,"title":1166,"order":1093,"module":1167,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs","Entity-Based Systems","9",{"path":1169,"title":1170,"order":1093,"module":1093,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-player-facing-feature-systems\u002F01-spatial-rules-levels-and-interface","Spatial Rules, Levels, And Interface",{"path":1172,"title":1173,"order":1133,"module":1093,"status":1126},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-player-facing-feature-systems\u002F02-actors-behavior-and-effects","Actors, Behavior, And Effects",{"path":1175,"title":1176,"order":1125,"module":1177,"status":1106},"\u002Fgame-architecture-and-design\u002F2e\u002Fsyllabus\u002Ffall-2026","Course Syllabus: IT265 - Game Architecture and Design","0",{"path":1179,"title":1180,"order":1125,"module":1177,"status":1126},"\u002Fgame-architecture-and-design","Game Architecture and Design",{"path":1182,"title":1183,"order":1104,"module":1104,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F00-revision-plan","Game Architecture And Design Presentation Revision Plan",{"path":1185,"title":1186,"order":1104,"module":1104,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Game Architecture And Design Twenty-Minute Recording Plan",{"path":1188,"title":1129,"order":1093,"module":1125,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game",{"path":1190,"title":1132,"order":1133,"module":1125,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay",{"path":1192,"title":1136,"order":1093,"module":14,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F02-game-balance\u002F01-game-balance",{"path":1194,"title":1139,"order":1093,"module":322,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory",{"path":1196,"title":1142,"order":1133,"module":322,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel",{"path":1198,"title":1145,"order":1093,"module":1146,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics",{"path":1200,"title":1149,"order":1133,"module":1146,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F02-decks",{"path":1202,"title":1203,"order":1093,"module":1098,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth vs Complexity and Randomness",{"path":1205,"title":1206,"order":1093,"module":1156,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F01-first-concept","First Concept: Updated Lesson",{"path":1208,"title":1209,"order":1133,"module":1156,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning and Management",{"path":1211,"title":1212,"order":1093,"module":1160,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts and Design",{"path":1214,"title":1215,"order":1133,"module":1160,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Architecture: Features of a Game Engine",{"path":1217,"title":1166,"order":1093,"module":1167,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs",{"path":1219,"title":1220,"order":1093,"module":1093,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F01-level-mechanics","Game Design: Introduction to Level Mechanics",{"path":1222,"title":1223,"order":1133,"module":1093,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F02-grids","Technical: Square vs Hex Grids in Board Games",{"path":1225,"title":1226,"order":1093,"module":1227,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F11-user-interfaces\u002F01-user-interfaces","Game Design: User Interfaces","11",{"path":1229,"title":1230,"order":1093,"module":1231,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F12-actor-representations\u002F01-actors","Game Design: Actor Representations","12",{"path":1233,"title":1234,"order":1093,"module":1235,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F13-artificial-intelligence\u002F01-ai","Game Design: AI","13",{"path":1237,"title":1238,"order":1093,"module":1239,"status":1126},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F14-particles-and-physics\u002F01-particles-and-physics","IT265: Particle Systems and Physics Engine","14",{"path":1241,"title":1242,"order":1125,"module":1177,"status":1126},"\u002Fgame-architecture-and-design\u002Fsyllabus\u002Fspring-2026","Course Syllabus: IT265 - Game Architecture",{"path":1244,"title":1245,"order":1093,"module":1177,"status":1126},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fcase-study-1-atari-worksheet","Case Study 1 - Atari",{"path":1247,"title":1248,"order":1133,"module":1177,"status":1126},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-color-theory-worksheet","IT265 Case Study - Color Theory",{"path":1250,"title":1251,"order":1252,"module":1177,"status":1126},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-personal-choice-worksheet","IT265 Case Study - Personal Choice","40",{"path":1254,"title":1255,"order":1100,"module":1177,"status":1126},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-design-treatment-checkpoint-worksheet","IT265 Design Treatment Checkpoint",{"path":1257,"title":1258,"order":1093,"module":1125,"status":1126},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F01-git-and-terminal-setup","Git And Terminal Setup",{"path":1260,"title":1261,"order":1133,"module":1125,"status":1126},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F02-cli-foundations","CLI Foundations",{"path":1263,"title":1264,"order":1100,"module":1125,"status":1126},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F03-github-setup-and-ssh","GitHub Setup And SSH",{"path":1266,"title":1267,"order":1252,"module":1125,"status":1126},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F04-local-git-workflow-and-course-repositories","Local Git Workflow And Course Repositories",{"path":1269,"title":1270,"order":1094,"module":1125,"status":1126},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F05-vscode-setup-and-course-extensions","VS Code Setup And Course Extensions",{"path":1272,"title":1273,"order":1095,"module":1125,"status":1126},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F06-trace-learning-journal","TRACE Learning Journal Foundations",{"path":1275,"title":1276,"order":1104,"module":1104,"status":1104},"\u002Fgeneral\u002Fbasic-cli","Basic Command Line",{"path":1278,"title":1276,"order":1093,"module":1125,"status":1104},"\u002Fgeneral\u002Fbasic-command-line",{"path":1280,"title":1281,"order":1104,"module":1104,"status":1106},"\u002F","Ethereal Lab Course Materials",{"path":1283,"title":1284,"order":1177,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord","Learn Courses Platform And Discord",{"path":1286,"title":1287,"order":1093,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands","Basic CLI Commands",{"path":1289,"title":1290,"order":1133,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools","Git Tools",{"path":1292,"title":1293,"order":1100,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh","Set Up GitHub SSH",{"path":1295,"title":1296,"order":1252,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs","Git Commands And Pull Requests",{"path":1298,"title":1299,"order":1094,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment","Local Development Environment Setup",{"path":1301,"title":1302,"order":1095,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository","Add Instructor Template To Your Repository",{"path":1304,"title":1305,"order":1306,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches","QA And Prod Branches","70",{"path":1308,"title":1309,"order":1310,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup","Render Setup","80",{"path":1312,"title":1313,"order":1314,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox","Local Ubuntu Web Server With VirtualBox","90",{"path":1316,"title":1317,"order":362,"module":1125,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware","Local Ubuntu Web Server With VMware",{"path":1319,"title":1320,"order":1093,"module":14,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript","Compare PHP And JavaScript",{"path":1322,"title":1323,"order":1133,"module":14,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions","Use Conditions Loops And Functions",{"path":1325,"title":1326,"order":1093,"module":322,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html","Intro To HTML",{"path":1328,"title":1329,"order":1133,"module":322,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post","Intro To Forms And GET\u002FPOST",{"path":1331,"title":1332,"order":1100,"module":322,"status":1126},"\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":1334,"title":1335,"order":1093,"module":1146,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql","Intro To SQL",{"path":1337,"title":1338,"order":1133,"module":1146,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup","Project Database Setup",{"path":1340,"title":1341,"order":1100,"module":1146,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration","User Registration",{"path":1343,"title":1344,"order":1252,"module":1146,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login","User Login",{"path":1346,"title":1347,"order":1093,"module":1098,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex","Intro To Regex",{"path":1349,"title":1350,"order":1133,"module":1098,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers","Project Shared Helpers",{"path":1352,"title":1353,"order":1100,"module":1098,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","User Feedback After Redirects",{"path":1355,"title":1356,"order":1252,"module":1098,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile","User Profile",{"path":1358,"title":1359,"order":1093,"module":1156,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization","User Roles Authorization",{"path":1361,"title":1362,"order":1133,"module":1156,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement","User Login Enhancement",{"path":1364,"title":1365,"order":1100,"module":1156,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content","Dynamic Content",{"path":1367,"title":1368,"order":1093,"module":1369,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data","Working With API Data","7",{"path":1371,"title":1372,"order":1133,"module":1369,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration","API Integration",{"path":1374,"title":1375,"order":1100,"module":1369,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions","Database Utility Functions",{"path":1377,"title":1378,"order":1093,"module":1160,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability","Milestone 2 Bootstrap And Reusability",{"path":1380,"title":1381,"order":1133,"module":1160,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro","jQuery Brief Intro",{"path":1383,"title":1384,"order":1100,"module":1160,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax","Intro To AJAX",{"path":1386,"title":1387,"order":1093,"module":1167,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations","Add User Associations",{"path":1389,"title":1390,"order":1133,"module":1167,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination","Add Association Views And Pagination",{"path":1392,"title":1393,"order":1093,"module":1093,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles","Association Management And Public Profiles",{"path":1395,"title":1396,"order":1133,"module":1093,"status":1126},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection","Reusable CSRF Protection",{"path":1398,"title":1399,"order":1125,"module":1177,"status":1106},"\u002Finternet-applications\u002F2e\u002Fsyllabus\u002Ffall-2026","IT202 - Internet Applications Syllabus",{"path":1401,"title":1402,"order":1252,"module":1093,"status":1403},"\u002Finternet-applications\u002Fassignments\u002Ffinal-project-submission","Final Project Submission","review",{"path":1405,"title":1406,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F01-account-access-and-profile-system","Milestone 1: Account, Access, And Profile System",{"path":1408,"title":1409,"order":1133,"module":1160,"status":1403},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F02-api-data-and-project-crud","Milestone 2: API Data And Project CRUD",{"path":1411,"title":1412,"order":1100,"module":1167,"status":1403},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F03-user-associations-search-and-summary","Milestone 3: User Associations, Search, And Summary Views",{"path":1414,"title":1415,"order":1098,"module":1146,"status":1106},"\u002Finternet-applications\u002Fassignments\u002Fproject-proposal","IT 202 Project Proposal",{"path":1417,"title":1418,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F01-what-this-course-is-building","What Internet Applications Build",{"path":1420,"title":1421,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02-files-folders-and-project-structure","Files, Folders, And Project Structure",{"path":1423,"title":1424,"order":1104,"module":1104,"status":1104},"\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":1426,"title":1427,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02b-install-git-and-terminal-tools","Install Git And Terminal Tools",{"path":1429,"title":1430,"order":1104,"module":1104,"status":1104},"\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":1432,"title":1433,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Set Up A Local Development Environment",{"path":1435,"title":1436,"order":1104,"module":1104,"status":1104},"\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":1438,"title":1439,"order":1104,"module":1104,"status":1104},"\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":1441,"title":1442,"order":1104,"module":1104,"status":1104},"\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":1444,"title":1445,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F07-git-recovery-and-common-mistakes","Git Recovery And Common Mistakes",{"path":1447,"title":1448,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Installing Apache, PHP, And MySQL",{"path":1450,"title":1451,"order":1104,"module":1104,"status":1104},"\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":1453,"title":1454,"order":1104,"module":1104,"status":1104},"\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":1456,"title":1457,"order":1104,"module":1104,"status":1104},"\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":1459,"title":1460,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F12-local-qa-and-production-environments","Local, QA, And Production Environments",{"path":1462,"title":1463,"order":1104,"module":1104,"status":1104},"\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":1465,"title":1466,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Displaying Output With PHP",{"path":1468,"title":1469,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Displaying Output With JavaScript",{"path":1471,"title":1472,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F04-variables-storing-and-naming-values","Variables: Storing And Naming Values",{"path":1474,"title":1475,"order":1104,"module":1104,"status":1104},"\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":1477,"title":1478,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F06-arrays-storing-lists-of-values","Arrays: Storing Lists Of Values",{"path":1480,"title":1481,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Conditional Statements: Making Decisions",{"path":1483,"title":1484,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Loops: Repeating Actions",{"path":1486,"title":1487,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F09-functions-reusable-blocks-of-logic","Functions: Reusable Blocks Of Logic",{"path":1489,"title":1490,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F10-reading-and-debugging-error-messages","Reading And Debugging Error Messages",{"path":1492,"title":1493,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","HTML: Structure And Meaning",{"path":1495,"title":1496,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F02-writing-a-valid-html-document","Writing A Valid HTML Document",{"path":1498,"title":1499,"order":1104,"module":1104,"status":1104},"\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":1501,"title":1502,"order":1104,"module":1104,"status":1104},"\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":1504,"title":1505,"order":1104,"module":1104,"status":1104},"\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":1507,"title":1508,"order":1104,"module":1104,"status":1104},"\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":1510,"title":1511,"order":1104,"module":1104,"status":1104},"\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":1513,"title":1514,"order":1104,"module":1104,"status":1104},"\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":1516,"title":1517,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Page Layout With Flexbox",{"path":1519,"title":1520,"order":1104,"module":1104,"status":1104},"\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":1522,"title":1523,"order":1104,"module":1104,"status":1104},"\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":1525,"title":1526,"order":1104,"module":1104,"status":1104},"\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":1528,"title":1529,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Basic Web Accessibility Habits",{"path":1531,"title":1532,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F01-why-web-applications-need-a-database","Why Web Applications Need A Database",{"path":1534,"title":1535,"order":1104,"module":1104,"status":1104},"\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":1537,"title":1538,"order":1104,"module":1104,"status":1104},"\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":1540,"title":1541,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Creating Tables With SQL Scripts",{"path":1543,"title":1544,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F05-connecting-php-to-mysql-with-pdo","Connecting PHP To MySQL With PDO",{"path":1546,"title":1547,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F06-parameterized-queries-and-sql-injection-prevention","Parameterized Queries And SQL Injection Prevention",{"path":1549,"title":1550,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Building A Registration Page",{"path":1552,"title":1553,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Hashing Passwords With password_hash()",{"path":1555,"title":1556,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Building A Login Page",{"path":1558,"title":1559,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F10-sessions-remembering-the-logged-in-user","Sessions: Remembering The Logged-In User",{"path":1561,"title":1562,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Cookies: Persistent Client-Side State",{"path":1564,"title":1565,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F12-navigation-that-responds-to-login-state","Navigation That Responds To Login State",{"path":1567,"title":1568,"order":1104,"module":1104,"status":1104},"\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":1570,"title":1571,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F02-sanitizing-and-escaping-user-input","Sanitizing And Escaping User Input",{"path":1573,"title":1574,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F03-required-fields-and-length-rules","Required Fields And Length Rules",{"path":1576,"title":1577,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F04-regular-expressions-for-pattern-matching","Regular Expressions For Pattern Matching",{"path":1579,"title":1580,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F05-server-side-validation-in-php","Server-Side Validation In PHP",{"path":1582,"title":1583,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F06-cross-site-scripting-xss-prevention","Cross-Site Scripting (XSS) Prevention",{"path":1585,"title":1586,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F07-flash-messages-and-persistent-feedback","Flash Messages And Persistent Feedback",{"path":1588,"title":1589,"order":1104,"module":1104,"status":1104},"\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":1591,"title":1592,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F09-building-a-profile-edit-page","Building A Profile Edit Page",{"path":1594,"title":1595,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F10-debugging-account-and-authentication-problems","Debugging Account And Authentication Problems",{"path":1597,"title":1598,"order":1104,"module":1104,"status":1104},"\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":1600,"title":1601,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Role-Based Access Control",{"path":1603,"title":1604,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Storing Roles In The Database",{"path":1606,"title":1607,"order":1104,"module":1104,"status":1104},"\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":1609,"title":1610,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F04-safe-redirects-after-login-and-logout","Safe Redirects After Login And Logout",{"path":1612,"title":1613,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Listing Records From The Database",{"path":1615,"title":1616,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F06-creating-new-records-with-a-form","Creating New Records With A Form",{"path":1618,"title":1619,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Editing Existing Records",{"path":1621,"title":1622,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Deleting Records Safely",{"path":1624,"title":1625,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Ownership: Linking Records To Users",{"path":1627,"title":1628,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","First Project Milestone Checklist",{"path":1630,"title":1631,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Organizing Growing PHP Applications",{"path":1633,"title":1634,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Reading A Growing PHP Application",{"path":1636,"title":1637,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F01-what-asynchronous-requests-ajax-solve","What Asynchronous Requests (AJAX) Solve",{"path":1639,"title":1640,"order":1104,"module":1104,"status":1104},"\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":1642,"title":1643,"order":1104,"module":1104,"status":1104},"\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":1645,"title":1646,"order":1104,"module":1104,"status":1104},"\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":1648,"title":1649,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F05-handling-fetch-responses-and-errors","Handling Fetch Responses And Errors",{"path":1651,"title":1652,"order":1104,"module":1104,"status":1104},"\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":1654,"title":1655,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Introduction To REST APIs",{"path":1657,"title":1658,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Reading API Documentation",{"path":1660,"title":1661,"order":1104,"module":1104,"status":1104},"\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":1663,"title":1664,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F10-storing-and-caching-api-responses","Storing And Caching API Responses",{"path":1666,"title":1667,"order":1104,"module":1104,"status":1104},"\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":1669,"title":1670,"order":1104,"module":1104,"status":1104},"\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":1672,"title":1673,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F01-jquery-simplified-dom-and-event-work","jQuery: Simplified DOM And Event Work",{"path":1675,"title":1676,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Selecting Elements With jQuery",{"path":1678,"title":1679,"order":1104,"module":1104,"status":1104},"\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":1681,"title":1682,"order":1104,"module":1104,"status":1104},"\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":1684,"title":1685,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Sending AJAX Requests With jQuery",{"path":1687,"title":1688,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F06-saving-external-api-data-through-php","Saving External API Data Through PHP",{"path":1690,"title":1691,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Saving User-Created Records",{"path":1693,"title":1694,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Building A Project Listing Page",{"path":1696,"title":1697,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Inline Editing And Detail Views",{"path":1699,"title":1700,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Second Project Milestone Checklist",{"path":1702,"title":1703,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Foreign Keys And Referential Integrity",{"path":1705,"title":1706,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F02-joining-tables-inner-join-left-join","Joining Tables: INNER JOIN, LEFT JOIN",{"path":1708,"title":1709,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F03-user-owned-records-and-access-enforcement","User-Owned Records And Access Enforcement",{"path":1711,"title":1712,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F04-connecting-api-data-to-user-records","Connecting API Data To User Records",{"path":1714,"title":1715,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Searching And Filtering With SQL",{"path":1717,"title":1718,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Pagination: Displaying Records In Pages",{"path":1720,"title":1721,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Aggregate Functions: COUNT, SUM, AVG",{"path":1723,"title":1724,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Simple Analytics And Summary Views",{"path":1726,"title":1727,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Third Project Milestone Checklist",{"path":1729,"title":1730,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Public Pages And Unauthenticated Views",{"path":1732,"title":1733,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","User Profile And Activity Pages",{"path":1735,"title":1736,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F03-refreshing-and-expiring-external-api-data","Refreshing And Expiring External API Data",{"path":1738,"title":1739,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Application-Wide Security Audit",{"path":1741,"title":1742,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F05-cross-site-request-forgery-csrf-protection","Cross-Site Request Forgery (CSRF) Protection",{"path":1744,"title":1745,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","QA Testing And Collecting Evidence",{"path":1747,"title":1748,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Production Environment Checklist",{"path":1750,"title":1751,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Writing A Project README",{"path":1753,"title":1754,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Final Presentation And Code Walkthrough",{"path":1756,"title":1757,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Configuration Drift And Secrets Checks",{"path":1759,"title":1760,"order":1104,"module":1104,"status":1761},"\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":1763,"title":1764,"order":1104,"module":1104,"status":1761},"\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":1766,"title":1767,"order":1104,"module":1104,"status":1761},"\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":1769,"title":1770,"order":1104,"module":1104,"status":1761},"\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":1772,"title":1773,"order":1104,"module":1104,"status":1761},"\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":1775,"title":1776,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Quiz - Set Up A Local Development Environment",{"path":1778,"title":1779,"order":1104,"module":1104,"status":1761},"\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":1781,"title":1782,"order":1104,"module":1104,"status":1761},"\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":1784,"title":1785,"order":1104,"module":1104,"status":1761},"\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":1787,"title":1788,"order":1104,"module":1104,"status":1761},"\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":1790,"title":1791,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Quiz - Installing Apache, PHP, And MySQL",{"path":1793,"title":1794,"order":1104,"module":1104,"status":1761},"\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":1796,"title":1797,"order":1104,"module":1104,"status":1761},"\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":1799,"title":1800,"order":1104,"module":1104,"status":1104},"\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":1802,"title":1803,"order":1104,"module":1104,"status":1761},"\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":1805,"title":1806,"order":1104,"module":1104,"status":1761},"\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":1808,"title":1809,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Quiz - Displaying Output With PHP",{"path":1811,"title":1812,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Quiz - Displaying Output With JavaScript",{"path":1814,"title":1815,"order":1104,"module":1104,"status":1104},"\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":1817,"title":1818,"order":1104,"module":1104,"status":1104},"\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":1820,"title":1821,"order":1104,"module":1104,"status":1761},"\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":1823,"title":1824,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Quiz - Conditional Statements: Making Decisions",{"path":1826,"title":1827,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Quiz - Loops: Repeating Actions",{"path":1829,"title":1830,"order":1104,"module":1104,"status":1104},"\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":1832,"title":1833,"order":1104,"module":1104,"status":1761},"\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":1835,"title":1836,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","Quiz - HTML: Structure And Meaning",{"path":1838,"title":1839,"order":1104,"module":1104,"status":1761},"\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":1841,"title":1842,"order":1104,"module":1104,"status":1761},"\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":1844,"title":1845,"order":1104,"module":1104,"status":1104},"\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":1847,"title":1848,"order":1104,"module":1104,"status":1761},"\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":1850,"title":1851,"order":1104,"module":1104,"status":1761},"\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":1853,"title":1854,"order":1104,"module":1104,"status":1104},"\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":1856,"title":1857,"order":1104,"module":1104,"status":1104},"\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":1859,"title":1860,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Quiz - Page Layout With Flexbox",{"path":1862,"title":1863,"order":1104,"module":1104,"status":1761},"\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":1865,"title":1866,"order":1104,"module":1104,"status":1761},"\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":1868,"title":1869,"order":1104,"module":1104,"status":1761},"\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":1871,"title":1872,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Quiz - Basic Web Accessibility Habits",{"path":1874,"title":1875,"order":1104,"module":1104,"status":1761},"\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":1877,"title":1878,"order":1104,"module":1104,"status":1104},"\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":1880,"title":1881,"order":1104,"module":1104,"status":1104},"\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":1883,"title":1884,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Quiz - Creating Tables With SQL Scripts",{"path":1886,"title":1887,"order":1104,"module":1104,"status":1761},"\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":1889,"title":1890,"order":1104,"module":1104,"status":1761},"\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":1892,"title":1893,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Quiz - Building A Registration Page",{"path":1895,"title":1896,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Quiz - Hashing Passwords With password_hash()",{"path":1898,"title":1899,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Quiz - Building A Login Page",{"path":1901,"title":1902,"order":1104,"module":1104,"status":1104},"\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":1904,"title":1905,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Quiz - Cookies: Persistent Client-Side State",{"path":1907,"title":1908,"order":1104,"module":1104,"status":1761},"\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":1910,"title":1911,"order":1104,"module":1104,"status":1761},"\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":1913,"title":1914,"order":1104,"module":1104,"status":1761},"\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":1916,"title":1917,"order":1104,"module":1104,"status":1761},"\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":1919,"title":1920,"order":1104,"module":1104,"status":1761},"\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":1922,"title":1923,"order":1104,"module":1104,"status":1761},"\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":1925,"title":1926,"order":1104,"module":1104,"status":1761},"\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":1928,"title":1929,"order":1104,"module":1104,"status":1761},"\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":1931,"title":1932,"order":1104,"module":1104,"status":1761},"\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":1934,"title":1935,"order":1104,"module":1104,"status":1761},"\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":1937,"title":1938,"order":1104,"module":1104,"status":1761},"\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":1940,"title":1941,"order":1104,"module":1104,"status":1104},"\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":1943,"title":1944,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Quiz - Role-Based Access Control",{"path":1946,"title":1947,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Quiz - Storing Roles In The Database",{"path":1949,"title":1950,"order":1104,"module":1104,"status":1761},"\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":1952,"title":1953,"order":1104,"module":1104,"status":1761},"\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":1955,"title":1956,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Quiz - Listing Records From The Database",{"path":1958,"title":1959,"order":1104,"module":1104,"status":1761},"\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":1961,"title":1962,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Quiz - Editing Existing Records",{"path":1964,"title":1965,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Quiz - Deleting Records Safely",{"path":1967,"title":1968,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Quiz - Ownership: Linking Records To Users",{"path":1970,"title":1971,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","Quiz - First Project Milestone Checklist",{"path":1973,"title":1974,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Quiz - Organizing Growing PHP Applications",{"path":1976,"title":1977,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Quiz - Reading A Growing PHP Application",{"path":1979,"title":1980,"order":1104,"module":1104,"status":1761},"\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":1982,"title":1983,"order":1104,"module":1104,"status":1761},"\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":1985,"title":1986,"order":1104,"module":1104,"status":1761},"\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":1988,"title":1989,"order":1104,"module":1104,"status":1761},"\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":1991,"title":1992,"order":1104,"module":1104,"status":1761},"\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":1994,"title":1995,"order":1104,"module":1104,"status":1761},"\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":1997,"title":1998,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Quiz - Introduction To REST APIs",{"path":2000,"title":2001,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Quiz - Reading API Documentation",{"path":2003,"title":2004,"order":1104,"module":1104,"status":1761},"\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":2006,"title":2007,"order":1104,"module":1104,"status":1761},"\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":2009,"title":2010,"order":1104,"module":1104,"status":1761},"\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":2012,"title":2013,"order":1104,"module":1104,"status":1761},"\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":2015,"title":2016,"order":1104,"module":1104,"status":1104},"\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":2018,"title":2019,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Quiz - Selecting Elements With jQuery",{"path":2021,"title":2022,"order":1104,"module":1104,"status":1104},"\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":2024,"title":2025,"order":1104,"module":1104,"status":1761},"\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":2027,"title":2028,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Quiz - Sending AJAX Requests With jQuery",{"path":2030,"title":2031,"order":1104,"module":1104,"status":1761},"\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":2033,"title":2034,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Quiz - Saving User-Created Records",{"path":2036,"title":2037,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Quiz - Building A Project Listing Page",{"path":2039,"title":2040,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Quiz - Inline Editing And Detail Views",{"path":2042,"title":2043,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Quiz - Second Project Milestone Checklist",{"path":2045,"title":2046,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Quiz - Foreign Keys And Referential Integrity",{"path":2048,"title":2049,"order":1104,"module":1104,"status":1761},"\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":2051,"title":2052,"order":1104,"module":1104,"status":1761},"\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":2054,"title":2055,"order":1104,"module":1104,"status":1761},"\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":2057,"title":2058,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Quiz - Searching And Filtering With SQL",{"path":2060,"title":2061,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Quiz - Pagination: Displaying Records In Pages",{"path":2063,"title":2064,"order":1104,"module":1104,"status":1104},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Quiz - Aggregate Functions: COUNT, SUM, AVG",{"path":2066,"title":2067,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Quiz - Simple Analytics And Summary Views",{"path":2069,"title":2070,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Quiz - Third Project Milestone Checklist",{"path":2072,"title":2073,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Quiz - Public Pages And Unauthenticated Views",{"path":2075,"title":2076,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","Quiz - User Profile And Activity Pages",{"path":2078,"title":2079,"order":1104,"module":1104,"status":1761},"\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":2081,"title":2082,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Quiz - Application-Wide Security Audit",{"path":2084,"title":2085,"order":1104,"module":1104,"status":1761},"\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":2087,"title":2088,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","Quiz - QA Testing And Collecting Evidence",{"path":2090,"title":2091,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Quiz - Production Environment Checklist",{"path":2093,"title":2094,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Quiz - Writing A Project README",{"path":2096,"title":2097,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Quiz - Final Presentation And Code Walkthrough",{"path":2099,"title":2100,"order":1104,"module":1104,"status":1761},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Quiz - Configuration Drift And Secrets Checks",{"path":2102,"title":2103,"order":1125,"module":1177,"status":1126},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fa-command-line-basics","Command Line Basics",{"path":2105,"title":2106,"order":14,"module":1177,"status":1126},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fb-git-and-github-recovery","Git And GitHub Recovery",{"path":2108,"title":2109,"order":322,"module":1177,"status":1126},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fc-apache-and-php-troubleshooting","Apache And PHP Troubleshooting",{"path":2111,"title":2112,"order":1146,"module":1177,"status":1126},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fd-mysql-troubleshooting","MySQL Troubleshooting",{"path":2114,"title":2115,"order":1098,"module":1177,"status":1126},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fe-http-request-and-response-reference","HTTP Request And Response Reference",{"path":2117,"title":2118,"order":1156,"module":1177,"status":1126},"\u002Finternet-applications\u002Fbook\u002Freference\u002Ff-common-security-mistakes","Common Security Mistakes",{"path":2120,"title":2121,"order":1369,"module":1177,"status":1126},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fg-ai-collaboration-and-disclosure","AI Collaboration And Disclosure",{"path":2123,"title":2124,"order":1177,"module":1177,"status":1126},"\u002Finternet-applications\u002Fbook\u002Ftoc","Internet Applications: Table of Contents",{"path":2126,"title":2127,"order":1093,"module":1125,"status":1126},"\u002Finternet-applications\u002Flabs\u002F01-git-recovery-and-submission-evidence","Lab 1: Git Recovery And Submission Evidence",{"path":2129,"title":2130,"order":1133,"module":14,"status":1126},"\u002Finternet-applications\u002Flabs\u002F02-php-output-and-error-reading","Lab 2: PHP Output And Error Reading",{"path":2132,"title":2133,"order":1100,"module":322,"status":1126},"\u002Finternet-applications\u002Flabs\u002F03-form-methods-and-sticky-values","Lab 3: Form Methods And Sticky Values",{"path":2135,"title":2136,"order":1252,"module":1146,"status":1126},"\u002Finternet-applications\u002Flabs\u002F04-pdo-query-and-sql-evidence","Lab 4: PDO Query And SQL Evidence",{"path":2138,"title":2139,"order":1094,"module":1098,"status":1126},"\u002Finternet-applications\u002Flabs\u002F05-validation-debugging-and-friendly-errors","Lab 5: Validation, Debugging, And Friendly Errors",{"path":2141,"title":2142,"order":1095,"module":1156,"status":1126},"\u002Finternet-applications\u002Flabs\u002F06-role-protected-crud-check","Lab 6: Role-Protected CRUD Check",{"path":2144,"title":2145,"order":2146,"module":1156,"status":1126},"\u002Finternet-applications\u002Flabs\u002F06a-relative-paths-includes-and-feature-trace","Lab 6A: Relative Paths, Includes, And Feature Tracing","61",{"path":2148,"title":2149,"order":1306,"module":1369,"status":1126},"\u002Finternet-applications\u002Flabs\u002F07-json-endpoint-and-fetch-check","Lab 7: JSON Endpoint And Fetch Check",{"path":2151,"title":2152,"order":1310,"module":1160,"status":1126},"\u002Finternet-applications\u002Flabs\u002F08-jquery-ajax-interface-check","Lab 8: jQuery AJAX Interface Check",{"path":2154,"title":2155,"order":1314,"module":1167,"status":1126},"\u002Finternet-applications\u002Flabs\u002F09-search-pagination-and-summary-check","Lab 9: Search, Pagination, And Summary Check",{"path":2157,"title":2158,"order":362,"module":1093,"status":1126},"\u002Finternet-applications\u002Flabs\u002F10-final-security-and-readme-check","Lab 10: Final Security And README Check",{"path":2160,"title":2161,"order":1104,"module":1104,"status":1126},"\u002Finternet-applications\u002Fpresentations-revised\u002F00-revision-plan","Internet Applications Presentation Revision Plan",{"path":2163,"title":2164,"order":1104,"module":1104,"status":1126},"\u002Finternet-applications\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Internet Applications Twenty-Minute Recording Plan",{"path":2166,"title":1284,"order":1177,"module":1125,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord",{"path":2168,"title":1287,"order":1093,"module":1125,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands",{"path":2170,"title":1290,"order":1133,"module":1125,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools",{"path":2172,"title":1293,"order":1100,"module":1125,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh",{"path":2174,"title":1296,"order":1252,"module":1125,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs",{"path":2176,"title":1299,"order":1094,"module":1125,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment",{"path":2178,"title":1302,"order":1095,"module":1125,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository",{"path":2180,"title":1305,"order":1306,"module":1125,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches",{"path":2182,"title":1309,"order":1310,"module":1125,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup",{"path":2184,"title":1313,"order":1314,"module":1125,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox",{"path":2186,"title":1317,"order":362,"module":1125,"status":1126},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware",{"path":2188,"title":1320,"order":1093,"module":14,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript",{"path":2190,"title":1323,"order":1133,"module":14,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions",{"path":2192,"title":1326,"order":1093,"module":322,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html",{"path":2194,"title":1329,"order":1133,"module":322,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post",{"path":2196,"title":1332,"order":1100,"module":322,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates",{"path":2198,"title":1335,"order":1093,"module":1146,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql",{"path":2200,"title":1338,"order":1133,"module":1146,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup",{"path":2202,"title":1341,"order":1100,"module":1146,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration",{"path":2204,"title":1344,"order":1252,"module":1146,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login",{"path":2206,"title":1347,"order":1093,"module":1098,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex",{"path":2208,"title":1350,"order":1133,"module":1098,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers",{"path":1101,"title":5,"order":1100,"module":1098,"status":1106},{"path":2211,"title":1356,"order":1252,"module":1098,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile",{"path":2213,"title":1359,"order":1093,"module":1156,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization",{"path":2215,"title":1362,"order":1133,"module":1156,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement",{"path":2217,"title":1365,"order":1100,"module":1156,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content",{"path":2219,"title":1368,"order":1093,"module":1369,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data",{"path":2221,"title":1372,"order":1133,"module":1369,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration",{"path":2223,"title":1375,"order":1100,"module":1369,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions",{"path":2225,"title":1378,"order":1093,"module":1160,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability",{"path":2227,"title":1381,"order":1133,"module":1160,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro",{"path":2229,"title":1384,"order":1100,"module":1160,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax",{"path":2231,"title":1387,"order":1093,"module":1167,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations",{"path":2233,"title":1390,"order":1133,"module":1167,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination",{"path":2235,"title":1393,"order":1093,"module":1093,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles",{"path":2237,"title":1396,"order":1133,"module":1093,"status":1106},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection",{"path":2239,"title":1399,"order":1125,"module":1177,"status":1106},"\u002Finternet-applications\u002Fsyllabus\u002Fsummer-2026",{"path":2241,"title":2242,"order":2243,"module":1093,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Ffinal-project-submission-worksheet","Final Project Submission Worksheet","110",{"path":2245,"title":2246,"order":2247,"module":1156,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-milestone-01-worksheet","Legacy Milestone 1 Worksheet","118",{"path":2249,"title":2250,"order":2251,"module":1156,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-multi-dimension-php-problems-worksheet","Legacy Multi-Dimension PHP Problems Worksheet","119",{"path":2253,"title":2254,"order":2243,"module":1156,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-01-account-access-and-profile-worksheet","IT202 Milestone 1 - 2026",{"path":2256,"title":2257,"order":2258,"module":1160,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-02-api-data-and-crud-worksheet","IT202 Milestone 2 - 2026","120",{"path":2260,"title":2261,"order":2262,"module":1167,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-03-user-associations-worksheet","IT202 Milestone 3 - 2026","130",{"path":2264,"title":2265,"order":1093,"module":1125,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-01-git-and-local-server-worksheet","Module 1 Worksheet: Git, GitHub, And Local Server Evidence",{"path":2267,"title":2268,"order":1133,"module":14,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-02-php-and-debugging-worksheet","Module 2 Worksheet: PHP Challenge Scenarios",{"path":2270,"title":2271,"order":1100,"module":322,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-03-forms-css-and-dom-worksheet","Module 3 Worksheet: HTML, CSS, JS Challenges",{"path":2273,"title":2274,"order":1252,"module":1146,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-04-database-auth-and-sessions-worksheet","Module 4 Worksheet: SQL Todo Challenge",{"path":2276,"title":2277,"order":1094,"module":1098,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-05-validation-and-debugging-worksheet","Module 5 Worksheet: Validation And Debugging Evidence",{"path":2279,"title":2280,"order":1095,"module":1156,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-authorization-and-crud-worksheet","Module 6 Worksheet: Authorization And CRUD Evidence",{"path":2282,"title":2283,"order":2284,"module":1156,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-multi-dimensional-php-arrays-worksheet","Module 06 Worksheet: Multi-Dimensional PHP Arrays","62",{"path":2286,"title":2287,"order":1306,"module":1369,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-07-api-testing-worksheet","Module 07 Worksheet: Project API Testing",{"path":2289,"title":2290,"order":1310,"module":1160,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-08-jquery-and-dynamic-ui-worksheet","Module 8 Worksheet: jQuery And Dynamic UI Evidence",{"path":2292,"title":2293,"order":1314,"module":1167,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-09-search-pagination-and-summary-worksheet","Module 9 Worksheet: Search, Pagination, And Summary Evidence",{"path":2295,"title":2296,"order":362,"module":1093,"status":1126},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-10-final-project-readiness-worksheet","Module 10 Worksheet: Final Project Readiness Evidence",{"path":2298,"title":1287,"order":1093,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":2300,"title":1290,"order":1133,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":2302,"title":1293,"order":1100,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":2304,"title":1296,"order":1252,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":2306,"title":2307,"order":1094,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup","Course Repository Setup",{"path":2309,"title":2310,"order":1095,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup","Java Development Environment Setup",{"path":2312,"title":2313,"order":1093,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics","Java Basics",{"path":2315,"title":2316,"order":1133,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control","Java Flow Control",{"path":2318,"title":2319,"order":1100,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops","Java Loops",{"path":2321,"title":2322,"order":1252,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections","Java Arrays, Queue, Stack, ArrayList",{"path":2324,"title":2325,"order":1093,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input","Java User Input",{"path":2327,"title":2328,"order":1133,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers","Java Intro to OOP - Modifiers",{"path":2330,"title":2331,"order":1100,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io","Java File I\u002FO",{"path":2333,"title":2334,"order":1252,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees","Java Recursion and Trees",{"path":2336,"title":2337,"order":1093,"module":1146,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview","Java Sockets: Overview",{"path":2339,"title":2340,"order":1133,"module":1146,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate","Java OOP Intermediate",{"path":2342,"title":2343,"order":1100,"module":1146,"status":1126},"\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":2345,"title":2346,"order":1093,"module":1098,"status":1126},"\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":2348,"title":2349,"order":1133,"module":1156,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026","Java Advanced Programming Preparing for Milestone 2",{"path":2351,"title":2352,"order":1100,"module":1156,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check","Java Advanced Programming Milestone 2: GameServer Ready Check",{"path":2354,"title":2355,"order":1093,"module":1369,"status":1126},"\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":2357,"title":2358,"order":1133,"module":1369,"status":1126},"\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":2360,"title":2361,"order":1100,"module":1369,"status":1126},"\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":2363,"title":2364,"order":1252,"module":1369,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns","Java Advanced Programming Milestone 2: Simultaneous Turns",{"path":2366,"title":2367,"order":1094,"module":1369,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns","Java Advanced Programming Milestone 2: Individual Turns",{"path":2369,"title":2370,"order":1093,"module":1160,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration","Java Advanced Programming Milestone 2: Grid Integration",{"path":2372,"title":2373,"order":1133,"module":1160,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration","Java Advanced Programming Milestone 2: Cards Integration",{"path":2375,"title":2376,"order":1100,"module":1160,"status":1126},"\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":2378,"title":2379,"order":1252,"module":1160,"status":1126},"\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":2381,"title":2382,"order":1094,"module":1160,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro","Java Advanced Programming Java UI 2025",{"path":2384,"title":2385,"order":1093,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026","UI Integration 2026",{"path":2387,"title":2388,"order":1133,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing","UI Drawing",{"path":2390,"title":2391,"order":1100,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration","Baseline UI Integration",{"path":2393,"title":2394,"order":1252,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration","NDFF UI Integration",{"path":2396,"title":2397,"order":1094,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui","Equals 6 UI",{"path":2399,"title":2400,"order":1095,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project","Popularity Mini Project",{"path":2402,"title":2403,"order":1093,"module":1093,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup","Milestone 3 Wrapup",{"path":2405,"title":2406,"order":1133,"module":1093,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps","Deploying Java Apps",{"path":2408,"title":2409,"order":1100,"module":1093,"status":1126},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator","NDFF Away Spectator",{"path":2411,"title":2412,"order":1125,"module":1177,"status":1106},"\u002Fjava-advanced-programming\u002F2e\u002Fsyllabus\u002Ffall-2026","IT114 - Advanced Programming for Information Technology",{"path":2414,"title":2415,"order":1093,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F01-course-tools-and-workflow","Course Tools And Workflow",{"path":2417,"title":2418,"order":1133,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F02-terminal-git-and-github","Terminal, Git, And GitHub Basics",{"path":2420,"title":2421,"order":1100,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F03-java-development-environment","Java Development Environment",{"path":2423,"title":2424,"order":1093,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F01-java-program-shape","The Shape Of A Java Program",{"path":2426,"title":2427,"order":1133,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F02-values-types-and-expressions","Values, Types, And Expressions",{"path":2429,"title":2430,"order":1100,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F03-conditions-loops-and-collections","Conditions, Loops, And Collections",{"path":2432,"title":2433,"order":1093,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F01-user-input-and-output","User Input And Program Output",{"path":2435,"title":2436,"order":1133,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F02-classes-objects-and-modifiers","Classes, Objects, And Modifiers",{"path":2438,"title":2439,"order":1100,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F03-file-io-paths-and-exceptions","File I\u002FO, Paths, And Exceptions",{"path":2441,"title":2442,"order":1252,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F04-recursion-and-trees","Recursion And Tree Thinking",{"path":2444,"title":2445,"order":1093,"module":1146,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F01-sockets-client-server","Sockets And Client\u002FServer Thinking",{"path":2447,"title":2448,"order":1133,"module":1146,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F02-server-socket-flow","The ServerSocket Flow",{"path":2450,"title":2451,"order":1100,"module":1146,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F03-oop-for-socket-apps","OOP For Socket Applications",{"path":2453,"title":2454,"order":1093,"module":1098,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F01-multi-client-server-shape","Multi-Client Server Shape",{"path":2456,"title":2457,"order":1133,"module":1098,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F02-threads-shared-state-and-message-routing","Threads, Shared State, And Message Routing",{"path":2459,"title":2460,"order":1100,"module":1098,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F03-debugging-socket-programs","Debugging Socket Programs",{"path":2462,"title":2463,"order":1177,"module":1177,"status":1126},"\u002Fjava-advanced-programming\u002Fbook\u002Ftoc","Java Advanced Programming: Table of Contents",{"path":2465,"title":2466,"order":1104,"module":1104,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F00-revision-plan","Java Advanced Programming Presentation Revision Plan",{"path":2468,"title":2469,"order":1104,"module":1104,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Java Advanced Programming Twenty-Minute Recording Plan",{"path":2471,"title":1287,"order":1093,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":2473,"title":1290,"order":1133,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":2475,"title":1293,"order":1100,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":2477,"title":1296,"order":1252,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":2479,"title":2307,"order":1094,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup",{"path":2481,"title":2310,"order":1095,"module":1125,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup",{"path":2483,"title":2313,"order":1093,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics",{"path":2485,"title":2316,"order":1133,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control",{"path":2487,"title":2319,"order":1100,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops",{"path":2489,"title":2322,"order":1252,"module":14,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections",{"path":2491,"title":2325,"order":1093,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input",{"path":2493,"title":2328,"order":1133,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers",{"path":2495,"title":2331,"order":1100,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io",{"path":2497,"title":2334,"order":1252,"module":322,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees",{"path":2499,"title":2337,"order":1093,"module":1146,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview",{"path":2501,"title":2340,"order":1133,"module":1146,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate",{"path":2503,"title":2343,"order":1100,"module":1146,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F03-multi-client-chat-part-1",{"path":2505,"title":2346,"order":1093,"module":1098,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F05-module-5-multi-client-sockets\u002F01-multi-client-chat-part-2",{"path":2507,"title":2508,"order":1093,"module":1156,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F01-prepare-milestone-2-2025","Java Advanced Programming Preparing for Milestone2 2025",{"path":2510,"title":2349,"order":1133,"module":1156,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026",{"path":2512,"title":2352,"order":1100,"module":1156,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check",{"path":2514,"title":2355,"order":1093,"module":1369,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F01-game-rooms-ready-check",{"path":2516,"title":2358,"order":1133,"module":1369,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F02-round-robin-turns",{"path":2518,"title":2361,"order":1100,"module":1369,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F03-phase-based-turns",{"path":2520,"title":2364,"order":1252,"module":1369,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns",{"path":2522,"title":2367,"order":1094,"module":1369,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns",{"path":2524,"title":2370,"order":1093,"module":1160,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration",{"path":2526,"title":2373,"order":1133,"module":1160,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration",{"path":2528,"title":2376,"order":1100,"module":1160,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F03-equals-6-mini-project",{"path":2530,"title":2379,"order":1252,"module":1160,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F04-nice-day-for-fishin",{"path":2532,"title":2382,"order":1094,"module":1160,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro",{"path":2534,"title":2385,"order":1093,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026",{"path":2536,"title":2388,"order":1133,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing",{"path":2538,"title":2391,"order":1100,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration",{"path":2540,"title":2394,"order":1252,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration",{"path":2542,"title":2397,"order":1094,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui",{"path":2544,"title":2400,"order":1095,"module":1167,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project",{"path":2546,"title":2403,"order":1093,"module":1093,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup",{"path":2548,"title":2406,"order":1133,"module":1093,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps",{"path":2550,"title":2409,"order":1100,"module":1093,"status":1126},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator",{"path":2552,"title":2553,"order":1093,"module":1125,"status":1126},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview","Required Architecture Overview",{"path":2555,"title":2556,"order":1125,"module":1177,"status":1106},"\u002Fsystems-integration\u002F2e\u002Fsyllabus\u002Ffall-2026","IT490 - Systems Integration Syllabus",{"path":2558,"title":2559,"order":1125,"module":1177,"status":1106},"\u002Fsystems-integration","Systems Integration",{"path":2561,"title":2562,"order":1104,"module":1104,"status":1126},"\u002Fsystems-integration\u002Fpresentations-revised\u002F00-revision-plan","Systems Integration Presentation Revision Plan",{"path":2564,"title":2565,"order":1104,"module":1104,"status":1126},"\u002Fsystems-integration\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Systems Integration Twenty-Minute Recording Plan",{"path":2567,"title":2553,"order":1093,"module":1125,"status":1106},"\u002Fsystems-integration\u002Fpresentations\u002F01-required-architecture-overview",{"path":2569,"title":2556,"order":1125,"module":1177,"status":1106},"\u002Fsystems-integration\u002Fsyllabus\u002Fsummer-2026",{"path":2571,"title":2572,"order":1104,"module":1104,"status":1104},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-authentication-authorization-core-2026-draft","IT490 Authentication and Authorization Core Milestone (2026)",{"path":2574,"title":2575,"order":1104,"module":1104,"status":1104},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-centralized-logging-milestone-draft","IT490 Centralized Logging Milestone",{"path":2577,"title":2578,"order":1104,"module":1104,"status":1104},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-3-resiliency-2026-draft","IT490 Milestone 3 - Deployment, Promotion, And Recovery",{"path":2580,"title":2581,"order":1104,"module":1104,"status":1104},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-4-availability-2026-draft","IT490 Milestone 4 - Availability, Load Balancing, And Recovery",{"path":2583,"title":2584,"order":1133,"module":1177,"status":1126},"\u002Fsystems-integration\u002Fworksheets\u002Fmeeting-minutes-template","IT490 Meeting Minutes Template",{"path":2586,"title":2587,"order":1100,"module":1177,"status":1126},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-changelog-template","IT490 Project Change Log Template",{"path":2589,"title":2590,"order":1093,"module":1177,"status":1126},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-proposal-template","IT490 Project Proposal Template",1788152086468]