Nacházíte se zde: Úvod » Pro zákazníky » Nápověda » PHP skripty

PHP skripty


nahoru

Open_basedir restrikce

Aplikace v jednotlivých subdoménách jsou uzavřeny do svého adresáře open_basedir restrikcí. To znamená, že standardně není možné pracovat se soubory z jiné subdomény na stejné doméně (třeba funkcemi pro includování souborů, pro práci se soubory či obrázky apod.), ale pouze se soubory v prostoru subdomény, ze které je spouštěn příslušný skript.

Restrikci si můžete pro příslušnou (sub)doménu o jednu adresářovou úroveň posunout, díky čemuž bude aplikace moct pracovat se soubory v celém prostoru domény. Nastavení proveďte v klientské sekci ve správě domény v části Webserver » Nastavení PHP.


nahoru

Nahrávání souborů na server pomocí PHP

Soubory nahrané pomocí metody POST jsou uloženy do systémového dočasného adresáře.

Na serverech s PHP 4 není možné přímo přistupovat k souboru (například funkcí copy(), funkcemi pro práci s obrázky apod.) z důvodu restrikce přístupu (viz. open_basedir restrikce) . Proto je nejdříve nutné použít PHP funkci move_uploaded_file(), která soubor přesune z dočasného adresáře do prostoru Vaší domény, kde se souborem již budete moci pracovat. Funkce má dva parametry - jméno nahrávaného souboru v dočasném adresáři a cestu, do které bude soubor uložen.

Na serverech s PHP 5 je přímý přístup do dočasného adresáře možný, nicméně pro získání nahraného souboru doporučujeme i zde používat stejný postup.

Jednoduchý příklad použití funkce move_uploaded_file:

<?
  move_uploaded_file($_FILES["muj_soubor"]["tmp_name"],"./nahrane_soubory/novy_soubor");
?>

Funkce nahraje soubor odeslaný z formulářového pole muj_soubor do adresáře nahrane_soubory a uloží jej jako soubor s názvem novy_soubor. Adresář, do kterého je soubor zapisován, musí mít správně nastaveno právo zápisu a spouštění (viz článek nápovědy Přístupová práva a vlastníci souborů). Pokud budete u nahraného a přesunutého souboru potřebovat následně změnit oprávnění, použijte funkci chmod().

Další informace a příklady naleznete na php.net v nápovědě funkce move_uploaded_file(), související funkce is_uploaded_file() a v kapitole Zpracování uploadu souborů.


nahoru

Odesílání e-mailu z PHP

Pro odesílání e-mailu z PHP je určena funkce mail(). Při jejím využívání je dobré dodržovat tyto jednoduché zásady:

  • používat všechny doporučené hlavičky (viz. příklad) - to je důležité zejména pro správné vracení odpovědí a nedoručitelných zpráv. Není-li uvedena žádná z hlaviček From či Return-Path, bude automaticky doplněna výchozí adresa php@jmenovasidomeny.tld .
  • hlavičky ukončovat znakem LF (čili \n) a nikoliv znaky CRLF (\r\n)

E-mailová adresa uvedená v hlavičce From (tj. Od), musí být na doméně, na níž běží příslušný skript.

Následuje příklad na odeslání textového e-mailu ze skriptu na doméně example.net z adresy moje@example.net na adresu jeho@example.com:

<?
  //definice hlavicek
  $headers = "From: moje@example.net\n";
  $headers .= "MIME-Version: 1.0\n";
  $headers .= "Content-Type: text/plain; charset=iso-8859-2\n";
  $headers .= "Content-Transfer-Encoding: 8bit\n";
  $headers .= "Return-Path: moje@example.net\n";

  //samotne odeslani
  mail('jeho@example.com', 'Predmet zpravy', 'Obsah zpravy', $headers);
?>

Používáte-li v odesílaných zprávách znaky s diakritikou, měl by být text příslusně zakódován (pomocí quoted-printable nebo base64).

Při rozesílání většího množství zpráv dbejte na to, aby odesíláním nebyli omezeni ostatní uživatelé hostingových služeb, a postupujte prosím v souladu s naší politikou prevence SPAMu. Zprávy ideálně posílejte postupně v menších dávkách, rozumné množství je maximálně cca 200 odeslaných zpráv za hodinu (maximum nastavené na serverech sdíleného hostingu je 1 000 zpráv za hodinu na doménu). Na virtuálních a dedikovaných serverech můžeme nastavit dle vybrané služby možnosti rozesílání individuálně. Odesílání můžete automatizovat například vhodným skriptem spouštěným pravidelně v cronu.

