Luettelo hyödyllisistä työkaluista php-kehittäjille

Tänään, hyvä lukija, ehdotan, että jatkat PHP-ohjelmoinnin opiskelua Kohana 3.1 -kehyksen avulla. Omistan tämän artikkelin ja opetusvideon materiaalin julkaisemiseen hallintapaneelista.

Toimintasuunnitelma tälle päivälle:

  • Luo hallintapaneelissa lomake materiaalien lisäämistä varten. Lisäyslomake sisältää pudotusluettelon kategorioiden nimillä (julkaistu materiaali lisätään valittuun luokkaan) ja alueen itse materiaalin tekstisisällön syöttämiseen (tekstialue).
  • Liitä visuaalinen editori CKEditor materiaalisisällön syöttöalueelle.
  • Suojaa syöttömateriaali JavaScript-komentosarjojen injektoitumiselta. Syödä erikoiskirjasto, joka puhdistaa sisällön JavaScriptistä, on nimeltään HTML Purifier (haitallisen JavaScriptin mahdollisen lisäyksen ongelma sivuston sisältöön kuvataan alla).

Video opetusohjelma

Liittymishetkestä lähtien visuaalinen editori ongelma syntyy haitallisen JavaScriptin mahdollisesta lisäämisestä sisältöön. Tosiasia on, että visuaalinen editori muuttaa tekstin muotoilua lisäämällä HTML-tageja. Vastaavasti sisällön muotoilun säilyttämiseksi meidän on lähetettävä visuaalisen editorin tuloksena saatu HTML-koodi tietokantaan korvaamatta HTML-tageja tekstikokonaisuuksilla (toisin sanoen "jäljittämättä" PHP-funktiota htmlspecialchars). HTML-merkintöjen ohella haitallinen JavaScript voidaan helposti lähettää tietokantaan ja suorittaa onnistuneesti materiaalin näyttösivulla.

Ratkaisu JavaScriptin käyttöönoton ongelmaan on yhdistää HTML Purifier -suodatinkirjasto. Mukautettu versio Purifier for Kohana 3.1 voidaan ladata GitHubista.

Selitän prosessin HTML-yhteydet Kohana 3.1:n puhdistaja:

  • GitHubista ladattu arkisto on purettava kansioon kohana\www\modules\htmlpurifier\
  • Lataa osoitteesta. HTML Purifier -sivustolta kirjaston uusin versio ja kopioi sen sisältö kansioon kohana\www\modules\htmlpurifier\vendor\htmlpurifier\
  • Lisää ohjeet uuden Purifier-moduulin liittämiseksi bootstrap.php tiedostoon: etsi koodi "orm" => MODPATH."orm", ja lisää heti sen alle rivi "htmlpurifier" => MODPATH."htmlpurifier".

Nyt voimme käyttää menetelmää Turvallisuus::xss_clean($content) tyhjentääksesi muuttujan sisällön $sisältöä JavaScriptistä. Tämä menetelmä käytetään suoraan materiaalimallin luettelossa 3 (katso alla).

Listaus 2. Ohjainkoodi, joka käsittelee materiaalin tallentamisen tietokantaan

