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
|