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