If(isset($_POST["materialsavebtn"])) ( $categoryId = Arr::get($_POST, "categoryId", ""); $content = Arr::get($_POST, "sisältö", "" ); $material = ORM::factory("material");

Kuten riviltä 7 näkyy, materiaalimallia (jonka loimme) täytyy täydentää addMaterial()-metodilla, joka tallentaa materiaalin suoraan tietokantaan. AddMaterial()-menetelmän koodi näkyy luettelossa 3.

Listaus 3. Materiaalin pysyvyysmenetelmä, joka laajentaa materiaalimallin ominaisuuksia

Julkinen funktio addMaterial($categoryId, $content) ( $this->category_id = $categoryId; $this->content = Security::xss_clean($content); $this->tave(); )

Katso uusi menetelmä rivillä 4? Tämä on täsmälleen sama suoja JavaScriptin lisäämistä sivuston sisältöön vastaan. Nyt kaikki ...-tunnisteisiin kirjoitetut koodit poistetaan.

On aika näyttää hyvin kätevä tapa materiaalitaulukon ctime- ja mtime-kenttien täyttäminen (kenttiin tallennetaan vastaavasti materiaalin luomis- ja muokkausaika).

Riittää, kun kirjoitat kaksi riviä Materiaalimallin ilmoituksen alkuun:

Suojattu $_created_column = array("sarake" => "ctime", "format" => TOSI); suojattu $_päivitetty_sarake = array("sarake" => "mtime", "muoto" => TOSI);

Kohana lisää automaattisesti tietueen luomis- tai muokkausajan tietokantaan Unix-aikamuodossa.

  • Virheenkorjaus
    • Opastus

    Kaikki tulee laiskuudesta. Sait jonkun toisen erittäin suuren projektin, johon joudut tekemään pieniä muokkauksia, tai kirjoitit käsikirjoituksen, eikä heti ole selvää, mitä muuta siinä on optimoitava. Mitä minun pitäisi tehdä? Koodin lukeminen ja analysointi, jokaisen vaiheen näyttäminen näytöllä tai tiedostossa (var_dump() jne.) ei ole aina tehokasta, koska voit käyttää virheenkorjaustyökaluja, joita nykyään on paljon. Listaan ​​lyhyesti yleisimmät...

    Xdebug Debugger and Profiler Tool on PHP-laajennus. Vaatii asennuksen palvelimelle ja konfiguroinnin. Voi näyttää: toimintokutsupino, muistin varaus. Ominaisuudet: profilointi, koodin peittoanalyysi, suojaus äärettömältä rekursiolta, interaktiivinen komentosarjan virheenkorjaus. Ohjelmisto xdebug-lokien visualisointiin: Webgrind – web-käyttöliittymä Xdebug-profilointiin, kirjoitettu PHP:llä, MacGDBp – Mac OS X -asiakas, jonka avulla voit korjata PHP-sovelluksia Xdebugin avulla. Linux GUI. Vapaa. Integroituu useiden IDE:iden kanssa. cm . Kun otat vaihtoehdon käyttöön php.inissä:

    Html_errors = Päällä
    muotoilee var_dump()-tulosteen ja virheilmoitukset.

    Xhprof on PHP-laajennus Facebookista. Vaatii asennuksen palvelimelle ja konfiguroinnin. Voit kerätä kunkin toiminnon suoritusajan, muistin käytön, latenssin, puheluiden määrän ja paljon muuta. Tämä laajennus on saatavilla PECL-arkistosta. Voit lukea dokumentaatiota täältä [tyts]. Myös . Yksi eduista on, että se ei kuormita järjestelmää liikaa, voit lyödä vetoa taistelusta. Vapaa.

    DBG (PHP Debugger and Profiler) on PHP-laajennus. Vaatii asennuksen palvelimelle ja konfiguroinnin. Voit työskennellä testi- ja/tai tuotantopalvelimella ja korjata komentosarjoja paikallisesti tai etänä IDE:stä tai konsolista. Maksulliset/ilmaiset versiot.

    ZendDebug on PHP-laajennus, joka sisältyy Zend Studioon (maksullinen IDE). Vaatii asennuksen palvelimelle ja konfiguroinnin. Sallii melkein kaiken samoin kuin xdebug, GUI Zend Studio IDE:ssä tai Zend Server. Maksettu. Katsotaanpa sitä tarkemmin alla.

    Memtrack on PHP-laajennus. Voit etsiä muistivuotoja. On kätevää tarkistaa cronin kautta tai daemonina käynnistetyt skriptit. Vapaa. Katso [tyts]

    APD Advanced PHP debugger on PHP-laajennus. Heikko kilpailija xdebugille, mutta siinä on memtrackin ominaisuudet. Ei integroidu hyvin IDE:n kanssa, mutta siinä on konsoliliitäntä (katso [tyts]). Vapaa.

    DTrace + PHP - PHP-laajennus. Matalan tason virheenkorjaus. Katso [tyts]. Ei pidä myöskään unohtaa muiden järjestelmän virheenkorjaajien olemassaoloa, jotka joskus pystyvät näyttämään, missä niin sanotusti "koira on kaivanut". Esimerkiksi
    strace -s 1111
    järjestelmäkutsun komentosarjan analyysi, PID=1111. Myös verkkoanalysaattorit wireshark (Windows), ngrep, tcpdump (Linux) - verkkoliikenteen, protokollien jne. analysointiin.

    FirePHP - luokka kirjoitettu php:llä + laajennus FireFoxille. Voit lähettää virheenkorjausviestejä Firebug-konsoliin soittamalla php-menetelmiä. Kaikki tiedot lähetetään X-FirePHP-Data-otsikoiden kautta, mikä ei häiritse sivujen pääsisältöä. Vapaa. cm.

    php-console - kirjoitettu php:llä + laajennus for Google Chrome. Samanlainen kuin FirePHP, vain Google Chromelle, mutta hieman erilaisella toiminnallisuudella. Vapaa. Katso php-konsoli

    PHP_Debug-luokka, kirjoitettu PHP:llä. Auttaa sisään PHP-virheenkorjaus koodi, näyttää komentosarjan suorituspolun, näyttää kaikki muuttujat, suoritusajan, sisällytetyt tiedostot, suoritetut pyynnöt, tarkkailumuuttujat... Nämä tiedot kerätään skriptin suorittamisen aikana, ja ne näytetään sen valmistuttua ja niitä voidaan käyttää milloin tahansa aika. Vapaa.

    Pinba on reaaliaikainen seuranta- ja tilastopalvelu. cm

    . Vapaa.

    Viankorjausohjelmat nykyaikaisessa CMS/CMF/Frameworkissa. Emme ota niitä huomioon, koska usein ne ovat erityisiä ja suunniteltu tietylle kuorelle, mikä vaikeuttaa sitä mahdollista käyttöä ne ulkopuolelta (IDE) tai käytä niitä ilman merkittäviä muutoksia kehityksessäsi.

    Keräämiseen ja analysointiin pullonkauloja Keskitetty syslog-tallennustekniikka voi joskus olla hyödyllinen sovelluksissasi, katso .

    Palataan ZendDebugiin. Koska käytän pääasiassa Zend Studiota, minusta on kätevintä työskennellä sen kanssa. Sen avulla voit välittömästi ymmärtää komentosarjan edistymisen ja tukee navigointia IDE:n koodissa. Ei tarvitse yhtään kolmannen osapuolen työkaluja, paitsi IDE. Se on todella kätevä, niin sanotusti, asennat sen kerran ja käytät sitä.

    Skriptien virheenkorjaus ja profilointi Zend Studiossa on mahdollista ainakin kahdella tavalla käyttämällä xdebugia tai ZendDebugia. Mutta sivuston profilointi xdebugilla ei toiminut minulle, se sanoo, että tämä ei ole mahdollista - vain virheenkorjaus.

    Paikallisen koodin virheenkorjauksesta kirjoitettiin jo Zend Studio 5.5:n aikoina. Paljon ei ole muuttunut sen jälkeen. Mutta kohtasin ongelman, kun verkkopalvelin ja virheenkorjauskoodi ovat päällä etäpalvelin. Usein tällaiset hiekkalaatikot ovat suljettuja ulkopuolelta, ja vain toiminnan kannalta tarpeelliset portit ovat auki. Mutta jos tällaiseen hiekkalaatikkoon pääsee SSH:n kautta, ZendDebug voidaan silti määrittää häiritsemättä palomuuria suorittamasta toimintoaan.

    Tulevaisuudessa huomaan, että tätä varten sinun on luotava SSH-tunneli. Hieman siitä, miksi SSH-tunnelia tarvitaan tässä tapauksessa.

    Oletusarvoisesti Zend Studio aloittaa etävirheenkorjausistunnon lähettämällä HTTP-pyyntö virheenkorjauspalvelimelle. Tämä pyyntö sisältää parametreja palautusosoite(IP-osoite ja porttinumero), jota ZendDebug (asennettu palvelimelle) käyttää luodessaan uuden yhteyden Zend Studioon virheenkorjaustietojen välittämiseen. Muuten, voit alustaa itse virheenkorjausistunnon sekä IDE:stä että selaimesta asentamalla Zend Studion mukana tulevan komponentin, mikä on varsin kätevää.

    Normaali virheenkorjausistunto tapahtuisi esimerkiksi siinä tapauksessa, että koodi Verkkopalvelin ja IDE sijaitsevat paikallisessa tietokoneessa.

    Mutta usein WEB-palvelin on erotettu IDE-palomureista, reitittimistä, välityspalvelimista jne. Tässä SSH-tunneli on hyödyllinen.

    Tunnelin tapauksessa virheenkorjausistunnon perustamisprosessi koostuu kahdesta päävaiheesta:
    - SSH:n luominen tunneli;
    - Zend Debugger -asetukset liikenteen välittämiseen SSH-tunnelin kautta.

    Kaavio virheenkorjausistunnosta SSH-tunnelin kautta näyttää tältä:


    Säännöllinen virheenkorjausistunto SSH-tunnelin kautta

    Zend Studio avaa oletusarvoisesti portin 10137. Käytämme sitä alla olevissa esimerkeissä. Voit määrittää toisen portin tarvittaessa.

    Voit luoda SSH-tunnelin Linuxissa tai Mac OS X:ssä komentorivillä:
    ssh:127.0.0.1: @esimerkki:

    User@workstation:~> ssh -R 10137:127.0.0.1:10137 user@debugserver user@debugserver salasana: