PHP

PHP (Hypertextový Preprocesor, původně Personal Home Page) je multiplatformní skriptovací programovací jazyk, určený především pro programování dynamických internetových stránek (aplikací).

LAMP je často používaná zkratka pro kombinaci operačního systému GNU/Linux, webového serveru Apache, databázového systému MySQL (případně PostgreSQL) a PHP.

Příklad PHP skriptu, který zobrazí slovo Ahoj:

<?php
  echo "Ahoj";
?>

Další informace viz manuálové stránky PHP.

Vývojová prostředí pro PHP

Nabízejí PHP dokumentaci, šablony a zejména usnadňují psaní skriptů (třídy, funkce, procedury).

 

Print

Funkce print stejně tak konstruktor echo slouží pro vypsání obsahu na obrazovku.

Print je o něco málo pomalejší než echo, ale zato vrací hodnotu True nebo False. Způsob použití se dále liší při výpisu proměnné.

<?php
  $text = print "Jak se mate?"; // s echo toto neni mozne
  if($text) {
    echo “Výpis úspěšný:)“;
  }
?>

 Funkce print_r umožňuje navíc i vypsat obsah pole:

<?php
  $pole = array ('a' => 'délka', 'b' => 'šířka', 'c' => array ('x', 'y', 'z'));
  print_r ($pole);
?>

Poslední aktualizace souboru

Zobrazení poslední aktualizace souboru číselně:

<?
  /* aktualni soubor */
  $file = $_SERVER['SCRIPT_FILENAME'];
  /* cas zmeny souboru */
  $update = filemtime($file);
  /* aktualizace ciselne */
  echo "<p>Poslední aktualizace: " .date('d. n. Y – H:i\'s"', $update). "</p>";
?>

Zobrazení poslední aktualizace souboru slovně:

<?php
  /* aktualni cas */
  echo "<p>Nyní je " .date('l d. m. Y H:i\'s"'). ".</p>";
  /* aktualni soubor */
  $file = $_SERVER['SCRIPT_FILENAME'];
  /* cas zmeny souboru */
  $update = filemtime($file);
  /* aktualizace ciselne */
  echo "<p>Poslední aktualizace: " .date('d. n. Y – H:i\'s"', $update). "<br />";
  /* aktualizace slovne */
  $months = array ('leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec');
  $days = array ('pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota', 'neděle');
  echo "Poslední aktualizace: " .$days[date('w', $update) - 1] ." ". date('j', $update). ". " .$months[date('n', $update) - 1] . date(' Y – H:i\'s"', $update). "</p>";
?>

 

Cvičení 8

PřílohaVelikost
php-1.zip1.82 MB
php-2.zip1.94 KB
php-3.zip5.47 KB

Trvalé přesměrování

Trvalé přesměrování URL adresy bez ztráty pozice ve vyhledávačích:

<?php
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://tomas.dankovi.info/");
  header("Connection: close"); // fix IE bug
?> 

 

Chybová hlášení

V případě hledání chyb nebo problémů v PHP skriptu je vhodné zapnout zobrazování chybových hlášení.

Změnu nastavení je možné provést několika způsoby:

  • pomocí souboru .htaccess
    • PHP 4
      <IfModule mod_php4.c>
        php_value error_reporting 2047
        php_flag display_errors 1
      </IfModule>
      
    • PHP 5
      <IfModule mod_php5.c>
        #php_value error_reporting 6143 # PHP 5.2 a méně
        php_value error_reporting 30719 # PHP 5.3 a více
        php_flag display_errors 1
      </IfModule>
      
  • pomocí funkce error_reporting
    • PHP 5
      <?php
        ini_set("display_errors", 1);
        error_reporting(E_ALL);
        $x = 2 / 0;  //chyba deleni nulou
      ?>
  • pomocí souboru .user.ini
  • zápisem chyb do souboru
Úroveň zobrazování chyb
Popis error_reporting() PHP4 PHP5 PHP5.3
Nezobrazovat hlášení (implicitní) 0 0 0 0
Zobrazovat všechna hlášení E_ALL 2047  6143 30719
Zobrazovat pouze chyby a varování E_ERROR | E_WARNING | E_PARSE 7 7 7
Všechna hlášení, kromě notice E_ALL ^ E_NOTICE 2039 6135 30711
Všechna hlášení, kromě deprecated E_ALL ^ E_DEPRECATED - - 22527