PHP izmantošana lapās ar html paplašinājumu. Veidlapa jūsu izkārtojumā Kā lasīt html lapu php
Mēģinu izveidot pieteikšanās formu. Šis ir mans HTML formas kods
Personīgi es to ieguvu par ACVN.
4. un 5. punkts
$parole = mysql_real_escape_string(stripslashes(md5($_POST["parole"])));
Pirmkārt, šī kārtība ir nepareiza. Jūs sajaucat $_POST["parole"] un tad mēģinot izmantot svītras - pēc tās hashēm nebūs slīpsvītru. Tomēr, ja mēģināt neļaut cilvēkiem parolēs izmantot slīpsvītras (vai jebko citu), pirms virknes jaukšanas tās ir jānoņem.
Šo md5 nevajadzētu izmantot kā paroles jaukšanas algoritmu, kas ir atzīts par vāju un var būt rupjš spēks, lai radītu virkņu sadursmes daudz biežāk nekā nepieciešams.
Jā, tu obligāti glabājiet paroļu jaucējus vai "pirkstu nospiedumus", nevis pašas paroles, bet ideālā gadījumā jūs vēlaties šīs paroles sālīt un jaukt (vismaz sha1), nevis vienkārši iemest tās funkcijā md5().
Un meklējiet "paroles jaukšanas iestatījumu", izmantojot izvēlēto meklētājprogrammu.
6. punkts
SELECT id FROM $table WHERE lietotājvārds = "" . $lietotājvārds. "" un parole = "" . $parole. "";
Es pievienoju = kas trūka sākotnējā jautājumā, bet tas tā neatbilst jūsu pieprasījumā norādītajam lietotājvārdam un parolei...ja kādam izdevās ievadīt jūsu lietotājvārdu SQL, parole nekad netiks pārbaudīta. Iepazīstināt:
SELECT user.id FROM user WHERE user.username = "fred" VAI 1 = 1 -- UN user.password = "abc123"
Labāk ir izvēlēties pirkstu nospiedumu lietotāja ID un paroli no datu bāzes un pēc tam novērtēt paroli lietojumprogrammā, nevis uzticēties datu bāzes līmeņa paroles pārbaudei. Tas nozīmē arī to, ka varat izmantot īpašu jaukšanas un sālīšanas algoritmu pašā lietotnē, lai pārbaudītu savas paroles.
7. punkts
$_SESSION["lietotājs"] = $_POST["lietotājvārds"];
Vai sesijā tiek saglabāts tikai lietotājvārds? To nekādā veidā nevajadzētu izmantot kā "pieteikšanās verificētāju", it īpaši, ja jūsu sesijā (acīmredzot) nav nekā, kas novērstu nolaupīšanu.
Sesijas ID var viegli izsūknēt no sīkfaila reāllaikā, un tas ir viss, kas būtu nepieciešams, lai “aizņemtos” kāda cita lietotājvārdu. Jums vajadzētu vismaz mēģināt samazināt sesijas nolaupīšanas iespējamību, saistot lietotāja IP adresi, UserAgent virkni vai kādu citu salīdzinoši statisku datu kombināciju, ko var salīdzināt ar katru lapu... tomēr gandrīz jebkurai pieejai ir trūkumi (jo īpaši , kā jau esmu atklājis, ja jums ir apmeklētāji, kas izmanto AOL), taču varat izveidot iespējamu 99% efektīvu pirkstu nospiedumu sesiju, lai samazinātu nolaupīšanu ar ļoti mazu iespēju, ka lietotāja sesija tiks kļūdaini atiestatīta.
Ideālā gadījumā jūs varētu izveidot arī sesijas marķieri, lai mazinātu CSRF uzbrukumi kad lietotājam datu bāzē ir jāveic "priviliģēta" darbība (jāatjaunina savi dati vai kas cits). Tokens var būt pilnīgi nejaušs un unikāls kods, kas tiek glabāts datu bāzē un/vai cepums SSL, kad lietotājs piesakās (ar nosacījumu, ka lietotājs nevar veikt nekādas darbības, kas atjaunina datu bāzi ārpus HTTPS, jo tas vienkārši pārsūtīs datus skaidrā tekstā pa internetu - kas būtu slikta ideja).
Marķieris tiek ievietots slēptā veidlapas laukā jebkurai/visām veidlapām un tiek pārbaudīta ar sīkfailā (vai sesijā vai datubāzē) saglabāto vērtību, kad šī veidlapa tiek iesniegta. Tas nodrošina, ka personai, kas iesniedz veidlapu, jūsu vietnē būs vismaz tiešraides sesija.
Var būt vairākas problēmas.
Pirmkārt, jūsu $match paziņojumā trūkst paroles vienlīdzības operatora:
$match = "SELECT id FROM $table WHERE lietotājvārds = "".$lietotājvārds."" un parole"".$parole."";";
Vajadzētu būt:
$match = "SELECT id FROM $table WHERE lietotājvārds = "".$lietotājvārds."" un parole = "".$parole."";";
Otrkārt, jūs ievietojat paroli datu bāzē pēc tā izmantošana, izmantojot md5?
Ja nē, jūsu pieprasījums mēģina saskaņot md5 (paroli) ar paroli.
Veidojot pat personīgo vietni, ne visi var nodrošināt visu iespējamie veidi tā turpmāka izmantošana. Ir ļoti svarīgi sagatavot augsni turpmākai vietnes attīstībai. Ja iepriekš esat izveidojis vietni un pēc noklusējuma visām lapām piešķīris paplašinājumu .html un tikai pēc tam nolēmis izmantot PHP, tad lasiet tālāk.
Iepriekš, lai izmantotu SSI, vietņu lapu nosaukumiem bija jābeidzas ar paplašinājumu .shtml, taču mūsdienās lielākā daļa interneta serveru ir konfigurēti tā, lai SSI varētu izmantot lapās ar paplašinājumu .html, kas ir diezgan ērti. PHP ir pavisam cits stāsts – .php paplašinājums ir noklusējuma paplašinājums. Vietņu izstrādātāji jau iepriekš zinot, kas tiks izmantots dotā valoda programmējot, kalnu akmenim tiek piešķirts pareizais paplašinājums.
Bet ko darīt, ja visas lapas beidzas ar .html paplašinājumu?
Aizstāt HTML paplašinājumu ar PHP
To var izdarīt vairākos veidos. Visredzamākais veids ir piešķirt visām lapām .php paplašinājumu vai mainīt esošos paplašinājumus (.html, .shtml utt.). Šai metodei ir trūkumi. Piemēram, jau indeksētās lapas ar paplašinājumu .html būs jāindeksē vēlreiz meklētājprogrammas. Vai vēl ļaunāk – viss arejas saites, kas tieši novirza uz noteiktu lapu, būs nederīgs. Un jums būs jāpaziņo katras vietnes īpašniekiem par šīm izmaiņām un katrai lapai jāizveido cita lapa ar 301 kļūdu. Protams, viena paplašinājuma nomaiņa pret citu ir pieņemama, bet ja vietnei jau ir daudz lapu un daudzas saites uz dažādām lapām no citām vietnēm?
Apzināta iemesla dēļ Šis brīdis visas šīs vietnes lapas beidzas ar html paplašinājumu, un es negribēju veikt iepriekš minētās izmaiņas, tādējādi radot sev nevajadzīgas grūtības.
To var izdarīt citā veidā. Ja serveris, kas mitina vietni, atbalsta mod_rewrite (vairumā gadījumu tas atbalsta) un ir piekļuve .htaccess failam, šim failam varat pievienot šādas rindiņas:
RewriteEngine uz RewriteRule ^(.*)\.html $1\.php
Pievienojot šo kodu failam .htaccess , jums nav jāuztraucas. Pateicoties Apache brīnumiem, visas pieprasītās neesošās lapas ar .html paplašinājumu tiks automātiski aizstātas ar paplašinājumu .php. Bet šī metode nav vienīgā. Tajā pašā .htaccess failā varat ierakstīt tālāk norādīto.
AddHandler lietojumprogramma/x-httpd-php .php .html .htm
Manuprāt, visveiksmīgākais veids. Tas padara HTML lapas vienādas ar PHP lapām, kas nozīmē, ka visas PHP funkcijas tagad var izmantot lapās ar HTML paplašinājumu. Ja jums nav piekļuves .htaccess failam, varat uzrakstīt vēstuli hostinga uzņēmumam un pieklājīgi lūgt administratoriem reģistrēties Apache konfigurācijas(httpd.conf) vietnei nepieciešamo vērtību.
Starp citu, ja pirms tam vietne izmantoja SSI šādi:
tad jaunajā PHP stāvoklī šis kods ir jāaizstāj ar:
include("file.txt"); ?>
Tas arī viss, es domāju, ka palīdzēs kāda no iepriekšminētajām metodēm.
PHP ir iegulta servera puses programmēšanas valoda. Liela daļa tās sintakses ir aizgūta no C, Java un Perl. Un arī pievienoja pāris unikālas īpašības tikai PHP funkcijas. Šīs valodas galvenais mērķis ir izveidot dinamiski ģenerētas PHP HTML lapas.
PHP uz HTML
Veidojot sarežģītas tīmekļa lapas, jūs saskarsities ar nepieciešamību apvienot PHP un HTML, lai veiktu konkrētus uzdevumus. No pirmā acu uzmetiena tas var šķist sarežģīti, jo PHP un HTML ir divas neatkarīgas disciplīnas, taču tas tā nav. PHP ir paredzēts mijiedarbībai ar HTML, un tā kodu var iekļaut lapas marķējumā.
PHP kods ir iekļauts HTML lapās, izmantojot īpašus tagus. Kad lietotājs atver lapu, serveris apstrādā PHP kodu un pēc tam nosūta apstrādes rezultātu (nevis PHP kods) pārlūkprogrammā.
HTML un PHP ir diezgan viegli apvienot. Jebkura PHP skripta daļa ārpus tagiemPHP kompilators to ignorē un nodod tieši pārlūkprogrammai. Ja skatāties tālāk redzamo piemēru, varat redzēt, ka pilns PHP skripts varētu izskatīties šādi:
Sveiki šodien.