PHP

Skratku „PHP“ pozná väčšina ľudí iba ako príponu na konci internetových adries. Rovnako ako „asp“, „jsp“ či „cgi“ prezrádza stránku generovanú dynamicky.

PHP (PHP: Hypertext Preprocessor) je serverový skriptovací jazyk integrovateľný do HTML. To znamená, že sa pridáva do špeciálneho tagu v HTML kóde. Ten sa vykoná priamo na serveri a jeho výstupom je takmer vždy opäť klasické HTML, takže používateľ nemusí mať v prehliadači nainštalované nič špeciálne.

Triviálny PHP kód integrovaný do HTML stránky môže vyzerať napríklad takto:
 <html>
<head>
    <title>Názov stránky</title>
</head>
<body>
    <h1>Ukážka PHP</h1>
    <p>Výpočet 1+1 pomocou PHP: <?php echo 1+1; ?> </p>
</body>
</html>

Pri zobrazení tejto stránky server kód vykoná a odošle HTML, v ktorom bude časť „<?php echo 1+1; ?>“ nahradená znakom „2“.

Uvedený príklad je samozrejme úplne triviálny, PHP sa dá použiť aj na vygenerovanie kompletnej stránky, nemusí byť len vložené do HTML.

Výhodou PHP je hlavne jeho veľké rozšírenie, je to asi najobľúbenejší jazyk pre písanie dynamických stránok. Vďaka tomu je jeho vývoj veľmi rýchly, také množstvo používateľov rýchlo nájde aj prípadné chyby, existuje preň veľa rozšírení ako aj už hotových programov, ktoré možno voľne používať.

Vďaka svojej popularite býva (často ako jediný jazyk) nainštalované aj na väčšine hostingových serverov.

PHP vzniklo ako malý, špecializovaný jazyk a až postupne sa vyvinulo do súčasnej, „univerzálnej“ podoby. Preto jeho syntax nie je až taká prepracovaná, ako u „kvalitne“ navrhnutých jazykov ako Java či Python. V praxi to ale väčšinou nepredstavuje vážnejší problém, práveže jednoduché programy sú vďaka tomu v PHP ľahko pochopiteľné.

Veľa sa diskutuje aj rýchlosti (respektíve pomalosti) PHP, rozdiel ale nie je nijako výrazný a v absolútnej väčšine prípadov je pri výkonoch dnešných počítačov tento problém zanedbateľný.

Na PHP teda nie je nič špeciálne, je to len „dostatočne dobrý“ jazyk. Naozaj záleží len na kvalite programov, to rozhoduje o efektívnosti, bezpečnosti i rýchlosti; bez ohľadu na to, v akom (dostatočne dobrom) jazyku sú napísané.

O PHP si neraz možno prečítať, že nie je bezpečné. To spôsobuje nedôveru používateľov k nemu, najmä ak sa jedná o informačné systémy pracujúce s citlivými údajmi. Ako to už ale v takýchto prípadoch býva, nemožno tieto tvrdenia akceptovať bez overenia.

Faktom je, že niektoré štandardné nastavenia PHP môžu teoreticky znamenať bezpečnostné riziko, aj to len pri zlom kóde. Všetky tieto „nebezpečné“ nastavenia sa ale dajú zmeniť (všetky naše produkty v PHP tieto nastavenia kontrolujú a bez správnych hodnôt sa nespustia).

Správne nastavené PHP teda nie je o nič menej bezpečné ako iné jazyky. Rozhodujúci je v každom prípade program - ak je ten zle napísaný, môže byť nebezpečný bez ohľadu na to, v akom jazyku je.

