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