Zprávy odesílané z PHP jsou kontrolovány antivirem. Pokud antivir zprávu vyhodnotí jako škodlivou, funkce mail() vrátí hodnotu false. Antivirová kontrola v kombinaci s omezením počtu odeslaných zpráv jsou důležitými nástroji omezujícími zneužití nedostatečně zabezpečených uživatelských aplikací k odesílání nevyžádané pošty (více v hostingové zprávě Bezpečnost práce s webovými aplikacemi).

Jiné způsoby odesílání zpráv z PHP (například přes nějaký externí odesílací SMTP server, či přímým připojením na přijímací SMTP server) nejsou standardně povoleny. Povolit je můžeme na požádání.


nahoru

Zobrazení chybových zpráv

Na produkčních serverech je ve výchozím nastavení vypnuté vypisování chybových hlášení PHP (display_errors). Při fatální chybě ve skriptu proto aplikace vrátí prázdnou (bílou) stránku.

Dbejte prosím na umisťování na server jen aplikací již odladěných pro provoz - tedy aplikací schopných provozu bez chyb. Pokud přesto potřebujete zobrazovat či logovat chyby PHP (typicky dočasně pro účely nalezení a odstranění chyby), změňte si příslušné nastavení PHP v klientské sekci ve správě domény v části Webserver » Nastavení PHP. Typ vypisovaných chyb můžete změnit pomocí funkce error_reporting()


nahoru

HTTP autentizace

Nastavení HTTP autentizace můžete provést v klientské sekci (Domény a hosting » Správa domény » Webserver). Autentizaci je také možné zajistit pomocí PHP skriptu. Zde je jednoduchý příklad:

<?
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']) && 
$_SERVER['PHP_AUTH_USER'] == 'uzivatel' && $_SERVER['PHP_AUTH_PW'] == 'heslo') { // vse v poradku
  echo 'Prihlaseni probehlo uspesne.';
}
else { // chyba prihlaseni
  header('HTTP/1.0 401 Unauthorized');
  header('WWW-Authenticate: Basic realm="Login"');
  echo 'Chyba prihlaseni - zadejte platne uzivatelske jmeno a heslo!';
  exit;
}
?>

Na serverech s PHP 5 nejsou z důvodu nastavení PHP standardně přístupné proměnné $_SERVER['PHP_AUTH_USER'] a $_SERVER['PHP_AUTH_PW']. Jejich dostupnost je možné zajistit změnou konfigurace dané (sub)domény, kterou Vám na požádání provede naše zákaznická podpora.


nahoru

Locales

Příklad použití locales:

<?
setlocale( LC_TIME, 'cs_CZ' );
echo strftime( "Dnes je: %A " );
?>

nahoru

Zabezpečené připojení na vzdálený server

Předpokladem úspěšného navázání zabezpečeného (https) připojení na vzdálený server je ověření SSL certifikátu cílové domény oproti kořenovému certifikátu certifikační autority, která doménový certifikát vydala. Na našich serverech (tj. pro PHP aplikace u nás hostované) jsou standardně instalovány pouze některé kořenové certifikáty - necháváme na uživatelích, zda a kterým autoritám chtějí důvěřovat.

Aby mohlo být spojení navázáno korektně a bylo ověřené, může tedy být potřeba do aplikace potřeba přidat příslušný kořenový certifikát (čí certifikáty). V PHP rozšíření cURL, které se pro práci se vzdálenými servery obvykle používá, se to provede jednoduše pomocí volby CURLOPT_CAINFO, která se definuje funkcí curl_setopt. Kořenové certifikáty nejpoužívanějších důvěryhodných autorit jsou (v jednom souboru) k dispozici například na adrese https://curl.haxx.se/ca/cacert.pem. Ověřování je také alternativně možné vypnout (nastavením volby CURLOPT_SSL_VERIFYPEER na hodnotu false), což ale z bezpečnostních důvodů nedoporučujeme.


nahoru

Zpět na přehled nápovědy

Další domény za akční ceny

Ocenění Českého hostingu - Nejlepší webhosting PHP + MySQL a Webhosting roku Twitter Českého hostingu

Potřebujete poradit?
Jsme online