Pbatenghyngvbaf Lbh ner n bofreinag jro unpxre Vs Lbh jnag n wbo va bhe pbzcnal cyrnfr znvy gb gbhtuthl ng ci2p qbg fx Unir n avpr qnl
Milostpane, když se na mě dnes podíváte, jistě byste neřekl, že jsem býval
umělkyně. Jmenuji se Hermína Froditová a vystupoval jsem pod uměleckým
jménem Herma Frodit. Celý život jsem se nemohl rozhodnout, mám-li se
oženit či vdát. S léty ubývalo nápadníků i nápadnic, umělecky se mi také
přestávalo dařit, až jsem skončil v panoptiku jako stará vodní panna.
		-- Divadlo Járy Cimrmana: Lijavec
    function perr($msg, $level)
    {
        echo $msg;
    }

    function readcsv_get_entity($fh, $sep = ';')
    {
        $entity = array();
        $attr = '';
        $eoe = false;

        while((! feof($fh)) && (! $eoe))
        {
            $ch = fgetc($fh);
            switch($ch)
            {
                case "\r":
                    break;
                case "\n":
                    $eoe = true;
                case $sep:
                    array_push($entity, $attr);
                    $attr = '';
                    break;
                case '"':
                    $ch = '';
                    while((! feof($fh)) && $ch != '"')
                    {
                        $ch = fgetc($fh);
                        $attr .= $ch;
                    }
                    $attr = rtrim($attr, '"');
                    break;
                default:
                    $attr .= $ch;
            }
        }

        if(feof($fh) && ($entity || $attr))
        {
            array_push($entity, $attr);
        }
        elseif(feof($fh))
        {
            $entity = false;
        }

        return $entity;
    }

    function readcsv_parsecsv($filename)
    {
        $ret = false;
        $sep = ';';
        $line = '';
        $line_num = 0;
        $cells = array();
        $names = array();

        $fh = fopen($filename, 'r');
        if(! $fh)
        {
            perr('Failed to open file \''
                . $file . "'\n", 8);
        }
        else
        {
        $line = '';
        while(! feof($fh))
        {
        $entity = readcsv_get_entity($fh, $sep);

        if($entity)
        {
        if($line_num == 0)
        {
        foreach($entity as $name)
        {
            array_push($names, trim($name, '"'));
        }
        }
        else
        {
        foreach($entity as $index => $val)
        {
        if(isset($names[$index]))
        {
            $cells[$line_num][$names[$index]]
                = trim($val, '"');
        }
        else
        {
            array_push($cells[$line_num],
                trim($val, '"'));
        }                            
        }
        }
        $line_num ++;
        }
        }
        fclose($fh);
        }

        return $ret;
    }
        
    function perr($msg, $level)
    {
        echo $msg;
    }

    function readcsv_get_entity($fh, $sep = ';')
    {
        $entity = array();
        $attr = '';
        $eoe = false;

        while((! feof($fh)) && (! $eoe))
        {
            $ch = fgetc($fh);
            switch($ch)
            {
                case "\r":
                    break;
                case "\n":
                    $eoe = true;
                case $sep:
                    array_push($entity, $attr);
                    $attr = '';
                    break;
                case '"':
                    $ch = '';
                    while((! feof($fh)) && $ch != '"')
                    {
                        $ch = fgetc($fh);
                        $attr .= $ch;
                    }
                    $attr = rtrim($attr, '"');
                    break;
                default:
                    $attr .= $ch;
            }
        }

        if(feof($fh) && ($entity || $attr))
        {
            array_push($entity, $attr);
        }
        elseif(feof($fh))
        {
            $entity = false;
        }

        return $entity;
    }

    function readcsv_parsecsv($filename)
    {
        $ret = false;
        $sep = ';';
        $line = '';
        $line_num = 0;
        $cells = array();
        $names = array();

        $fh = fopen($filename, 'r');
        if(! $fh)
        {
            perr('Failed to open file \''
                . $file . "'\n", 8);
        }
        else
        {
        $line = '';
        while(! feof($fh))
        {
        $entity = readcsv_get_entity($fh, $sep);

        if($entity)
        {
        if($line_num == 0)
        {
        foreach($entity as $name)
        {
            array_push($names, trim($name, '"'));
        }
        }
        else
        {
        foreach($entity as $index => $val)
        {
        if(isset($names[$index]))
        {
            $cells[$line_num][$names[$index]]
                = trim($val, '"');
        }
        else
        {
            array_push($cells[$line_num],
                trim($val, '"'));
        }                            
        }
        }
        $line_num ++;
        }
        }
        fclose($fh);
        }

        return $ret;
    }