Autor | Zpráva | ||
---|---|---|---|
karl Profil * |
#1 · Zasláno: 7. 3. 2018, 17:17:13
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 |
#2 · Zasláno: 7. 3. 2018, 17:20:46
karl:
Tato část na server vůbec nejde. |
||
karl Profil * |
#3 · Zasláno: 7. 3. 2018, 17:27:12
Aha, díky. Takže ji vlastně z adresy nezískám - je to tak?
|
||
Taps Profil |
#4 · Zasláno: 7. 3. 2018, 17:41:17
karl:
jde to pomocí javascriptu |
||
karl Profil * |
#5 · Zasláno: 7. 3. 2018, 18:46:16
Taps:
Rozumím, ale potřeboval jsem to jako proměnnou v php. |
||
Kajman Profil |
#6 · Zasláno: 7. 3. 2018, 19:50:48
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 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 * |
#9 · Zasláno: 7. 3. 2018, 23:05:07
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 |
#10 · Zasláno: 7. 3. 2018, 23:08:00
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 |
#12 · Zasláno: 8. 3. 2018, 08:50:08
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 * |
#13 · Zasláno: 9. 3. 2018, 10:39:49
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 |
#14 · Zasláno: 10. 3. 2018, 15:17:47
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. |
||
Časová prodleva: 6 let
|
0