forked from amarsanaag/ICSI301
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLaboratory 4
24 lines (23 loc) · 8.32 KB
/
Laboratory 4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ЛАБ 04. Күүки ба Сесшн - Жич энэ даалгавар бага зэрэг өөрчлөгдөнө шүү. Тэхдээ их биш.
Энэ лабораторын ажлаар хэрэглэгчийг вэб сайтад шалган нэвтрүүлэх, вэб хуудас хооронд дамжих өгөгдөл хадгалахад күүки болон сесшн ашиглах, нууц үгийг давслаж хэрэглэх зэрэг чадварыг эзэмших зорилготой. Ингэхдээ вэб програмд хэрэглэгчийн нэвтрэх хэсгийг, хэрэглэгчийн удирдлагыг хэрхэн бичих вэб техникийг эзэмшинэ.
Даалгавар 1. [1] номын 12, 13-р бүлгийн бүх PHP кодыг дуурайн бичиж дасгал хийнэ. Бүлгүүдийн төгсгөлд байгаа бүх асуултад хариулж бичнэ.
Даалгавар 2. Өмнөх ажлаар гүйцэтгэсэн оюутны хичээл сонголтын програмд хэрэглэгч бүртгэх, хэрэглэгчийг шалган нэвтрүүлэх, хэрэглэгчийн хандах хязгаарлах хэсгийг дараах шаардлагын дагуу нэмж хөгжүүлнэ.
1. Програмын хөгжүүлэлтийг гүйцэтгэхээс өмнө хэрэглэгчийн нэр, нууц үг, хэзээ бүртгэгдсэнийг хадгалах users хүснэгтийг үүсгэнэ. Нууц үгийг хадгалах талбар нь hash функцаар кодлосон утгыг хадгалдаг байна. Мөн сургалтын албаны ажилтны мэдээллийг хадгалах staffs нэртэй хүснэгт үүсгэнэ. Овог, нэр, албан тушаал, ажилд орсон огноо зэрэг мэдээллийг хадгалдаг байна. users хүснэгтэд staffs болон students (өмнөх лаб ажлаар гүйцэтгэсэн) хүснэгтийн Primary Key (PK)-г Foreign Key (FK) болгон оруулж ирнэ. Энэ хоёр хүснэгтийн PK талбарууд ижил төрөлтэй байхыг анхаарна уу. Ингэснээр энэ хүснэгт хэрэглэгчийн нэр, нууц үгийг оюутан, ажилчдын үндсэн мэдээллээс тусад нь хадгалдаг болно.
2. Вэб програмд хэрэглэгчийн нэр, нууц үгээр нэвтрэх HTML маягтыг login.php хуудсаар (HTTP authentication биш) хөгжүүлнэ. Хэрэв хэрэглэгч биш бол шинээр бүртгүүлэх холбоосоор орж шинэ бүртгэл үүсгэдэг байна (2-р шаардлагаас үзнэ үү). Мөн хэрэглэгчийн нэрийг санах гэсэн сонгох товчлууртай (checkbox) байна. Энэ сонголтыг хийсэн бөгөөд амжилттай нэвтрэх үед хэрэглэгчийн нэрийг PHP-ээр вэб хөтчийн күүкид удаан хугацаагаар хадгалж дараагийн удаа энэ нэвтрэх хуудсыг дуудах үед хэрэглэгчийн нэрийг зохих талбарт нь харуулдаг байна. Хэрэглэгчийн нэр, нууц үгийг өгөгдлийн санд хадгалсан хэрэглэгчдээс шүүж үзээд тохирч байгаа тохиолдолд сесшнд хэрэглэгчийн нэвтэрсэн тухай мэдээллийг хадгалж хичээл сонгох вэб хуудсанд шилждэг байна. Үүнийг хэрэгжүүлэхэд PHP-ийн header функцийг ашигладаг.
Жишээ нь, тухайн вэб хуудастай ижил хавтаст байгаа course_selection.php вэб хуудасруу шилжих үед header("location: course_selection.php"); гэж ашиглана. Гэхдээ энэ функцийг ашиглахаасаа өмнө функцийг тайлбар, хэрэглээг сайтар судлахыг зөвлөе.
Хичээл сонгох вэб хуудсанд гарах холбоос байх бөгөөд энэ холбоос дээр дарсан бол хэрэглэгчийн холболтыг вэб програмаас салгана. Үүний тулд
2016/2017 оны хичээлийн жил, Хаврын улирал
тухайн хэрэглэгчийн нэвтэрсэн гэх мэдээллийг сесшнээс утсгах logout.php хуудсыг дуудаж эргэж login.php хуудсанд шилждэг байна. Ингэхдээ “холболт амжилттай саллаа” гэх мэдээллийг харуулдаг байна. Үүнийг login.php хуудасруу query string-ээр өгөгдөл дамжуулах маягаар шийдэж болно.
3. Оюутны бүртгэлийн (шинэ оюутан нэмэх) хуудсанд оюутан нууц үг, хэрэглэгчийн нэрийг оруулах талбар нэмж оруулна. Хэрэглэгчийн нэр нь вэб програмын хувьд давхардаггүй, цор ганц байдаг тул шинээр бүртгэх гэж буй хэрэглэгчийн нэр өмнө бүртгэсэн нэрстэй давхцахгүй байвал бүртгэдэг эсрэг тохиолдолд бүртгэхгүй байх ёстой. Мөн бүртгэлд дараах шаардлагуудыг хангадаг байна.
a. Хэрэглэгчийн нэрэнд a-z, A-Z, 0-9 болон _ (доогуур зураас) орж болно.
b. Нууц үг нь хамгийн багадаа 6 тэмдэгт байх бөгөөд дор хаяж нэг цифр (0-
9), мөн нэг тусгай тэмдэгт, нэг том үсэг орсон байх ёстой. Нууц үгийг
хоёр удаа давтаж оруулдаг байна.
c. Нууц үгийг давсалж хадгалдаг байна. [1] номын 308-р хуудаснаас үзнэ
үү.
d. Бүртгэсэн огноог хадгална.
Хэрэглэгчийг бүртгэхээс өмнө оруулсан нууц үгийг нь сул, дунд, чанга зэрэг ангилалаар харуулж сул байгаа тохиолдолд дараагийн зэрэглэлд орохуйц нууц үгийг хэрхэн оруулах зөвлөмжийг харуулах ба сул нууц үгээр бүртгэлийг цааш үргэлжлүүлэхийг лавлаж асуудаг (тийм/үгүй товчтой) байна. Үгүй товчийг дарсан бол дахин нууц үг оруулах (хоёр давтах) боломжийг олгож бүртгэлийг гүйцэтгэнэ.
4. Хэрэглэгчийн бүртгэлийг харуулах users.php хуудсыг хөгжүүлнэ. Энэ хуудсанд вэб програмын бүртгэлтэй хэрэглэгчдийг жагсааж харуулдаг байна. Хэрэглэгчдийн эрхийг хязгаарлах (энэ тохиолдолд нэвтэрч орох боломжгүй), мөн нууц үг солихыг шаардах (нэвтрээд орсны дараа заавал нууц үг солихыг шаардах, өмнөх нууц үгтэй төстэй байж болохгүй) зэрэг үйлдлүүдийг өөрийн зохиомжоор гүйцэтгэнэ. Өгөгдлийн санд өөрчлөлт хийх, шинэ вэб хуудас нэмж хөгжүүлж болно.
Дээрх бүх хуудсанд SQL Injection халдлагаас сэргийлэх кодыг хэрэгжүүлэх шаардлагатай.
Ном зүй
[1] Robin Nixon, Learning PHP, MySQL, JavaScript, CSS & HTML5, 3rd Edition, 2014, 729 pages, ISBN: 978-1-491-94946-7