PHP-ohjelmoinnin perusasioita

talaakso

Olen muun ohjelmoinnin ohessa joutunut/saanut koodata myös php:tä ja päätin vihdoin kirjata muutaman mielestäni oleellisen asian eräänlaiseksi muisti- ja linkkilistaksi, josko tuosta olisi hyötyä myös muille:

http://www.talaakso.fi/suomi/ohjelmointi/php/php-perusasiat.php

En ole mikään alan guru, joten myös tekemistäni virheistä voi oppia :)

6

541

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • mikäpäs ettei

      Ihan hieno asia.

      Muutama ehdotus tulee tästä lonkalta vaan mieleen:
      - koska PHP-tulkki ei välttämättä ihan aina toimi (se voi olla kaatunut) niin kriittinen koodi kannattaa ehkä inkludaamalla sijoittaa muualle kuin siihen tiedostoon jota ensisijaisesti kutsutaan niin ettei kriittinen koodi koskaan näy selaimessa (silloinkaan kun PHP-tulkki on poissa pelistä)
      - voi olla hyvä ajatus sijoittaa inkludatut PHP-tiedostot web-juurihakemiston "yläpuolelle" niin että niihin ei pääse ulkopuolelta
      - hakemiston lukitseva tiedosto kuten index.html - vaikka tyhjänäkin - olisi hyvä olla jokaisessa hakemistossa koska se estää hakemiston sisällön tutkimisen suoraan selaimella
      - print_r on kovin hyödyllinen kehittelyssä ja debuggauksessa taulukoiden rakenteen ja sisällön tulostukseen
      - session käyttö

      • talaakso

      • juuret kohti taivasta?

        Tämä ehkä selventää mitä tarkoitin webjuurta ylemmällä hakemistolla

        YLEMPI HAKEMISTO
        |
        --- JEMMA
        | |
        | kriittiset kooditiedostot
        |
        --- WEBJUURI
        |
        webjuuren alla näkyvät tiedostot

        Idea on tässä se että käyttäjän selaimessa voivat näkyä suoraan vain webjuuren alla olevat tiedostot. Käyttäjä ei pääse selaimella webjuuren yläpuolelle, eikä siten pääse myöskään hakemistoon JEMMA. Jos PHP-tulkki on toiminnassa, voi se kuitenkin käyttää myös hakemistossa JEMMA olevia skriptejä. Kun kriittinen koodi on hakemistossa JEMMA niin se ei missään tilanteessa voi näkyä käyttäjän selaimessa.


      • juuret kohti taivasta?
        juuret kohti taivasta? kirjoitti:

        Tämä ehkä selventää mitä tarkoitin webjuurta ylemmällä hakemistolla

        YLEMPI HAKEMISTO
        |
        --- JEMMA
        | |
        | kriittiset kooditiedostot
        |
        --- WEBJUURI
        |
        webjuuren alla näkyvät tiedostot

        Idea on tässä se että käyttäjän selaimessa voivat näkyä suoraan vain webjuuren alla olevat tiedostot. Käyttäjä ei pääse selaimella webjuuren yläpuolelle, eikä siten pääse myöskään hakemistoon JEMMA. Jos PHP-tulkki on toiminnassa, voi se kuitenkin käyttää myös hakemistossa JEMMA olevia skriptejä. Kun kriittinen koodi on hakemistossa JEMMA niin se ei missään tilanteessa voi näkyä käyttäjän selaimessa.

        Minä tyhmä yritin käyttää tuossa yllä välilyöntejä havainnollistamaan tasoja. No eihän ne näy. Kaksi välilyöntiä on täällä sama kuin yksi välilyönti. Pistämpä uusiksi pisteiden kanssa:

        YLEMPI HAKEMISTO
        |
        --- JEMMA
        | ......|
        | ......kriittiset kooditiedostot
        |
        --- WEBJUURI
        ......|
        ...... webjuuren alla näkyvät tiedostot


      • talaakso
        juuret kohti taivasta? kirjoitti:

        Minä tyhmä yritin käyttää tuossa yllä välilyöntejä havainnollistamaan tasoja. No eihän ne näy. Kaksi välilyöntiä on täällä sama kuin yksi välilyönti. Pistämpä uusiksi pisteiden kanssa:

        YLEMPI HAKEMISTO
        |
        --- JEMMA
        | ......|
        | ......kriittiset kooditiedostot
        |
        --- WEBJUURI
        ......|
        ...... webjuuren alla näkyvät tiedostot

        Kiitos vielä noista kommenteistasi, laitan ne oman sivuni loppuun jonkinlaiseen "kommentteja"-osioon, jos et tuota kiellä.

        Muotoilen nyt tuon yllä olevan hakemisto asian vielä "tavallisella unix/linux-kielellä":

        Monesti nettisivujen palvelimelle logatessa ollaan omassa juurihakemistossa, jossa on nettisivuja
        varten olemassa hakemisto (aina ei näin ole)

        public_html

        Yleensä tuon public_html-hakemiston ja sen alihakemistojen sisältö on "yleistä riistaa" eli näkyvät netissä.

        Jos siis haluaa tehdä php/shell-skriptejä, jotka hoitavat esim. tilapäistiedostojen poistoa tai sisältävät arkaluoteista tietoa esim. tietokantojen loggaustietoja niin nämä olisi tietoturvasyistä syytä sijoittaa tuon public_html (tai vastaavan hakemiston) yläpuolelle.

        Esim. juurihakemistossa hakemistoon bin

        bin
        public_html

        Lisäksi unix/linux-ympäristössä on aina syytä olla tietoinen tiedostojen/hakemistojen oikeuksien määräämisestä chmod-komenolla.

        Lisätietoja:
        man chmod

        Jos kuitenkin päättää lisätä nettisivuilleen arkaluonteista materiaalia tai ns. jäsenmateriaalia, niin aloittelijoille (kuten itselleni) näkisin tuon monen palveluntarjoajan tukeman salasanasuojattujen kansioiden käytön (htpasswd) järkevänä systeeminä. Omiin ex. tempore käyttäjätunnus/salasana viritelmiin kun usein jää etenkin alottelijoilla pahojakin tietoturva-aukkoja. Ja toisaalta miksi keksiä pyörää uudestaan...

        Tosin en tiedä onko tuo salasanasuojettujen kansioiden systeemi sitten "täysin" aukoton systeemi, mutta varmasti turvallisempi kuin useimmat nopeasti kyhätyt systeemit.


      • HNInfo
        talaakso kirjoitti:

        Kiitos vielä noista kommenteistasi, laitan ne oman sivuni loppuun jonkinlaiseen "kommentteja"-osioon, jos et tuota kiellä.

        Muotoilen nyt tuon yllä olevan hakemisto asian vielä "tavallisella unix/linux-kielellä":

        Monesti nettisivujen palvelimelle logatessa ollaan omassa juurihakemistossa, jossa on nettisivuja
        varten olemassa hakemisto (aina ei näin ole)

        public_html

        Yleensä tuon public_html-hakemiston ja sen alihakemistojen sisältö on "yleistä riistaa" eli näkyvät netissä.

        Jos siis haluaa tehdä php/shell-skriptejä, jotka hoitavat esim. tilapäistiedostojen poistoa tai sisältävät arkaluoteista tietoa esim. tietokantojen loggaustietoja niin nämä olisi tietoturvasyistä syytä sijoittaa tuon public_html (tai vastaavan hakemiston) yläpuolelle.

        Esim. juurihakemistossa hakemistoon bin

        bin
        public_html

        Lisäksi unix/linux-ympäristössä on aina syytä olla tietoinen tiedostojen/hakemistojen oikeuksien määräämisestä chmod-komenolla.

        Lisätietoja:
        man chmod

        Jos kuitenkin päättää lisätä nettisivuilleen arkaluonteista materiaalia tai ns. jäsenmateriaalia, niin aloittelijoille (kuten itselleni) näkisin tuon monen palveluntarjoajan tukeman salasanasuojattujen kansioiden käytön (htpasswd) järkevänä systeeminä. Omiin ex. tempore käyttäjätunnus/salasana viritelmiin kun usein jää etenkin alottelijoilla pahojakin tietoturva-aukkoja. Ja toisaalta miksi keksiä pyörää uudestaan...

        Tosin en tiedä onko tuo salasanasuojettujen kansioiden systeemi sitten "täysin" aukoton systeemi, mutta varmasti turvallisempi kuin useimmat nopeasti kyhätyt systeemit.

        Mitä itse olen käyttänyt niin PHP-tiedostoissa jos käyttää esim. tietokantojen tietoja sisältäviä salasanatiedostoja, niin kannattaa tehdä esim. näin linux/unix -järjestelmässä:
        Jos www-juuri on /home/user/public_html, sijoittaa tiedoston paikkaan /home/user/.(random), jossa (random) on satunnainen merkkijono, joka ei ole arvattavissa normaalisti. Piste hakemiston edessä piiloittaa sen järjestelmässä normaalista tiedostolistauksesta.
        Itse PHP-scriptissä hakee liittää tiedoston käyttöön komennolla @include('/home/user/.random/.random'); jossa tiedostonnimikin on satunnaisesti luotu, samalla tapaa kuin hakemiston nimikin.
        @ merkki estää tiedoston liittämisessä tapahtuvien virheiden näkymisen selaimessa, jos virheet on asetettu näkymään.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. On tiedossa, että venäjämieliset diggaavat diktatuurista venäjää

      jossa ei esim. ole sanan- ja lehdistönvapautta. Mutta keitä nämä venäjän palvojat sitten ovat, ei heitä toki paljon ole
      Maailman menoa
      48
      2509
    2. Vihreiden, SDP:n ja Vasemmistoliiton kannattajista selvästi alle puolet on miehiä

      ja silti joku punafeministi valitti kokoomuksen naiskannattajien puutteesta, vaikka siellä on enemmän naisia kuin punavi
      Maailman menoa
      74
      2497
    3. Belfastissa käynnissä kunnon persuilu

      Joku random mamu tekee rikoksen, niin sikäläiset naamiopersut kostavat tuhoamalla kantaävestön omaisuutta. Liekö siellä
      Maailman menoa
      73
      2382
    4. Ensin Henry Novak ja nyt sitten se Irlannin tapaus

      jossa mustaihoinen afrikkalainen mieshenkilö puukottaa valkoihoista maassa makaavaa miestä useita kertoa pään alueelle.
      Maailman menoa
      61
      2165
    5. Islamovasemmistolaisuus - tälläista termiä käytetään

      Termi tarkoittaa alunperin äärivasemmiston ja muslimifundamentalistien liittoa, jonka ytimessä oli antisemitismi. Isl
      Maailman menoa
      32
      1877
    6. Persujen kannatusromahdus tekee kesästä 2026 nautinnollisen

      Satoi tai paistoi, niin Suomen kansalaisella on kuluvana kesänä syytä hymyyn. Niin upealta tuntuu persujen kannatusroma
      Maailman menoa
      100
      1727
    7. Martina Aitolehti läpäisi Erikoisjoukot - Tilittää umpirehellisenä kuvauksista

      Martina Aitolehti selvisi Erikoisjoukot koulutuksesta. Hän myös malttoi pääosin pitää mölyt mahassaan, vaikka saikin ko
      Kotimaiset julkkisjuorut
      23
      1175
    8. Riikka runnoo! sähkön hinta +25 %, bensan hina +16 %

      Euron bensa! Tuo legendaarinen persujen vaalilupaus. Sannan hallitus pudotti sähköenergan alv:n 10 prosenttiin, Riikka r
      Maailman menoa
      7
      1034
    9. Rakastan sinua hiljaisuudessa

      Rakastan sinua hiljaisuudessa. Olisit minun tai et, olen odottanut sinua vuosisatojen ajan. Ilman sinua sydämeni on yksi
      Rakkaus ja rakastaminen
      41
      1015
    10. Eläköön kuningas, kuningas on kuollut

      Heikki Nivala kaatui kuin mies. Kavaltaja käveli juuri edelliseen toukokuun kokoukseen hankkimansa puku päällä. Eläköön
      Kemijärvi
      56
      906
    Aihe