Tvorba přístupných dynamických odkazů
Určitě často při tvorbě webových aplikací používáte odkazy s mnoha doplňujícími parametry. V tomto článku si ukážeme, jak si tvorbu takových odkazů zjednodušit. Také si ukážeme způsob, jak obejít nepříjemné chování některých vyhledávačů, které obvykle ignorují část URL za otazníkem, čímž vaše stránky znevýhodňují.
Jak na odkazy?
Pro tento účel použijeme jednoduchou třídu tUrl
(ke stažení v archivu), která bude mít tyto základní funkce:
- Vytvoří QUERY_STRING z parametrů zadaných v asociativním poli.
- Do QUERY_STRING přidá „globální proměnné“ (může to být například identifikátor session SID).
- Pokud hodnoty parametrů obsahují nebezpečné znaky, které nemohou být obsaženy v url, převede je na escape sekvence.
Nejprve jednoduchá ukázka:
<?php
# vloží soubor s třídou
include ‚url.class.php‘;
# vytvoří instanci třídy
$url = new tUrl;
# nastaví jméno skriptu
$url->script_name = ‚index.php‘;
# nastaví globální proměnné
$url->globals[‚uzivatel‘] = ‚franta‘;
#samotná tvorba odkazů
$href = $url->create(
array(
‚akce‘ => ‚ukaž ceník‘,
‚kategorie‘ => 1
)
);
# promenna $href obsahuje řetězec
# index.php?uzivatel=franta&akce=uka%9E+cen%EDk&kategorie=1
?>
<a href=“<?php echo $href;?>“>Odkaz</a>
Třída tUrl
bude mít jednu metodu a několik proměnných.
Metody
- create(array promenne, [string skript])
- Vytvoří url tím, že spoji cestu ke skriptu, název skriptu a parametry s globálními parametry. První parametr je asociativní pole. Index pole určuje jméno proměnné a jeho hodnota hodnotu proměnné:
$url = new tUrl;
$param = array(
‚a‘ => 123,
‚text‘ => ‚Hello :)‘);
echo $url->create($param);Výstup bude vypadat přibližně takto:
?a=123&amp;text=Hello+%3A%29
.
Proměnné
- globals[]
- Globální parametry, které se přidávají ke každé url. Můžete zde zadat například uživatelské id, skin webu nebo, pokud jej používáte, session identifikátor SID.
- argument_separator
- Definuje oddělovač parametrů url, standardně je nastaven na
&
. - argument_associate
- Definuje řetezec, který v url odděluje název proměnné a její hodnotu, standardně je nastaven na
=
. - question
- Definuje řetezec, který v url odděluje název skriptu a jeho parametry, standardně je nastaven na
?
. - script_name
- Obsahuje jméno výchozího skriptu.
- script_path
- Obsahuje cestu ke skriptu/skriptům. Toto je potřeba hlavně v případě, kdy používáte pro přenos proměnných způsob
http://www.server.cz/skript.php/promenna/hodnota/promenna2 ...
Jak na vyhledávače?
Některé fulltextové vyhledávače ignorují v url část za otazníkem. Pokud tedy máte celý web ovládaný jedním skriptem, při troše štěstí zaindexují pouze vstupní stránku index.php
, ale už se nazaindexuje index.php?ukaz=clanek&id=123
, protože ten bude vyhledávač považovat za index.php
. Jedním ze způsobů, jak toto obejít, je oddělení parametrů skriptu lomítkem /
, takže odkaz bude vypadat takto: index.php/ukaz/clanek/id/123
. Toto by už měl zaindexovat každý vyhledávač.
Jak vytvořit takový odkaz?
Pokud použijete pro tvorbu odkazů třídu tUrl
, stačí přidat několik řádků kódu:
$url = new tUrl;
# nahradí „&“ znakem „/“
$url->argument_separator=’/‘
# nahradí „=“ znakem „/“
$url->argument_associate=’/‘
# nahradí „?“ znakem „/“
$url->question=’/‘
# nastaví název skriptu
$url->script_name=’index.php‘
$param = array(
‚a‘ => 123,
‚text‘ => ‚Hello :)‘);
echo $url->create($param);
Výstup bude vypadat takto: index.php/a/123/text/Hello+%3A%29
.
Dekódování proměnných
Pokud zavoláte skript tímto odkazem, nebudou předány proměnné klasickým způsobem, ale budou předány vcelku, v proměnné $_SERVER['PATH_INFO']
. Abyste mohli proměnné normálně používat, stačí zavolat funkci importPathInfoVars()
, která je ve stejném souboru jako třída tUrl. Po zavolání funkce převede PATH_INFO do pole $_REQUEST tak, jako by se parametry předávaly normálním způsobem.
Související články
- Jak se dostat na Yahoo!, Google a PPC vyhledávače
- Neviditelný web a jiné pohádky
- Optimalizace stránek pro vyhledávací a indexovací služby
- Způsoby propagace webových stránek – vyhledávací servery
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Jak zvýšit CTR vašeho e-mail marketingu
9. září 2024 -
Proč je důležité tvořit obsah na váš web?
29. srpna 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024