• bezpečný...
  • stabilný...
  • rýchly!

Programátorská podpora

sekcia: Podpora

Poslanie e-mailu z PHP skriptu

Na poslanie e-mailu z PHP skriptu doporučujeme použiť triedu Mail z PEAR balíka Mail.php.

require_once 'Mail.php';
$mail = Mail::factory('mail');
$body = 'Toto je text spravy...';
$hdrs = array(
  'From'    => 'odosielatel@example.com',
  'Subject' => 'Predmet spravy'
);
$mail->send('prijemca@example.com', $hdrs, $body);

Pre viac konfiguračných možností si prečítajte dokumentáciu k tejto triede:
http://pear.php.net/package/Mail/docs

Stiahnutie stránky zo servera

Na stiahnutie stránky zo vzdialeného servera je najjednoduchšie a najefektívnejšie použiť PEAR triedu HTTP_Request z balíka HTTP/Request.php.

require_once 'HTTP/Request.php';
$url = 'http://platon.sk/';
$req =& new HTTP_Request($url);
if (PEAR::isError($req->sendRequest())) {
  die('chyba pri stahovani stranky');
}
$content = $req->getResponseBody();

Pre viac možností a funkcií si prečítajte dokumentáciu k tejto triede:
http://pear.php.net/package/HTTP_Request/docs

Presmerovanie na jedinú doménu

Pokiaľ vaša stránka beží pod viacerými doménami, je vhodné vybrať jednu hlavnú doménu a z ostatných na túto vybranú presmerovávať. Túto časť kódu umiestnite hneď na začiatok vášho PHP skriptu.

$redirect  = 'platon.sk';
$http_host = @$_SERVER['HTTP_HOST'];
$req_uri   = @$_SERVER['REQUEST_URI'];
if (strlen($http_host) > 0
        && strcasecmp($http_host, $redirect))
{
    header("Location: http://$redirect$req_uri");
    exit;
}   

Výhody tohto riešenia sú predovšetkým z oblasti optimalizácie pre vyhľadávače (SEO):

  • ten istý obsah sa nachádza len na jednej webstránke (doméne), čo majú vyhľadávače radi;
  • hodnota Google PageRank sa nedelí medzi viacero stránok, ale sa "spočítava" dokopy pre jednu hlavnú stránku;
  • dôsledkom týchto opatrení by mala byť lepšia indexácia stránky a vyššie umiestnenie vo vyhľadávačoch.

HTTPS presmerovanie

Ak chcete aby sa vaša stránka zobrazovala výhradne s bezpečným HTTPS protokolom, môžete do súboru .htaccess pridať nasledujúce riadky. Apache bude presmerovávať všetky požiadavky z HTTP na HTTPS.

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{ENV:HTTPS} !^on$
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L]
</IfModule>

Ďalšie .htaccess presmerovania

Ak presmerovávame viacero rôznych adries podľa query adresy na konkrétnu rovnakú adresu, prípadne potrebujeme špeciálne pravidlá, nižšie uvádzame tipy s vysvetlením, ktoré sú dobre využiteľné.

  • Príznak [OR] znamená že sa vyhodnocujú aj ďalšie pravidlá, bezprostredne nasledujúce, ak dané pravidlo bolo vyhodnotené ako nepravdivé (nesúhlasí vzor so vstupom)
  • %{QUERY_STRING} je to, čo je na konci url za otáznikom - napríklad ako v príklade nižšie - ak URL vyzerá ako https://domain.ext/hocijaka-cesta/?kontakt tak to, čo sa vytiahne na porovnanie je slovo "kontakt" (bez úvodzoviek)
  • RewriteRule prepíše URL podľa schémy. Najprv je pravidlo pre pôvodnú cestu - napríklad len ^ - čo znamená že sa pripojí začiatok protokol, doména a RewriteBase.
    Ak je RewriteBase / tak to môže vyzerať nasledovne: http(s)://domain.ext/ - čo znamená, že pravidlo platí len pre url s jedným lomítkom za názvom domény (ak je nastavené RewriteBase /)
    Ďalšia položka je cesta novej URL. Môže byť absolútna (nezačína lomítkom) - napríklad http(s)://new-domain.ext/super-content, alebo relatívna (začína lomítkom)
  • Príznak L ako last znamená, že vyhodnocovanie pri tomto pravidle končí.
  • R ako redirect znamená, že stránka sa má presmerovať. Používa sa 301 pre trvalé presmerovanie, alebo 302 pre dočasné. 301 je dobré ak máme nejakú vyhľadávaciu službu so štatistikami (napríklad google) a táto využíva štatistiky pre konkrétne URL. V prípade 301 sa štatistiky novej URL pripoja k starej. Ak je ale 302, tak sa toto neudeje a čaká sa až bude existovať pravidlo s kódom 301. Taktiež 302 sa neuchováva v "cache" a dá sa preto jednoducho meniť na rozdiel od typu 301.
  • Príznak [NE] znamená, že URL sa nemá prekódovavať - napríklad medzera sa konvertuje na %20 a v prípade, že sa v URL nachádza medzera a nieje príznak NE tak miesto "URL/nie co" sa pošle "URL/nie%20co" ak ale je nastavený príznak NE tak sa pošle "URL/nie co".
  • V RewriteRule sa môže Regulérny výraz ozátvorkovať a použiť pre výslednu url - napríklad ak chceme zmeniť iba časť url, môžeme použiť ako v príklade nižšie na konci (.*) - zátvorky nám uložia tieto údaje do premennej a použijeme ju pomocou $1 v cieľovej url.

#URL, ktora suhlasi je http(s)://domain.ext/?kontakt(y) - presmeruje na http(s)://domain.ext/kontakt/
RewriteCond %{QUERY_STRING} ^kontakt$ [OR]
RewriteCond %{QUERY_STRING} ^kontakty$
RewriteRule ^ /kontakt/ [L,R=301]

#Presmerovava z http(s)://domain.ext/?sidlo na http(s)://domain.ext/kontakt/#sidlo RewriteCond %{QUERY_STRING} ^sidlo$ RewriteRule ^ /kontakt/#sidlo [NE,L,R=301]

#Presmerovava z http(s)://domain.ext/kontakt/bratislava?pobocka na #http(s)://domain.ext/kontakt/#bratislava pomocou 302 presmerovania (docasne) RewriteCond %{QUERY_STRING} ^pobocka$ RewriteRule ^kontakt/bratislava /kontakt/#bratislava [L,R=302]

#Presmerovava z http(s)://domain.ext/kontakt/sidlo na http(s)://domain.ext/kontakt/ RewriteRule ^kontakt/sidlo /kontakt/ [L,R=301]

#Presmerovava vsetko co zacina na http(s)://domain.ext/cz/kontakt/ a presmeruje na #http(s)://domain.ext/kontakt/cz/ - za posledne lomitko sa pripoji zvysok URL RewriteCond %{QUERY_STRING} ^extra$ RewriteRule ^cz/kontakt/(.*)$ /kontakt/cz/$1 [NE,L,R=301]


Ak by ste na tomto mieste privítali ďalšie programátorské tipy, dajte nám o nich vedieť na e-mailovej adrese podpora@platon.sk

  • Platon Webhosting
  • Metafox CMS
  • Platon Technologies, s.r.o.