Autor Zpráva
Pavka
Profil
Ahoj,
zase mám před sebou jednu "napodstatnou" překážku, která se mi nedaří vyřešit.
Potřebuju nechat vypsat normální odkaz, který odešle proměnnou s názvem/cestou adresáře. Jelikož tyto cesty mohou být poměrně dlouhé, tak bych tuto proměnnou chtěl skrýt.
Shrmutí:
<A href=".....?dir=....">
a chci aby se v url ta proměnná neobjevila.

Jde to nějak? Děkuji.
thingwath
Profil
Jestli by to nebylo lepší nějak pres sessiony nebo cookies... Nevím, jestli jde prohlížeč nějak donutit vyžádat si stránku jinak než GET (v odkaze). Ale možná mám jenom mezeru v základním vzdělaní :-)
Marty
Profil
No jedinnou možnost vidím input hidden, jinak to asi nepůjde.

Pak je samozřejmě řešením poslat třeba přes url jen nějaké jednoduché číslo, a pak v té stránce by se odifovaly funkce, které by se na základě zjištěného čísla udělaly (tedy pokud máš možnost zasahovat do kódu stránky na kterou odkazuješ).
WertriK
Profil *
Napadlo mě to udělat přes JS, ale bylo by to hrozně nepohodlné(zjitíš níž). Musel by jsi udělat ke každému odkazu i formulář(s hidden inputy).

Tento javascript zajistí odeslání formuláře

<script language="javascript" type="text/javascript">
function send(form) {

form.submit();

}
</script>


Formulář přes který to budeš odesílat(to nepohodlné, kolik bude odkazů tolik formulářů) - nejsem si jist tou odesílací metodou.


<form name="nějaké_jméno" method="get" action="stránka_na_kterou_odkazuješ">
<input type="hidden" name="dir" value="hodnota_$dir">
<input type="hidden" name="dir1" value="hodnota_$dir1">
<input type="hidden" name="dir2" value="hodnota_$dir2">
</form>


Samotný odkaz.


<A href="#" onClick="send('nějaké_jméno'); return false;">blabla</A>


A nebo jak napsal Marty přes nějakou jednoduchou hodnotu ale potom bych doporučil místo ifování
použít:

switch($dir):
case "hodnota1":
$dir = "../";
break;
case "hodnota2":
$dir = "./";
break;
endswitch;
Mordae
Profil
Pomocí formuláře, což ale nebude klasický odkaz. Já bych doporučil buď to nechat, nebo si sestavit 'dir'y a jejich indexy a pak posílat právě ty. Mohlo by to ty url výrazně zkrátit. Nevýhodou je pak nečitelnost...
Pavka
Profil
Tak to asi nechám (nebo přes ten JS, ještě se rozmyslím)....nic tajného tam naštěstí není :), ale díky za pomoc.
llook
Profil
Ono by to tím JS šlo i s jedním formulářem, změnou hodnoty přes DOM:

<form action="adresa" method="post" id="the-form">
<input type="hidden" name="dir" id="dir" value="" />
</form>
<script type="text/javascript">
function odesli(value) {
formElement = document.getElementById('the-form');
dirElement = document.getElementById('dir');
dirElement.setAttribute('value', value);
formElement.submit();
}
</script>


Ale bral bych to fakt až jako krajní řešení. Mnohem lepší to bude řešit v PHP.
Pavka
Profil
No, ale jak to chceš řešit v php?
Ale díky za tento scriptík.
DoubleThink
Profil *
No třeba pomocí zmiňovaných sessions.

Je to spolehlivější a bezpečnější (data zůstávají na serveru, klient má jenom v cookie uložené SessionID)
Pavka
Profil
No, ale to do URL stejně musím dát. Abych mohl registrovat session, tak musím dostat jakou položku si uživatel zvolil a to nepoznám jinak než, když tu informaci odešle.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0