Autor Zpráva
hal_sk
Profil
Zdravím. Mám stránku, kde pomocou pomocou formulára zobrazím skupinu položiek (z DB). Keď kliknem na detail položky, prejdem na novú stránku s detailom položky.
A chcel by som práve na tú stránku dať nejaký odkaz pre návrat späť k hladaným výsledkom. Klasický JavaScriptový odkaz
<a href="JavaScript:history.back()">Späť</a>
použiť nestačí, tak ako nestačí použiť tlačitko "back" v browseri. Vyhadzuje to túto chybu:



Asi je na to nejaká finta. Sú to $_SESSION, ale je niečo jednoduchšie?
Majkl578
Profil
<a href="<?php echo $_SERVER['HTTP_REFERER']; ?>">Zpět</a>
hal_sk
Profil
Majkl578
To ma síce vráti na stránku o krok vzad, ale bez parametrov, čiže na stránke už nebudú zobrazené výsledky z vyhľadávania. Rozmýšľal som, že by som parametre vyhľadávania mohol dať do URL, ale mám tam diakritiku, takže URL na to neni vhodné. Možno by pomohol skrytý POST formulár s hidden položkami, ale neviem ako tlačítko submit dať do textovej podoby a celkovo sa mi to zdá také krkolomné riešenie. A použitie $_SESSION pre takýto účel sa mi zdá tiež ako kladivo na keramiku.
Majkl578
Profil
zajimave, u me na localhostu funguje referer i s parametry v url. :/

mam debian s php 5.2.6
hal_sk
Profil
Majkl578
Mám to riešené cez POST, takže žiadne parametere v URL. Ale nedajú sa tie POST informácie nejak preniesť aj po druhý krát (po kliknutí na "späť")?
DomiX
Profil
Já bych to viděl na SESSION, podle mě to bude asi nejjednodušší...
A neřekl bych, že to je kladivo na keramiku.
DomiX
Profil
No a jestli jsem to pochopil dobře, tak máš nějakej form, kde zadáš parametry, ten odbouchneš a vyhodí to nejakej výsledek a z toho výsledku jdeš pak dál na detail?

Takový krkolomný řešení by asi bylo kliknutím na detail odeslat znovu ten formulář a pak na back ho zase odeslat, ale to by nešlo použít back forward browseru - házelo by to ty hlášky, myslím si, že bez session, aby to bylo rozumný a uživatelsky přívětivý, se neobejdeš...
DomiX
Profil
PS: ono myslím stejně i se session to bude vyhazovat tu hlášku, to je pak potřeba použít něco ve smyslu
header("Location: http://".$_SERVER['HTTP_HOST']./********.php);
s tím, že tam bude nějakej "přepínač", kterej bude říkat, jeslti byl formulář odeslán nebo ne...
hal_sk
Profil
To s tím header-om som nepochopil. Dá sa dať tlačítko "submit" do textovej podoby? Skúsim to spraviť pomocou skrytého formulára, na sekcii detailu položky.
nightfish
Profil
hledání řešené pomocí POST má tu nevýhodu, že se nedá odkázat na stránku s výsledky, takže bych zvážil použití GETu
hal_sk
Profil
nightfish
A ako pri použití GET vyriešim problém s diakritikou v URL? Čítal som že diakritika sa v URL nemá používať. V formulári mám totiž aj položky s diakritikou.
ninja
Profil
hal_sk: diakritika v URL není žádný problém, jen je potřeba escapovat. viz například: http://www.google.cz/search?q=%C5%BElu%C5%A5ou%C4%8Dk%C3%BD+k%C5%AF%C5%88
DomiX
Profil
S tím header jsem to myslel takto: (předesílám, že jsem nepochopil, co je myšleno tímto: "...ale neviem ako tlačítko submit dať do textovej podoby...")

Načtu formulářem data (přepokládám, že je to přes POST), a zobrazím a uložím do SESSION, kliknu na detail a zároveň pomocí header přesměruju na stránku s detailem, něco jako refresh (s tím, že detail je už v SESSION, i když to asi není ideální, ale dá se s tím nějak vyhrát) - ten header mi zajistí to, že když dám zpět, tak prohlížeč "zapomene" ten předchozí POST. Ovšem pak toto musíme vyřešit tak, že když někdo dá zpět, tak nedá POST... tzn. data se musejí načíst ze SESSION a ne pomocí POST, takže je potřeba rozlišit, kdy se šlo na data z formuláře a kdy z "odkazu" zpět...

Snad se to dá pochopit a snad je to konstrukčně jakž takž dobře ;-)
hal_sk
Profil
ninja
Hmm, to je zaujímavé. Je na to nejaký konvertor (na prevod diakritických znakov na tie %XX) ?
tomas.fejfar
Profil *
urlencode

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: