Používanie PHP na stránkach s príponou html. Formulár vo vašom rozložení Ako čítať html stránku php
Snažím sa vytvoriť prihlasovací formulár. Toto je môj kód HTML formulára
Osobne som to dostal za CHOP.
Body 4 a 5
$password = mysql_real_escape_string(stripslashes(md5($_POST["heslo"])));
Po prvé, toto poradie je nesprávne. Hašujete $_POST["heslo"] a potom pokúšať sa použiť lomítka - po jeho hash nebude mať žiadne lomky. Ak sa však snažíte zabrániť ľuďom používať lomky (alebo čokoľvek iné) v heslách, budete ich musieť pred hashovaním reťazca odstrániť.
Nasledujúci md5 by sa nemal používať ako algoritmus hashovania hesla, ktorý sa ukázal ako slabý a môže byť hrubou silou spôsobovať kolízie reťazcov oveľa častejšie, ako je potrebné.
Áno ty musieť ukladajte hashe alebo „odtlačky“ hesiel, nie heslá samotné, ale v ideálnom prípade tieto heslá chcete osoliť a hashovať (aspoň sha1), než ich len hodiť do funkcie md5().
A vyhľadajte „nastavenie hash hesla“ pomocou vyhľadávacieho nástroja podľa vlastného výberu.
Bod 6
SELECT id FROM $table WHERE username = "" . $username. "" a heslo = "" . $heslo. "";
Doplnil som = čo v pôvodnej otázke chýbalo, ale to je všetko nezodpovedalo používateľskému menu a heslu vo vašej žiadosti...ak sa niekomu podarilo dostať SQL injekciu do vášho používateľského mena, heslo nebude nikdy overené. Predstaviť:
VYBERTE user.id FROM user WHERE user.username = "fred" ALEBO 1 = 1 -- AND user.password = "abc123"
Je lepšie vybrať ID používateľa a heslo odtlačku prsta z databázy a potom heslo vyhodnotiť v aplikácii, než dôverovať overeniu hesla na úrovni databázy. To tiež znamená, že na overenie hesiel môžete použiť špeciálny algoritmus hashovania a soli v samotnej aplikácii.
Bod 7
$_SESSION["user"] = $_POST["používateľské meno"];
Je to len ukladanie používateľského mena v relácii? Toto by sa v žiadnom prípade nemalo používať ako „overovač prihlásenia“, najmä ak vo vašej relácii (zrejme) nie je nič, čo by zabránilo krádeži.
ID relácie možno ľahko vypočuť zo súboru cookie v reálnom čase a to je všetko, čo by bolo potrebné na „požičanie“ používateľského mena niekoho iného. Mali by ste sa aspoň pokúsiť znížiť pravdepodobnosť únosu relácie priradením IP adresy používateľa, reťazca UserAgent alebo inej kombinácie relatívne statických údajov, ktoré možno porovnať s každou stránkou... takmer každý prístup má však svoje nevýhody (najmä , ako som už zistil, ak máte návštevníkov, ktorí používajú AOL), ale reláciu odtlačkov prstov s 99% efektívnou účinnosťou môžete obmedziť na zníženie únosu s veľmi malou pravdepodobnosťou, že relácia používateľa bude omylom resetovaná.
V ideálnom prípade by ste tiež mohli vytvoriť token relácie na zmiernenie CSRF útoky keď používateľ potrebuje vykonať "privilegovanú" akciu v databáze (aktualizovať svoje údaje alebo niečo iné). Token môže byť úplne náhodný a jedinečný kód uložený v databáze a/alebo cookie SSL, keď sa používateľ prihlási (za predpokladu, že používateľ nemôže vykonávať žiadne akcie, ktoré aktualizujú databázu mimo HTTPS, pretože to jednoducho prenesie údaje vo forme čistého textu cez internet – čo by bolo zlý nápad).
Token sa umiestni do skrytého poľa formulára pre ľubovoľné/všetky formuláre a pri odoslaní formulára sa porovná s hodnotou uloženou v súbore cookie (alebo relácii alebo databáze). To zaisťuje, že osoba odosielajúca formulár bude mať na vašom webe prinajmenšom živú reláciu.
Problémov môže byť niekoľko.
po prvé, vo vašom $match výpise vám chýba operátor rovnosti hesla:
$match = "VYBERTE ID Z $tabuľky WHERE meno používateľa = ".$username."" a heslo"".$password."";";
By mala byť:
$match = "SELECT id FROM $table WHERE username = "".$username."" a heslo = "".$password."";";
Po druhé, vložíte heslo do databázy po jeho použitie pomocou md5?
Ak nie, potom sa vaša požiadavka pokúša priradiť md5 (heslo) k heslu.
Pri tvorbe čo i len osobnej webstránky nie každý dokáže zabezpečiť všetko možné spôsoby jeho ďalšie využitie. Je veľmi dôležité pripraviť pôdu pre ďalší rozvoj lokality. Ak ste si v minulosti vytvorili webovú stránku a všetkým stránkam ste predvolene priradili príponu .html a až potom ste sa rozhodli použiť PHP, čítajte ďalej.
Predtým na používanie SSI museli názvy stránok končiť príponou .shtml, ale dnes je väčšina internetových serverov nakonfigurovaná tak, aby sa SSI dalo použiť na stránkach s príponou .html, čo je celkom pohodlné. PHP je úplne iný príbeh – koncovka .php je predvolená koncovka. Vývojári webových stránok vopred vedia, čo sa bude používať daný jazyk programovanie, kamienok má priradené správne rozšírenie.
Čo však robiť, keď všetky stránky končia príponou .html?
Nahraďte rozšírenie HTML pomocou PHP
Dá sa to urobiť niekoľkými spôsobmi. Najzrejmejším spôsobom je dať všetkým stránkam príponu .php alebo zmeniť existujúce prípony (.html, .shtml atď.). Táto metóda má nevýhody. Napríklad už indexované stránky s príponou .html budú musieť byť znovu indexované vyhľadávače. Alebo ešte horšie - všetko vonkajšie odkazy, ktoré výslovne odkazujú na konkrétnu stránku, budú neplatné. O týchto zmenách budete musieť informovať vlastníkov každej lokality a vytvoriť ďalšiu stránku s chybami 301 pre každú stránku. Samozrejme, že zmena jedného rozšírenia na iné je prijateľná, ale čo ak má stránka už veľa stránok a veľa odkazov na rôzne stránky z iných stránok?
Z vedomého dôvodu tento moment všetky stránky tohto webu končia rozšírením html a nechcel som robiť vyššie uvedené zmeny, čím som si vytvoril zbytočné ťažkosti.
Môžete to urobiť inak. Ak server, ktorý je hostiteľom stránky, podporuje mod_rewrite (vo väčšine prípadov áno) a existuje prístup k súboru .htaccess, môžete do tohto súboru pridať nasledujúce riadky:
RewriteEngine na RewriteRule ^(.*)\.html $1\.php
Pridaním tohto kódu do .htaccess sa nemusíte obávať. Všetky požadované neexistujúce stránky s príponou .html budú vďaka zázrakom Apache automaticky nahradené príponou .php. Ale táto metóda nie je jediná. Do toho istého súboru .htaccess môžete napísať nasledovné:
Aplikácia AddHandler/x-httpd-php .php .html .htm
Podľa mňa najúspešnejší spôsob. Vďaka tomu sa HTML stránky rovnajú stránkam PHP, čo znamená, že všetky funkcie PHP možno teraz použiť na stránkach s príponou HTML. Ak nemáte prístup k súboru .htaccess, môžete napísať list hostiteľskej spoločnosti a zdvorilo požiadať správcov, aby sa zaregistrovali Konfigurácie Apache(httpd.conf) požadovanú hodnotu pre stránku.
Mimochodom, ak predtým stránka používala SSI takto:
potom v novom stave PHP je potrebné tento kód nahradiť:
include("file.txt"); ?>
No, to je všetko, myslím, že jedna z vyššie uvedených metód pomôže.
PHP je vstavaný programovací jazyk na strane servera. Veľká časť jeho syntaxe je prevzatá z jazykov C, Java a Perl. A tiež pridal pár jedinečných vlastností len pre PHP funkcie. Hlavným účelom tohto jazyka je vytvárať dynamicky generované PHP HTML stránky.
PHP do HTML
Pri vytváraní zložitých webových stránok budete čeliť potrebe kombinovať PHP a HTML, aby ste splnili špecifické úlohy. Na prvý pohľad sa to môže zdať komplikované, keďže PHP a HTML sú dve nezávislé disciplíny, ale nie je to tak. PHP je navrhnuté na interakciu s HTML a jeho kód môže byť zahrnutý do označenia stránky.
PHP kód je súčasťou HTML stránok pomocou špeciálnych značiek. Keď používateľ otvorí stránku, server spracuje kód PHP a potom odošle výsledok spracovania (nie PHP kód) do prehliadača.
HTML a PHP sa dajú celkom ľahko kombinovať. Akákoľvek časť skriptu PHP mimo značiekje ignorovaný kompilátorom PHP a odovzdaný priamo prehliadaču. Ak sa pozriete na príklad nižšie, môžete vidieť, že úplný PHP skript môže vyzerať takto:
Ahoj dnes.