Úvod do PHP
PHP je jednoduchý programovací jazyk, sloužící k tvorbě přenositelných internetových aplikací, které se spouští na straně serveru. Jeho výhodou tedy je, že ho lze použít na jakékoliv architektuře, pro kterou existuje interpretr.
Příkazy jazyka PHP se vkládají buď přímo do souborů HTML nebo se používají pro psaní celých programů. Je však nutno u těchto PHP programů (i u PHP příkazů vložených do souborů HTML) použít koncovku, příslušnou PHP skriptu. To závisí na nastavení web serveru, který stránky zpracovává a obvykle zavolá PHP interpretr na soubory s koncovkou php, php3 nebo phtml. Přesné nastavení Vašeho serveru zjistíte u Vašeho správce serveru.
V tomto textu naleznete popis možností jazyka PHP, datové typy a popis základních funkcí. Pro obšírnější popis doporučujeme oficiální stránku projektu PHP, její českou verzi a stránku Jiřího Koska.
Obsah- Ukázkový příklad pro začátek
- Popis základů jazyka PHP
- Popis základních funkcí jazyku PHP
- Příkazy pro výpis informací na obrazovku
- Příkazy pro spolupráci s databází MySQL
- Funkce pro práci s datem a časem
- Funkce pro odesílání e-mailů
- Funkce pro práci s poli
- Funkce pro práci s HTTP
- Funkce pro práci s regulárními výrazy
- Základní funkce pro práci s řetězci
- Funkce pro práci se soubory
- Konfigurace a informace o PHP
- Matematické funkce
- Síťové funkce
- Konstanty
- Proměnné
- Funkce pro práci s proměnnými
V následujícím příkladě si ukážeme vkládání PHP příkazů přímo do souboru HTML. To je vhodné využít například v případě, že máte udělaný grafický design stránek a vkládáte do nich pouze dynamicky generované články.
<HEAD>
<TITLE>První příklad v PHP</TITLE>
</HEAD>
<BODY>
<STRONG>Náš první skript</STRONG>
<?
/*
Toto je nas prvni PHP skript,
urceny pro vypis cisel
*/
for ($i=10; $i>=0; $i--) {
// vypsani cisel, kazde na jeden radek
echo "$i<br>n";
}
?>
</BODY>
</HTML>
Tento jednoduchý příklad nám ukazuje, jak se kód PHP odděluje od HTML kódu. V tomto případě jsou použity oddělovače <? a ?>. Lze však použít také <?php a ?> nebo (pokud je nastaven interpretr PHP na tuto možnost) použít oddělovače jako v ASP (tedy <% a %>).
Dále je zde vidět použití poznámek, které využívají C/C++ syntaxe, doporučují se buď na jeden řádek vhodné // nebo párové /* a */.
Datové typyPHP podporuje běžné datové typy známé z jiných programovacích jazyků. Jsou to:
- celé číslo (integer)
- reálné číslo (floating point)
- řetězec (string)
- pole (array)
Práce s nimi je podobná jako v jiných jazycích. Avšak s tím hlavním rozdílem, že je programátor nemusí udávat a jsou určeny automaticky při provádění skriptu. Výhodou je automatické převádění mezi jednotlivými typy. Lze tedy bez problémů sčítat čísla například v řetězcích.
Velmi jednoduše se také pracuje s polem, které může být jednorozměrné nebo vícerozměrné, skalární, asociativní a nebo kombinované. Nejjednodušším vytvořením pole je použití "závorkové" syntaxe. Dále lze pole vytvořit pomocí funkce Array(). V následujícím příkladu si ukážeme některé z možností:
// jednorozmerne pole, prvni index je 0
$jednorozmerne[0]="nazdarek";
// dalsi je index 1
$jednorozmerne[1]="ahoj";
// tento prikaz prida do pole retezec s indexem 2
$jednorozmerne[]="dobry den";
// a retezec s indexem 3
$jednorozmerne[]="nashledanou";
// vypis pole $jednorozmerne:
for ($i=0; $i<count($jednorozmerne); $i++) {
echo "$jednorozmerne[$i]<br>n";
}
$jinepole["Z"]="posledni pismeno abecedy";
echo $jinepole["Z"]."<br>n";
?>
Proměnné se skládají ze znaku $ a indentifikátoru, který se může skládat z libovolného počtu písmen, čísel, podtržítek a ASCII znaků s kódy od 127 do 255. Identifikátory musí začínat buď písmenem nebo podtržítkem a je potřeba si uvědomit, že PHP interpretr rozlišuje malá a velká písmena (ted proměnná $Promenna je jiná proměnná než například $PrOmEnNa).
Konstanty se mohou definovat pomocí příkazu define(). Konstanty nelze po jejich definování změnit ani zrušit.
OperátoryZde naleznete seznam operátorů a u některých významných i ukázky jejich použití.
- aritmetické operátory - plus (+) mínus (-), krát (*), děleno (/), modulo (% - udává zbytek po celočíselném dělení)
- operátory přiřazení - například přiřazení (=), přičtení hodnoty k proměnné (+=) nebo spojení dvou výrazů (.= - výhodné pro řetězce)
- bitové operátory - porovnání dvou hodnot bit po bitu a bitové posuny (operátory and (&), or (|), xor (^), not (~) a posuny vlevo (<<) a vpravo (>>).
- operátory porovnání - porovnání dvou hodnot (jsou shodné (==), jsou shodné a mají stejný datový typ (===), nejsou shodné (!= nebo <>), menší než (<), větší než (>), menší nebo shodný (<=), větší nebo shodný (>=) a ternární operátor ?.
- operátor pro kontrolu chybových hlášení @
- operátor pro spouštění příkazů shellu '
- operátory inkrementace a dekrementace se používají, pokud potřebujete přičíst/odečíst jedničku od proměnné. Lze vejdříve provést operace a pak vrátit novou hodnotu (++$a nebo --$a) nebo nejdříve vrátit hodnotu a pak teprve provést operaci ($a++ nebo $a--)
- logické operátory jsou and (and nebo &&, or (or nebo ||), xor a not (!).
- operátory pro práci s řetězci jsou spojení řetězců (.) a přiřazovací operátor .=.
Tato řídící struktura slouží pro rozdělení běhu programu na více různých akcí. Je výhodná pro menší počet podmínek. Následuje jednoduchý ukázkový příklad:
echo "a je vetsi nez b";
} elseif ($a == $b) {
echo "a je shodne s b";
} else {
echo "a je mensi nez b";
}
Tato řídící struktura má velmi podobnou funkci, také větví program do více akcí. Rozdílem je, že příkaz switch porovnává pouze jednu proměnnou a podle výsledku pak pomocí příkazu case pak program větví. Pokud výraz žádné podmínce nevyhovuje, použije se sekce default. K ukončení každé větve slouží příkaz break, bez něj by se projížděly všechny větve. Pro lepší názornost následuje ukázkový příklad, který porovnáná kódy zapsané pomocí příkazu switch a příkazu if:
switch ($i) { case 0: echo "i se rovna 0"; break; case 1: echo "i se rovna 1"; break; case 2: echo "i se rovna 2"; break; } |
if ($i == 0) { echo "i se rovna 0"; } if ($i == 1) { echo "i se rovna 1"; } if ($i == 2) { echo "i se rovna 2"; } |
while je velmi jednoduchý cyklus, který vykonává příkazy, dokud je podmínka pravdivá. Tato podmínka se vyhodnocuje na začátku příkazu, proto když není pravdivá, příkazy se neprovedou. Jednoduchý příklad vypisuje čísla 1 až 10.
while ($i <= 10) {
echo $i++; // vytiskne obsah promenne i
// a potom ji zvetsi o 1
}
Podmínka do..while je podobná předchozímu příkazu, ale podmínka je vyhodnocována až na konci. Vždy tedy cyklus proběhne alespoň jednou. Ukázkový příklad ukazuje, že opravdu proběhne pouze jednou (proměnná i se rovná nule a to v nevyhoví podmínce $i > 0.
do {
echo $i;
} while ($i > 0);
Příkaz for je mocný nástroj, pro tvorbu cyklů. Obsahuje inicializační část, která se provede pouze jednou a nastaví potřebné proměnné, dále část podmínkovou, která se provádí na začátku každého cyklu a příkazy se neprovedou, pokud je podmínka neplatná. Poslední částí je část iterační, která mnění pomocnou proměnnou. Vše bude zřejmé z následujícího příkladu:
echo $i;
}
PHP umožňuje samozřejmě také tvorbu uživatelsky definovaných funkcí. Jejich tvorba je podobá jiným programovacím jazykům. V příkladu si ukážeme funkci, která vrací true, pokud je zadané rodné číslo v pořádku.
if (StrChr($rc/11, ".") { $retval = FALSE; }
else { $retval = TRUE; }
return $retval;
}
echo slouží pro výpis jednoho nebo více výrazů.
printprint slouží opět pro výpis řetězce. Navíc vrací návratovou hodnotu true, pokud se výpis podařil, nebo false, pokud ne.
U těchto dvou funkcí (nebo spíše konstrukcí jazyka) a vůbec u řetězců je potřeba dávat pozor na znaky, jako jsou uvozovky ("), jednoduché uvozovky (') a zpětné lomítko (). Pokud chcete je v řetězci vytisknout, musíte z nich vytvoři tzv. escape výraz (pro uvozovku to je "), což znamená před každý z techto znaků přidat zpětné lomítko.
Příkazy pro spolupráci s databází MySQLÚvod do MySQL
>>Úvod do MySQL<<
mysql_connect(jmeno_serveru, pristupove_jmeno, pristupove_heslo)
Tato funkce slouží pro připojení k MySQL. Funkce vrací odkaz na příslušný MySQL server a je důležité si tuto hodnotu uložit, protože se pak používá u většiny příkazů pro tento odkaz je potřeba pro ukončení spojení s MySQL serverem pomocí příkazu mysql_close.
mysql_close(odkaz_na_spojeni)Slouží k uzavření určitého spojení s MySQL serverem. Pokud není zadán odkaz_na_spojeni, pak se uzavře posledně otevřené spojení.
mysql_error() a mysql_errno()Tyto funkce se mohou zapisovat za každý příkaz, který spolupracuje s MySQL databází. První z nich (mysql_error) vrací řetězec s chybovým hlášením a mysql_errno vrací číselné označení nastalé chyby.
mysql_select_db(jmeno_databaze, odkaz_na_spojeni)Vybere a nastaví jako aktivní určitou databázi, nad touto databází se pak budou provádět dotazy. Pokud není zadán parametr odkaz_na_spojeni, myslí se tím posledně otevřené spojení s MySQL serverem.
mysql_query(dotaz, odkaz_na_spojeni)Příkaz mysql_query provede SQL příkaz nad databází, která je určena spojením odkaz_na_spojeni. Příkaz vrací odkaz, který se pak například používá pro získávání jednotlivých řádek, odpovídajících SQL příkazu.
mysql_fetch_row(odkaz)Příkaz php_fetch_row vezme řádek, vyhovující dotazu (na který se odkazujeme parametrem odkaz. Výsledek je uložen v očíslovaném poli, které obsahuje tolik položek, kolik má tabulka sloupců a jednotlivé položky jsou číslovány od 0.
mysql_fetch_array(odkaz)Příkaz mysql_fetch_array je podobný předchozímu příkazu, ale řádek je vracen v asociativním poli, kdy klíčem je jméno sloupce a hodnotou jeho obsah.
mysql_num_rows(odkaz)Příkaz mysql_num_rows vypisuje počet řádek, které vyhověli SQL dotazu. Tento příkaz však slouží pouze pro SQL dotaz SELECT.
mysql_affected_rows(odkaz)mysql_affected_rows se chová obdobně jako předchozí příkaz, ale s tím rozdílem, že slouží pro SQL příkazy INSERT, UPDATE nebo DELETE.
Jednoduchý příklad přístupu do MySQL databázePro správný běh se předpokládá databáze test, ve které je tabulka tabulka_test a v ní sloupce cislo a komentar. Je zde použita většina popsaných příkazů.
$db_spojeni = mysql_connect("localhost", "pristupove_jmeno", "pristupove_heslo") or die(mysql_error());
$db_vysledek = mysql_select_db("test", $db_spojeni) or die(mysql_error());
$vysledek_dotazu = MySQL_query("SELECT * FROM tabulka_test", $spojeni)
or die(mysql_error());
while ($zaznam = MySQL_Fetch_Array($vysledek_dotazu)) {
echo "Záznam č. ". $zaznam["cislo"] ." obsahuje ". $zaznam["komentar"] ."<br>"; }
$pocet_radek = MySQL_num_rows($vysledek_dotazu);
echo "Tabulka <b>tabulka_test</b> obsahuje ". $pocet_radek ." radek <br<";
$db_vysledek = MySQL_close($db_spojeni);
?>
Funkce pro práci s datem a časem time
Funkce time vrací čas ve formátu timestamp. Je to počet sekund od dne 1.1.1970 a od 00:00. Toto datum se bere jako vznik operačního systému UNIX.
mktime(hodiny, minuty, sekundy, mesic, den, rok)Funkce mktime vytvoří ze zadaných časových hodnot timestamp. To je pak použitelné pro následující příkaz.
date(format, timestamp)Příkaz date slouží pro tisk formátovaného data, podle formátovacího řetězce. Pokud je zadán timestamp, datum se počítá z něj, jinak se vezme aktuální datum.
Formátovací řetězec může použít tyto formátovací znaky:
- a - tiskne "am" nebo "pm"
- A - tiskne "AM" nebo "PM"
- B - internetový čas firmy Swatch
- d - den v měsíci, 2 číslice i s nulami, tj. od "01" do "31"
- D - den v měsíci textově, 3 znaky
- F - jméno měsíce
- g - hodiny ve 12ti hodinovém formátu bez nul na začátku, tj. od "1" do "12"
- G - hodiny ve 24 hodinovém formátu bez nul na začátku, tj. od "0" do "23"
- h - hodiny, 12ti hodinový formát, tj. od "01" do "12"
- H - hodiny, 24 hodinový formát, tj. od "00" do "23"
- i - minuty, od "00" do "59"
- j - den v měsíci bez nul, od "1" do "31"
- l - dlouhý název dne měsíce
- m - měsíc, od "01" do "12"
- M - název měsíce, krátky na 3 znaky
- n - měsíc bez nul na začátku, od "1" do "12"
- s - sekundy, od "00" do "59"
- T - jméno časové zóny nastavené na počítači
- Y - rok, 4 číslice
- y - rok, 2 číslice
$dnes = mktime(0,0,0,date("m") ,date("d")+1,date("Y"));
$minuly_mesic = mktime(0,0,0,date("m")-1,date("d"), date("Y"));
$pristi_rok = mktime(0,0,0,date("m"), date("d"), date("Y")+1);
echo "Dnes je ". date("j.n.Y", $dnes) ."<br>n";
echo "Pred mesicem bylo ". date("j.n.Y", $minuly_mesic) ."<br>n";
echo "Pristi rok bude ". date("j.n.Y", $pristi_rok) ."<br>n";
?>
Funkce slouží pro odesílání e-mailových zpráv na určitou adresu. Základní syntaxe je Mail($komu, $predmet, $zprava, $hlavicky). Pro správnou funkci je třeba mít nastaven SMTP server. Následující příklad ukáže, jak odeslat jednoduchou zprávu v češtině:
// funkce pro odesilani mailu v cestine
function cz_mail($komu, $predmet, $zprava, $hlavicky) {
$zprava = StrTr($zprava,"x8Ax8Dx8Ex9Ax9Dx9E","xA9xABxAExB9xBBxBE");
$zprava = Base64_Encode($zprava);
$hlavicky .= "nMIME-Version: 1.0n".
"Content-Type: text/plain; charset="iso-8859-2"n".
"Content-Transfer-Encoding: base64n";
mail($komu, $predmet, $zprava, $hlavicky);
}
$komu = "nekdo@ecn.cz";
$predmet = "Důležitá zpráva";
$zprava = "Toto je velice důležitá zprávan".
"určitě si ji přečtěte";
$hlavicky = "From: odesilate@nekde.cz";
cz_mail($komu, $predmet, $zprava, $hlavicky);
?>
Pro vytvoření pole slouží funkce Array, kterou jsme si popsali již v popisu polí. Nad takto vytvořeným polem se pak lze pohybovat, vypisovat nebo upravovat jednotlivé položky pomocí následujících funkcí:
count() a SizeOf()Tyto funkce vrací počet prvků, uložených v proměnné, která většinou bývá typu pole.
List()Tato funkce slouží k nastavení proměnných podle hodnot, obsažených v poli. Její výhodou je, že může mít libovolný počet parametrů. Lze tedy načíst v jednom příkazu do čtyř proměnných pole se čtyřmi prvky. Dále lze vynechávat některé proměnné a tím i vynechávat některé prvky v poli.
Each()Funkce Each() slouží k procházení pole. Vzhledem k tomu, že v poli existuje ukazatel na aktuální položku, lze tuto funkci jednoduše použít pro porázení. Tato funkce vrací aktuální hodnotu indexu a obsah položky a ukazatel přesune na další pooložku.
Tuto funkci lze výhodně použít s funkcí předchozí (List), například při načítání polí, které byly poslány metodou post.
reset($HTTP_POST_VARS);
while (list($key, $val) = each($HTTP_POST_VARS)) {
echo "$key => $val<br>";
}
?>
První dvě funkce (Current, Pos) vrací hodnotu aktuálního prvku pole. Další slouží pro přechod na následující (Next), předchozí (Prev), poslední (End) a první položku v poli (Reset). Poslední funkce Key zjistí index prvku pole, na který je nastaven ukazatel.
Sort()Funkce Sort je základní funkcí pro třídění prvků v poli od nejmenšího pro největší. Dále existuje spousta dalších funkcí, pro třídění se speciálními požadavky.
Funkce pro práci s HTTP Header()Header slouží pro zaslání určité HTTP hlavičky klientovi v odpovědi. Tyto hlavičky musí být odeslány před tím, než skript vygeneruje nějaký HTML kód. Vzhledem k tomu, že popis HTTP hlaviček je nad rámec tohoto dokumentu, doporučujeme k prostudování jejich specifikaci (v angličtině). Zde si uvedeme dvě nejzákladnější a pravděpodobně nejpoužívanější použití:
Automatické přesměrování na jinou stránku provedete pomocí těchto příkazů:
header("Location: http://www.ecn.cz/jina_stranka");
exit;
?>
Pro vygenerování stránky 404 (stránka nenalezena) lze s úspěchem použít následující příkaz:
header("HTTP/1.0 404 Not found");
?>
Funkce slouží pro uložení cookie v klientovi. Formát této funkce je:
Platnost cookie se zadává v sekundách jako timestamp (počet sekund od 1.1.1970). Parametry $cesta a $domena omezují, pro které domény a cesty v nich je cookie platná. Parametr $zabezpeceni funguje pouze pokud se komunikace provádí přes šifrovaný kanál SSL.
// ulozeni cookie username s dobou platnosti 1 hodina
SetCookie("username", "ecnuser", Time()+3600);
?>
Pomocí těchto funkcí zjišťujeme, zda řetězec vyhovuje určitému regulárnímu výrazu. První z funkcí dále bere v potaz velikosti písmen, druhá velikosti písmen nerozlišuje.
Funkce má syntaxi EReg($vyraz, $retezec, $shody), kde vyraz je regulární výraz, který je vyhledáván v řetězci retezec. Pokud je použit parametr shody, jsou v něm uloženy jednotlivé vyhovující podvýrazy. V tomto poli je pod indexem 0 uložena část řetězce, která vyhovuje celému regulárnímu výrazu.
Následující příklad převede datum z formátu YYYY-MM-DD na formát DD.MM.YYYY a vytiskne ho:
if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $datum, $casti)) {
echo "Datum: $casti[3].$casti[2].$casti[1]";
} else {
echo "Spatny format data: $datum";
}
?>
Funkce slouží pro nahrazení řetězce podle regulárního výrazu. Syntaxe je EReg_Replace($vyraz, $nahrada, $retezec), kde $vyraz vyhledá v řetězci $retezec část, která je pak nahrazena řetězcem $nahrada.
Druhá funkce pracuje shodně, ale nebere v potaz rozdílné velikosti písmen.
$retezec = "Toto je test";
$retezec2 = ereg_replace(" je", " byl", $retezec);
echo $retezec ."==>". $retezec2;
?>
Funkce Split rozdělí řetězec podle zadaného výrazu na části a uloží je do pole. Lze jednoduše použít například k rozdělení věty na slova:
$veta = "Toto je pokusna veta";
$slova = Split("[^[:alnum:]]+", $veta);
// v promenne $slova jsou jednotliva slova ze $veta
// oddelene vsim, co neni pismeno nebo cislo
?>
Tyto funkce odstraňují mezery ze začátku řetězce (LTrim), z konce řetězce (RTrim) a ze začátku i konce řetězce (Trim). Funkce Chop odmazává mezery a tabulátory z konce řetězce.
Implode(), Join() a Explode()Funkce Implode($spojka, $pole) spojí prvky v poli $pole pomocí zadaného řetězce $spojka. Funkce Join je shodná s touto funkcí.
Funkce Explode funguje podobně jako funkce Split a pokud nepoužíváte na rozdělení řetězce regulární výrazy, je tato funkce mnohem rychlejší.
NL2BR()Užitečná funkce, která převádí konce řádků (speciální znak n) na <BR>.
StrCmp()Funkce StrCmp($retezec1, $retezec2) porovnává řetězce $retezec1 a $retezec2 a vrací zápornou hodnotu, pokud je $retezec1 menší než $retezec2. Kladnou hodnotu vrací, pokud je $retezec1 větší než $retezec2. Při jejich shodě vrací 0. Porovnání je citlivé na velikost písmen.
StrChr()Funkce StrChr($retezec, $znak) hledá první výskyt znaku $znak v řetězci $retezec a vrací jeho obsah až od tohoto znaku včetně.
echo StrChr("abcdefg", "c"); // vytiskne cdefg
?>
Funkce vrací délku řetězce, který je zadán jako parametr.
StrPos()Funkce StrPos($retezec, $hledany_text) vrací pozici řetězce $hledany_text v řetězci $retezec. Funkce vrací hodnotu FALSE, pokud nebyl výskyt nalezen. Je nutno zdůraznit, že pokud je znak nalezen na prvním místě v řetězci, vrací funkce hodnotu 0, která je však vyhodnocena jako FALSE. Následující část kódu ukazuje, jak docílit správných výsledků.
// pro PHP 4.0b3 a novejsi:
$pozice = strpos("hledany text", $retezec);
if ($pozice === false) { // !!! tri rovnitka !!!
// nenalezeno
}
// verze starsi nez 4.0b3 (i verze 3.x)
$pozice = strpos("hledany text", $retezec);
if (is_string($pozice) && !$pozice) {
// nenalezeno
}
?>
Funkce StrStr($retezec, $hledany_text) hledá první výskyt textu $hledany_text v řetězci $retezec a vrací jeho obsah až od tohoto výskytu včetně. Funkce vrací FALSE, pokud řetězec hledaný text neobsahuje.
$domena = strstr($email, "@");
echo $domena; // vytiskne ecn.cz
Funkce SubStr($retezec, $zacatek, $delka) vrací část zadaného řetězce $retezec, která je určena pozicí prvního znaku ($zacatek) a počtem znaků ($delka). Pokud je pozice záporné číslo, je pozice počítána od konce řetězce. Pokud délku uvedeme jako záporné číslo, vracený řetězec bude končit o délku znaků před koncem řetězce.
echo substr("abcdef", 1, 3); // vypise "bcd"
echo substr("abcdef", -1); // vypise "f"
echo substr("abcdef", -2); // vypise "ef"
echo substr("abcdef", -3, 1); // vypise "d"
echo substr("abcdef", 1, -1); // vypise "bcde"
Pro předávání parametrů pomocí URL je třeba veškeré nealfanumerické znaky kromě znaků '.', '-' a '_' zakódovat, aby se správně přenesly. Pomocí funkce URLEncode jsou všechny tyto znaky převedeny na šestnáctková čísla, začínající znakem procento ('%') a mezera je nahrazena znakem plus ('+'). Funkce URLDecode() slouží ke zpětnému rozkódování.
Funkce File($jmeno_souboru) je užitečnou funkcí, která načte obsah celého souboru do pole, kde řádky v souboru pak jsou jednotlivé položky pole. Funkci lze použít i pro přenos protokolem HTTP/1.0 (pokud $jmeno_souboru začíná na http://) nebo pro přenos souboru přes protokol FTP (pokud $jmeno_souboru začíná na ftp://).
$obsah = file("http://www.ecn.cz");
while (list($cislo_radky, $radka) = each($obsah)) {
echo "Radek ". $cislo_radky .": " . $radka . "<br>n";
}
?>
Funkce zjišťuje, zda zadaný soubor existuje. Pokud ano, vrací TRUE, jinak vrací FALSE. Is_Dir(), Is_File(), Is_Executable(), Is_Readable(), Is_Writeable()
Jak již je patrné z názvů, tyto funkce slouží ke zjištění, zda zadaný parametr je adresář (Is_Dir), soubor (Is_File), spustitelný soubor (Is_Executable) a zda lze soubor číst (Is_Readable) nebo do něj zapisovat (Is_Writeable).
FileSize()Funkce zjistí velikost souboru, jehož jméno je zadané jako parametr.
BaseName(), DirName()Funkce BaseName($cesta) zjistí z úplně zadané cesty $cesta pouze jméno souboru. Naopak funkce DirName($cesta) vypíše z úplně zadané cesty pouze adresářovou část.
$cesta = "/var/home/pavel/www/pokus.php";
echo basename($cesta); // vypise 'pokus.php'
echo dirname($cesta); // vypise '/var/home/pavel/www'
?>
Tato funkce slouží pro detailní výpis informací o PHP a možných rozšířeních v něm použitých. Je vhodné použít pro zjištění, zda na Vašem serveru PHP vůbec funguje
PHPVersionFunkce vrací řetězec, který obsahuje číslo verze interpreteru PHP.
GetLastModFunkce vrací timestamp poslední změny PHP skriptu. Pro vypsání této změny na Vašich stránkách lze s výhodou využít tento příklad, který se přidá například na konec každé Vaší stránky:
echo "Datum posledni modifikace: ". date("d.m.Y", GetLastMod());
?>
Funkce Die($hlaska)slouží pro ukončení běhu skriptu a vypíše hlášení $hlaska. Je to vhodné například pro ukončení skriptu při nějaké zásadní chybě.
Matematické funkceInterpreter PHP má v sobě zabudovány matematické funkce, se kterými je možné počítat běžné výpočty. Jsou to klasické fukce jako Abs(), Log(), Exp(), Pi(), dále výpočet mocnin a druhé odmocniny (Pow(), Sqrt()) a funkce goniometrické (Sin(), Cos(), Tan()) a funkce cyklometrické (ASin(), ACos(), ATan()).
Pro zaokrouhlování slouží funkce Ceil() (zaokrouhlení desetinného čísla nahoru), Floor() (zaokrouhlení desetinného čísla dolů) a Round() pro zaokrouhlení desetinného čísla. Pro zjištění minima a maxima ze zadaných hodnot slouží funkce Min() a Max().
Lze zde dále nalézt funkce pro převod mezi různými druhy soustav. Převádět lze z desítkové do binární a naopak (funkce BinDec(), DecBin()), z osmičkové do desítkové a naopak (funkce OctDec(), DecOct()) a z desítkové do šestnáctkové a naopak (funkce DecHex(), HexDec()). Dále lze převádět stupně na radiány a naopak (funkce Rad2Deg() a Deg2Rad()).
Pokud potřebujeme generátor náhodných čísel, musíme ho nejdříve inicializovat pomocí funkce SRand($seed) nodnotou $seed. Tuto hodnotu je vhodné pokaždé volit jinak, lze s výhodou použít například aktuální čas např. pomocí funkce MicroTime(). Náhodnou hodnotu pak vygenerujeme pomocí funkce Rand() a pomocí funkce GetRandMax můžeme zjistit, jakou největší hodnotu může náhodné číslo dosahovat.
Síťové funkce GetHostByAddr(), GetHostByName(), GetHostByNameL()První dvě funkce slouží pro zjištění jména počítače (doménové jméno) z IP adresy a pro zjištění IP adresy z doménového jména. Třetí funkce vrátí všechny IP adresy, příslušící zadanému doménovému jménu.
Konstanty __FILE__Tato konstanta obsahuje jméno souboru, ve kterém je uložen právě zpracovávaný skript
__LINE__Zde je uloženo číslo řádku, na kterém je konstanta použita
M_PIZde je uložena přibližná hodnota Ludolfova čísla (PI)
PHP_OSKonstanta obsahuje jméno operačního systému, na kterém běží interpreter PHP
PHP_VERSIONV konstantě je uloženo číslo verze používaného PHP
ProměnnéV následující tabulce naleznete seznam proměnných, které jsou přístupné prováděnému skriptu a jsou v něm použitelné.
$CONTENT_LENGTH | Obsahuje délku dat, zasílaných skriptu metodou POST |
$CONTENT_TYPE | MIME typ dat zasílaných metodou POST |
$HTTP_COOKIE_VARS | Asociativní pole, obsahující všechny cookies |
$HTTP_GET_VARS | Asociativní pole, obsahující parametry předané metodou GET |
$HTTP_POST_VARS | Asociativní pole, obsahující parametry předané metodou POST |
$PATH_INFO | Cesta ke skriptu, který má být zpracován |
$PATH_TRANSLATED | Skutečná cesta ke skriptu, který má být zpracován |
$PHP_AUTH_PW | Heslo získané pomocí HTTP autentifikace |
$PHP_AUTH_TYPE | Typ HTTP autentifikace, nejčastěji basic |
$PHP_AUTH_USER | Uživatelské jméno, získané při HTTP autentifikaci |
$PHP_SELF | Jméno právě prováděného skriptu |
$QUERY_STRING | Nerozkódovaná data, předaná metodou GET |
$REMOTE_ADDR | IP adresa, ze které přišel požadavek |
$REMOTE_HOST | Doménové jméno počítače, ze kterého přišel požadavek |
$REQUEST_METHOD | Způsob předávání parametrů (POST nebo GET) |
$SCRIPT_FILENAME | Jméno souboru, ve kterém je uložen právě prováděný skript |
$SCRIPT_NAME | Jméno právě prováděného skriptu |
$SERVER_NAME | Adresa serveru (IP, doména nebo alias) |
$SERVER_PORT | Číslo portu, na kterém běží WWW server |
$SERVER_PROTOCOL | Jméno a verze protokolu, kterým přišel požadavek (nejčastěji HTTP/1.0 nebo HTTP/1.1) |
$SERVER_SOFTWARE | Jméno a verze WWW serveru |
Pro zjištění, zda je funkce určitého typu, slouží následující funkce, které vracejí TRUE, pokud je proměnná stejního typu. Tyto funkce jsou: is_array(), is_double, is_float(), is_int(), is_integer, is_long(), is_object(), is_real(), is_string. Pokud byste chtěli přímo jméno datového typu ('string', 'integer', ...), použijte funkci gettype(), která toto jméno vrací jako řetězec. Funkce, která se chová obdobně, ale slouží pro změnu typu datové proměnné, se nazývá settype($promena, $typ) a proměnná $typ obsahuje jméno nového datového typu.
Pro zjištění, zda je proměnná prázdná, slouží funkce Empty(). Pro zjištění, zda je proměnná zinicializována, se používá funkce IsSet(). Pro zrušení proměnné slouží funkce UnSet(). Rozdíl mezi těmito funkcemi bude zřejmý z příkladu.
// zde bude Empty($prom) == true a IsSet($prom) == false
$prom="";
// zde bude Empty($prom) == true a IsSet($prom) == true
$prom="ahoj";
// zde bude Empty($prom) == false a IsSet($prom) == true
unset($prom);
// zde bude Empty($prom) == true a IsSet($prom) == false
?>
Pro převod hodnot slouží funkce DoubleVal() (převod hodnoty na typ double), IntVal() (na typ integer) a StrVal() (na řetězec).