Jde nějak udělat že pokud mam třeba návštěvní knihu, tak na stránce kniha.php mám příspěvky a formulář pro vložení příspěvku, pokud někdo vkládá nový příspěvek vyplní formulář a odešle, jako action je nastaveno vloz.php - kde je php script pro vložení příspěvku - takže ho to pošle na tu stránku vloz.php a potom ho pomocí meta přesměruju zpět na kniha.php, potřebuju vědět zda to jde udělat tak aby ho servr vůbec na tu stránku vloz.php neposílal ale aby mu hned zobrazil kniha.php ?
Díky
Na tu stranku vloz.php jit primo nemusis muzes dat action klidne na kniha.php + skrytej input (hidden s nejakym parametrem, podle kteryho skript provede require("vloz.php"); ... anebo s toho vloz.php prim phpkem presmeruj header ("location: http://xxx.xxx.xxx");
no jo! a tak jednoduše já sem sedlák :) díky
Raději bych doporučoval tu druhou možnost:
kniha.php
--->
skript.php
<?
...zkontroluj informace...
...zapiš do databáze....
...zjisti jak to dopadlo...
...atd atd atd.....
Header('Location: http://'.$_SERVER['HTTP_HOST'].'kniha.php');
?>
--->
kniha.php
Při použití možnosti první, jak ti doporučil Sojkovec, se může stát, že pou žitím tlačítek zpět a vpřed ti někdo něco udělá dvakrát. Lze to sice ošetřit, ale stejně jsou s tím problémy. Např. když odešleš data z kniha.php metodou post na stránku kniha.php?akce=zapis a pak se na ni vrátíš pomocí zpět. Prohlížeč se tě bude ptát, zda má dat odeslat stránce znova. Není to vůbec pěkné ;-)
Obecně platí, že "jednorázová" akce musí proběhnout jen jednou a měla by být umístěna v samostatném souboru, ze kterého není žádný výstup (nevrací html). Tato akce proběhne jen na serveru a tím pádem se neuloží klientovi do historie prohlížeče. Na konci souboru je přesměrování na stránku výslednou, třeba jak_to_dopadlo.php?jak=uspesne nebo třeba zpět do knihy návštěv, kde už přibyl nový příspěvek kniha.php.
header je lepsi ( a i jednodussi) , jen sem to navrh, aby bylo videt ze moznosti existuje spousta
Header('Location:$HTTP_REFERER');
Dalsi moznost. Posle te na predchozi stranku.
Tomik
Header('Location:$HTTP_REFERER');
No, fungovat to může, ale raději bych přesměrovával stránku někam kónkrétněji. Nikdo ti nezaručí, že referer bude přesně ta stránka, kterou ty potřebuješ.
Navíc by mělo být:
Header('Location: '.$HTTP_REFERER);
nebo
Header("Location: $HTTP_REFERER");
Header('Location: $HTTP_REFERER'); fungovat nebude, pač se proměnná v řetězci uzavřeném do apostrofů nenahradí (php takovýto řetězec neprochází)
Ještě bych dodal, že když už, tak by bylo lepší použít $_SERVER['HTTP_REFERER']
..no ale fakt to neni dobry napad, HTTP_REFERER se bere z hlavicky zaslany klientem a ne vsechny prohlizece to delaj.. a spousta lidi to ma z douvodu soukromi vypnuty...
Pokud znas cil, tak je dobry to nasmerovat k nemu. $HTTP_REFERER pouzivam u skriptu, ktery se presmeruje na predchozi stranku, u které nevím adresu. Prikladem je hlasovani. Hlasovaci formular je na vsech strankach a skript je v samostatnem souboru.
Ja to pouzivam a nesetkal jsem se zatim s nejakymi problemy.
Tomik.
no vlastne ted resim neco podobnyho.. http_referer mi pride dost nespolehlivy, uzivatel to muze mit vypnuty.. no jinak me napada bud neco jako 'hlasovani.php?returnTo=pageX' nebo session..
Taky jsem nad tím párkrát uvažoval a zvítězily u mě session.
Myslím případ, kdy do jednoho skriptu směřují data z různých stránek, a já bych se chtěl vrátit na onu stránku namísto pitomého log.php?jaktodopadlo=blablabla