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
-
Proč je důležité tvořit obsah na váš web?
29. srpna 2024 -
Vstupte do éry umělé inteligence: ASOME Max Studio s AMD Ryzen™ 9 7940HS
14. listopadu 2023
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024