Korištenje PHP-a na stranicama s ekstenzijom html. Obrazac u vašem izgledu Kako čitati html stranicu php
Pokušavam stvoriti obrazac za prijavu. Ovo je moj HTML kôd obrasca
Osobno sam ga dobio za PDO.
Točke 4 i 5
$lozinka = mysql_real_escape_string(stripslashes(md5($_POST["lozinka"])));
Prvo, redoslijed ovoga je pogrešan. Raspršite $_POST["lozinka"] i zatim pokušava koristiti stripslashes - nakon njegovi hashovi neće imati kose crte. Međutim, ako pokušavate spriječiti ljude da koriste kose crte (ili bilo što drugo) u lozinkama, morat ćete ih ukloniti prije raspršivanja niza.
Sljedeći md5 ne bi se trebao koristiti kao algoritam za raspršivanje zaporke, za koji je utvrđeno da je slab i da može biti gruba sila za stvaranje kolizija nizova mnogo češće nego što je potrebno.
da ti mora pohranjujte hashove ili "otiske prstiju" zaporki, a ne same zaporke, ali idealno bi bilo da te lozinke usolite i raspršite (s najmanje sha1), umjesto da ih samo ubacite u funkciju md5().
I potražite "postavku raspršivanja lozinke" koristeći tražilicu koju odaberete.
Točka 6
SELECT id FROM $table WHERE korisničko ime = "" . $korisničko ime. "" i lozinka = "". $lozinka. "";
Dodao sam u = što je nedostajalo u izvornom pitanju, ali to je to nije odgovaralo korisničkom imenu i lozinci u vašem zahtjevu...ako je netko uspio dobiti SQL injekciju u vaše korisničko ime, lozinka nikada neće biti provjerena. Predstaviti:
SELECT user.id FROM user WHERE user.username = "fred" OR 1 = 1 -- AND user.password = "abc123"
Bolje je odabrati korisnički ID i lozinku za otisak prsta iz baze podataka, a zatim procijeniti lozinku u aplikaciji umjesto vjerovati provjeri lozinke na razini baze podataka. To također znači da možete koristiti poseban algoritam raspršivanja i usoljavanja unutar same aplikacije za provjeru svojih zaporki.
Točka 7
$_SESSION["user"] = $_POST["username"];
Je li to samo pohranjivanje korisničkog imena u sesiji? Ovo se ni na koji način ne bi trebalo koristiti kao "verifikator prijave", pogotovo ako na vašoj sesiji (očigledno) nema ničega što bi spriječilo otmicu.
ID sesije se lako može nanjušiti iz kolačića u stvarnom vremenu i to je sve što bi bilo potrebno da se "posudi" tuđe korisničko ime. Trebali biste barem pokušati smanjiti vjerojatnost otmice sesije povezivanjem korisničke IP adrese, niza UserAgent-a ili neke druge kombinacije relativno statičnih podataka koji se mogu usporediti sa svakom stranicom... gotovo svaki pristup ima nedostatke (osobito , kao što sam već otkrio, ako imate posjetitelje koji koriste AOL), ali možete omogućiti moguću 99% učinkovitu sesiju otiska prsta kako biste smanjili otmicu uz vrlo malu vjerojatnost da će se korisnička sesija greškom poništiti.
Idealno bi također mogli stvoriti token sesije za ublažavanje CSRF napadi kada korisnik treba izvršiti "povlaštenu" akciju nad bazom (ažurirati svoje podatke ili nešto treće). Token može biti potpuno nasumičan i jedinstven kod pohranjen u bazi podataka i/ili kolačić SSL kada se korisnik prijavi (pod uvjetom da korisnik ne može izvršiti nikakve radnje koje ažuriraju bazu podataka izvan HTTPS-a, jer će to jednostavno prenijeti podatke u čistom tekstu preko Interneta - što bi bilo Loša ideja).
Token se postavlja u skriveno polje obrasca za bilo koji/sve obrasce i provjerava se u odnosu na vrijednost pohranjenu u kolačiću (ili sesiji ili bazi podataka) kada se taj obrazac pošalje. To osigurava da će osoba koja podnosi obrazac imati barem sesiju uživo na vašoj web stranici.
Moglo bi biti nekoliko problema.
Prvo, u izjavi $match nedostaje vam operator jednakosti zaporke:
$match = "SELECT id FROM $table WHERE korisničko ime = "".$korisničko ime."" i lozinka"".$lozinka."";";
Trebalo bi:
$match = "SELECT id FROM $table WHERE korisničko ime = "".$korisničko ime."" i lozinka = "".$lozinka."";";
Drugo, ubacite lozinku u bazu podataka nakon njegovu upotrebu pomoću md5?
Ako ne, onda vaš zahtjev pokušava spojiti md5 (lozinka) sa lozinkom.
Prilikom izrade čak i osobne web stranice, ne može svatko osigurati sve moguće načine njegovu daljnju upotrebu. Vrlo je važno pripremiti teren za daljnji razvoj stranice. Ako ste u prošlosti izradili web mjesto i svim stranicama prema zadanim postavkama dodijelili ekstenziju .html, a tek onda odlučili koristiti PHP, onda čitajte dalje.
Prije su za korištenje SSI-ja nazivi stranica stranica morali završavati ekstenzijom .shtml, no danas je većina internetskih poslužitelja konfigurirana tako da se SSI može koristiti na stranicama s ekstenzijom .html, što je prilično zgodno. PHP je sasvim druga priča - ekstenzija .php je zadana ekstenzija. Programeri web stranica unaprijed znaju što će se koristiti dati jezik programiranja, kamenčiću se dodjeljuje ispravna ekstenzija.
Ali što učiniti kada sve stranice završavaju ekstenzijom .html?
Zamijenite HTML proširenje PHP-om
To se može učiniti na nekoliko načina. Najočitiji način je dati svim stranicama ekstenziju .php ili promijeniti postojeće ekstenzije (.html, .shtml, itd.). Ova metoda ima nedostatke. Na primjer, već indeksirane stranice s nastavkom .html morat će se ponovno indeksirati tražilice. Ili još gore – sve vanjske poveznice, koji izričito povezuju na određenu stranicu bit će nevažeći. Morat ćete obavijestiti vlasnike svake stranice o ovim promjenama i stvoriti drugu stranicu s 301 greškom za svaku stranicu. Naravno, promjena jednog proširenja drugim je prihvatljiva, ali što ako stranica već ima mnogo stranica i mnogo poveznica na različite stranice s drugih stranica?
Iz svjesnog razloga ovaj trenutak sve stranice ove stranice završavaju s ekstenzijom html, a gore navedene izmjene nisam želio napraviti, stvarajući si nepotrebne poteškoće.
Možete to učiniti na drugi način. Ako poslužitelj koji hostira web mjesto podržava mod_rewrite (u većini slučajeva podržava) i postoji pristup .htaccess datoteci, tada možete dodati sljedeće retke ovoj datoteci:
RewriteEngine na RewriteRule ^(.*)\.html $1\.php
Dodavanjem ovog koda u .htaccess ne morate se brinuti. Sve tražene nepostojeće stranice s ekstenzijom .html automatski će biti zamijenjene ekstenzijom .php zahvaljujući čudima Apachea. Ali ova metoda nije jedina. U istoj .htaccess datoteci možete napisati sljedeće:
AddHandler aplikacija/x-httpd-php .php .html .htm
Po mom mišljenju najuspješniji način. To čini HTML stranice jednakima PHP stranicama, što znači da se sve PHP funkcije sada mogu koristiti na stranicama s HTML ekstenzijom. Ako nemate pristup datoteci .htaccess, možete napisati pismo hosting tvrtki i pristojno zamoliti administratore da se registriraju na Apache konfiguracije(httpd.conf) potrebnu vrijednost za stranicu.
Usput, ako je prije ovoga stranica koristila SSI na sljedeći način:
tada u novom PHP stanju ovaj kôd treba zamijeniti s:
include("file.txt"); ?>
Pa, to je sve, mislim da će jedna od gore navedenih metoda pomoći.
PHP je ugrađeni programski jezik na strani poslužitelja. Velik dio njegove sintakse posuđen je iz C-a, Jave i Perla. Također je dodao nekoliko jedinstvenih karakteristika samo za PHP funkcije. Glavna svrha ovog jezika je stvaranje dinamički generiranih PHP HTML stranica.
PHP u HTML
Prilikom izrade složenih web stranica, suočit ćete se s potrebom kombiniranja PHP-a i HTML-a za postizanje specifičnih zadataka. Na prvi pogled ovo može izgledati komplicirano, budući da su PHP i HTML dvije neovisne discipline, ali to nije tako. PHP je dizajniran za interakciju s HTML-om, a njegov se kod može uključiti u označavanje stranice.
PHP kod je uključen u HTML stranice pomoću posebnih oznaka. Kada korisnik otvori stranicu, poslužitelj obrađuje PHP kod i zatim šalje rezultat obrade (ne PHP kod) u preglednik.
HTML i PHP je prilično lako kombinirati. Bilo koji dio PHP skripte izvan oznakaPHP prevodilac zanemaruje i prosljeđuje izravno pregledniku. Ako pogledate primjer u nastavku, možete vidjeti da kompletna PHP skripta može izgledati ovako:
Pozdrav danas.