Html kengaytmali sahifalarda PHP dan foydalanish. Shakl sizning maketingizda PHP HTML sahifasini qanday o'qish kerak
Men kirish formasini yaratishga harakat qilyapman. Bu mening HTML forma kodim
Shaxsan men uni PDO uchun oldim.
4 va 5-bandlar
$password = mysql_real_escape_string(stripslashes(md5($_POST["parol"])));
Birinchidan, buning tartibi noto'g'ri. Siz $_POST["parol"] hash va keyin chiziq chizig'idan foydalanishga harakat qilish - keyin uning xeshlarida hech qanday qiyshiq chiziq bo'lmaydi. Biroq, agar siz odamlarning parollarda qiya chiziqdan (yoki boshqa biror narsadan) foydalanishiga to'sqinlik qilmoqchi bo'lsangiz, satrni xeshlashdan oldin ularni olib tashlashingiz kerak bo'ladi.
Quyidagi md5 parolni xeshlash algoritmi sifatida ishlatilmasligi kerak, chunki u zaif deb topilgan va zarur bo'lgandan ko'ra tez-tez qator to'qnashuvlarini yaratish uchun qo'pol kuch bo'lishi mumkin.
Ha siz kerak Parollarning o'zini emas, balki parollarning xeshlarini yoki "barmoq izlarini" saqlang, lekin ideal holda siz ularni md5() funksiyasiga tashlashdan ko'ra, ularni tuzlash va xeshlashni (hech bo'lmaganda sha1 bilan) qilishni xohlaysiz.
Va siz tanlagan qidiruv tizimidan foydalanib, "parol xesh sozlamalari" ni qidiring.
6-band
identifikatorni $table WHERE foydalanuvchi nomi = "" dan tanlang. $username. "" va parol = "". $parol. "";
Asl savolda yo'q bo'lgan = ni qo'shdim, lekin bu shunday so'rovingizdagi foydalanuvchi nomi va parolga mos kelmadi...agar kimdir sizning foydalanuvchi nomingizga SQL in'ektsiyasini kiritishga muvaffaq bo'lsa, parol hech qachon tekshirilmaydi. Tanitish:
user.id ni SELECT FROM user FROM user.username = "fred" YOKI 1 = 1 -- VA user.password = "abc123"
Barmoq izi foydalanuvchi identifikatori va parolni maʼlumotlar bazasidan tanlab, soʻngra maʼlumotlar bazasi darajasidagi parolni tekshirishga ishonishdan koʻra, ilovadagi parolni baholash yaxshiroqdir. Bu shuningdek, parollaringizni tekshirish uchun ilovaning o'zida maxsus xeshlash va tuzlash algoritmidan foydalanishingiz mumkinligini anglatadi.
7-band
$_SESSION["user"] = $_POST["foydalanuvchi nomi"];
Bu faqat foydalanuvchi nomini sessiyada saqlayaptimi? Bu hech qanday tarzda "kirish tekshiruvi" sifatida ishlatilmasligi kerak, ayniqsa seansingizda o'g'irlashni oldini olish uchun hech narsa bo'lmasa (aftidan).
Seans identifikatorini real vaqt rejimida cookie faylidan osongina hidlash mumkin va bu boshqa birovning foydalanuvchi nomini “qarzga olish” uchun talab qilinadi. Siz hech bo'lmaganda foydalanuvchining IP-manzilini, UserAgent qatorini yoki har bir sahifa bilan solishtirish mumkin bo'lgan nisbatan statik ma'lumotlarning boshqa kombinatsiyasini bog'lash orqali sessiyani o'g'irlash ehtimolini kamaytirishga harakat qilishingiz kerak ... deyarli har qanday yondashuvning kamchiliklari mavjud (ayniqsa). , Men allaqachon topib olganimdek, agar sizda AOL dan foydalanuvchi tashrif buyuruvchilar bo'lsa), lekin foydalanuvchi seansining noto'g'ri o'rnatilishi juda kichik imkoniyat bilan o'g'irlashni kamaytirish uchun 99% samarali barmoq izi seansini qilishingiz mumkin.
Ideal holda siz yumshatish uchun sessiya tokenini ham yaratishingiz mumkin CSRF hujumlari foydalanuvchi ma'lumotlar bazasida "imtiyozli" amalni bajarishi kerak bo'lganda (ularning ma'lumotlarini yoki boshqa narsalarni yangilash). Token ma'lumotlar bazasida va/yoki saqlangan mutlaqo tasodifiy va noyob kod bo'lishi mumkin cookie Foydalanuvchi tizimga kirganida SSL (agar foydalanuvchi HTTPS-dan tashqari ma'lumotlar bazasini yangilaydigan har qanday harakatlarni bajara olmasa, chunki bu ma'lumotlarni Internet orqali aniq matnda uzatadi - bu yomon fikr).
Token har qanday/barcha shakllar uchun yashirin shakl maydoniga joylashtiriladi va ushbu shakl topshirilganda cookie faylida (yoki sessiya yoki maʼlumotlar bazasida) saqlangan qiymatga nisbatan tekshiriladi. Bu shaklni yuborgan shaxs sizning veb-saytingizda hech bo'lmaganda jonli seansga ega bo'lishini ta'minlaydi.
Bir nechta muammolar bo'lishi mumkin.
Birinchidan,$match bayonotida parol tengligi operatori etishmayapti:
$match = "ID NI SELECT FROM $table WHERE username = "".$username."" va parol"".$parol."";";
Bo `lish kerak:
$match = "ID NI SELECT FROM $table WHERE username = "".$username."" va parol = "".$parol."";";
Ikkinchidan, parolni ma'lumotlar bazasiga kiritasiz keyin md5 yordamida uni ishlatish kerakmi?
Agar yo'q bo'lsa, sizning so'rovingiz parol bilan md5 (parol) ni moslashtirishga harakat qilmoqda.
Hatto shaxsiy veb-saytni yaratishda hamma ham hamma narsani ta'minlay olmaydi mumkin bo'lgan usullar undan keyingi foydalanish. Saytni yanada rivojlantirish uchun zamin tayyorlash juda muhimdir. Agar siz ilgari veb-sayt yaratgan bo'lsangiz va sukut bo'yicha barcha sahifalarga .html kengaytmasini tayinlagan bo'lsangiz va shundan keyingina PHP dan foydalanishga qaror qilsangiz, o'qing.
Ilgari, SSI dan foydalanish uchun sayt sahifalari nomlari .shtml kengaytmasi bilan tugashi kerak edi, ammo bugungi kunda ko'pchilik Internet-serverlar SSI dan .html kengaytmali sahifalarda ishlatilishi mumkin bo'lgan tarzda tuzilgan, bu juda qulay. PHP butunlay boshqacha hikoya - .php kengaytmasi standart kengaytmadir. Veb-sayt ishlab chiquvchilari nima ishlatilishini oldindan bilishadi berilgan til dasturlash, rinstone to'g'ri kengaytmasi tayinlangan.
Lekin barcha sahifalar .html kengaytmasi bilan tugasa nima qilish kerak?
HTML kengaytmasini PHP bilan almashtiring
Buni bir necha usul bilan amalga oshirish mumkin. Eng aniq yo'l - barcha sahifalarga .php kengaytmasini berish yoki mavjud kengaytmalarni o'zgartirish (.html, .shtml va boshqalar). Bu usulning kamchiliklari bor. Misol uchun, .html kengaytmali allaqachon indekslangan sahifalar yana indekslanishi kerak bo'ladi qidiruv tizimlari. Yoki undan ham yomoni - hamma narsa tashqi havolalar, ma'lum bir sahifaga aniq havolalar yaroqsiz bo'ladi. Va siz ushbu o'zgarishlar haqida har bir sayt egalarini xabardor qilishingiz va har bir sahifa uchun 301 xatolik bilan boshqa sahifa yaratishingiz kerak bo'ladi. Albatta, bitta kengaytmani boshqasiga o'zgartirish maqbuldir, lekin agar saytda allaqachon ko'plab sahifalar va boshqa saytlarning turli sahifalariga havolalar mavjud bo'lsa-chi?
Ongli sababga ko'ra bu daqiqa ushbu saytning barcha sahifalari html kengaytmasi bilan tugaydi va men yuqoridagi o'zgarishlarni qilishni xohlamadim va shu bilan o'zim uchun keraksiz qiyinchiliklarni yaratdim.
Siz buni boshqa yo'l bilan qilishingiz mumkin. Agar saytni joylashtirgan server mod_rewrite-ni qo'llab-quvvatlasa (ko'p hollarda shunday qiladi) va .htaccess fayliga kirish imkoni bo'lsa, siz ushbu faylga quyidagi qatorlarni qo'shishingiz mumkin:
RewriteRule da RewriteEngine ^(.*)\.html $1\.php
Ushbu kodni .htaccess ga qo'shsangiz, tashvishlanishingiz shart emas. .html kengaytmasi bilan so'ralgan barcha mavjud bo'lmagan sahifalar Apache mo''jizalari tufayli avtomatik ravishda .php kengaytmasi bilan almashtiriladi. Ammo bu usul yagona emas. Xuddi shu .htaccess faylida quyidagilarni yozishingiz mumkin:
AddHandler ilovasi/x-httpd-php .php .html .htm
Menimcha, eng muvaffaqiyatli yo'l. Bu HTML sahifalarni PHP sahifalariga tenglashtiradi, ya'ni endi barcha PHP funksiyalaridan HTML kengaytmali sahifalarda foydalanish mumkin. Agar sizda .htaccess fayliga kirish imkoningiz bo'lmasa, siz hosting kompaniyasiga xat yozishingiz va administratorlardan muloyimlik bilan ro'yxatdan o'tishlarini so'rashingiz mumkin. Apache konfiguratsiyasi(httpd.conf) sayt uchun kerakli qiymat.
Aytgancha, agar bundan oldin sayt SSIdan foydalangan bo'lsa:
keyin yangi PHP holatida ushbu kod quyidagi bilan almashtirilishi kerak:
include("file.txt"); ?>
Xo'sh, hammasi shu, menimcha, yuqoridagi usullardan biri yordam beradi.
PHP - server tomonida o'rnatilgan dasturlash tili. Uning ko'p sintaksisi C, Java va Perl tillaridan olingan. Va faqat bir nechta noyob xususiyatlarni qo'shdi PHP funktsiyalari. Bu tilning asosiy maqsadi dinamik ravishda yaratilgan PHP HTML sahifalarini yaratishdir.
PHP dan HTMLga
Murakkab veb-sahifalarni yaratishda siz aniq vazifalarni bajarish uchun PHP va HTMLni birlashtirish zarurati bilan duch kelasiz. Bir qarashda, bu murakkab ko'rinishi mumkin, chunki PHP va HTML ikkita mustaqil fanlar, ammo bu unday emas. PHP HTML bilan o'zaro ishlash uchun mo'ljallangan va uning kodi sahifa belgilariga kiritilishi mumkin.
PHP kodi HTML sahifalariga maxsus teglar yordamida kiritiladi. Foydalanuvchi sahifani ochganda, server PHP kodini qayta ishlaydi va keyin qayta ishlash natijasini yuboradi PHP kodi) brauzerga.
HTML va PHPni birlashtirish juda oson. PHP skriptining teglardan tashqari har qanday qismiPHP kompilyatori tomonidan e'tiborga olinmaydi va to'g'ridan-to'g'ri brauzerga uzatiladi. Agar siz quyidagi misolni ko'rsangiz, to'liq PHP skripti quyidagicha ko'rinishi mumkinligini ko'rishingiz mumkin:
Salom bugun.