Autor Zpráva
karl
Profil *
Dobrý den,
prosím o radu, jak lze z adresy získat hodnotu za # (string after the hashmark #).
Použil jsem fc: http_build_query($_GET) i varianty $_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING'] .. atd., i fc parse_url() - např. parse_url($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], PHP_URL_FRAGMENT); ... a nic.
Potřboval bych z fc parse_url() PHP_URL_FRAGMENT.
Děkuji za radu.
Tomášeek
Profil
karl:
Tato část na server vůbec nejde.
karl
Profil *
Aha, díky. Takže ji vlastně z adresy nezískám - je to tak?
Taps
Profil
karl:
jde to pomocí javascriptu
karl
Profil *
Taps:
Rozumím, ale potřeboval jsem to jako proměnnou v php.
Kajman
Profil
Tak nepoužívejte hash, ale klasický GET parametr za otazníkem.
karl
Profil *
Kajman:

jestli jde o php, samozřejmě GET jsem vyzkoušel:

../new.php?ab=1#120

php: var_dump($_GET); = array(1) { ["nws"]=> string(1) "1" }
var_dump($_GET['ab']); = string(1) "1"
echo $_GET['nws']; = 1

v javasriptu: document.write(location.hash.substr(1)); //OK

prosím, jak to myslíte..?


oprava: echo $_GET['ab']; = 1
Keeehi
Profil
Kajman to myslel tak, aby jsi místo
new.php?foo=123#bar
použil
new.php?foo=123&hash=bar

Případně, pokud potřebuješ ten hash v URL zanechat, například kvůli kotvám, pak prostě tu informaci zdvoj.
new.php?foo=123&hash=bar#bar
karl
Profil *
Keeehi:

díky, tuhle možnost znám - půvab je v tom, že adresa se vrací redirectem - původně obsahuje i jiné parametry, které se provedou - a vrátí se pouze ono: new.php?foo=123#bar - a pak bych přivítal 'bar' k dalšímu použití. Bohužel jsem nevěděl, že hash se na server neodesílá.
Tj. odešlu-li: new.php?foo=123&hash=bar#bar - vrátí se: new.php?foo=123#bar
Tomášeek
Profil
karl:
Tak pokud ot je kvůli přesměrování, tak si ten hash můžeš podržet jinde, třeba v SESSION.
karl
Profil *
nechtěl jsem použít cookiny ani sessions


Tomášeek:
díky, než jsem stačil připojit dodat, tak jste se ozval
Kajman
Profil
Použití session bude náchylné k chybám. Pokud si uživatel otevře dva taby a pak si refreshne ten, který si otevřel první, php nebude znát správný hash.

Proč to vlastně přesměrováváte, když tu proměnnou hash potřebujete vědět na straně serveru již při generování stránky?
karl
Profil *
Kajman:
Použití session bude náchylné k chybám. Pokud si uživatel otevře dva taby a pak si refreshne ten, který si otevřel první, php nebude znát správný hash.

ano, viz [#11] karl

Proč to vlastně přesměrováváte, když tu proměnnou hash potřebujete vědět na straně serveru již při generování stránky?

Už jsem to vyřešil jinak. Díky všem za pomoc.
mckay
Profil
karl:
Určitě by se nikdo nezlobil, kdybyste zmínil jak jste to vyřešil.

Napadla mě v mezičase ještě jedna možnost, jak to technicky vyřešit (pravděpodobně to je ale těžký antipattern, a asi to nebude to správné řešení). Po redirectu na adresu s přidaným '#' textem, by mohl javascript ten text získat a postbacknout hodnotu skriptu zpátky (xhtmlhttprequest) a na základě odpovědi updateovat stránku. Nebylo by to nejspíš v dnešní době plýtvání prostředky ani tak nevídané řešení.

No a nebo místo session/cookies ještě zkusit použít local storage.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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