ugrás a tartalomhoz

Location

kriz · 2005. Már. 19. (Szo), 13.57
Elo,

Szoval, olyan problémám van, hogy jelenleg úgy kezelem a formokat le, hogy ha szükséges, akkor beinclude-olom a process.php -t, aztán utánna kinyomja a tartalmat, amit a process.php még tud befolyásolni, ennek előnye, hogy tudok egy teljesen új oldalt megjeleníteni vagy ha hiányos a form akkor ismét a formot, az eddig megadott adatokkal. Viszont hátránya, hogy ha a júzer ráhasal a Refresh gombra, akkor ugye megjelenik az a rettenetes dialog ablak.
Ennek kiküszöbölésére gondoltam, hogy használom a Location headert. Ugyebár az adatellenőrzés függvényében itt is tudom egy új lapra küldeni a júzert, vagy vissza a formhoz. De a $_POST adatok időközben eltűnnek.

Ilyen hosszú bevezető után a kérdésem kb az lenne, hogy hogyan tudom "újra elküldeni" a $_POST változókat úgy hogy megkapja azokat a process.php után következő php is (form.php -> process.php -> valami.php esetén a valami.php)?
(Gondoltam arra, hogy belepakolom az egész $_POST -ot egy $_SESSION["POST_PROCESS"] változóba, és azt kezelem le a túloldalon, de az nem ment)

Vagy esetleg van erre valami jobb megoldás is mint a Location? Esetleg van valami hátránya a Location használatának?
 
1

Miért nem működött a

csla · 2005. Már. 19. (Szo), 16.43
Miért nem működött a session változóba pakolás? Készítettem egy kis példát, nekem üzemelt:

1.html:

<HTML>
<BODY>
<FORM method="POST" action="2.php" target="_self">
<INPUT type="text" name="V1">
<INPUT type="text" name="V2">
<INPUT type="submit" value="HAJRÁ">
</FORM>
</BODY>
</HTML>
2.php:

<?php

session_start();

$_SESSION["POST_PROCESS"] = $_POST;

print('<HTML><BODY><FORM method="POST" action="3.php" target="_self">
<INPUT type="submit" value="HAJRÁ 2">
</FORM>V1: '.$V1.'|V2: '.$V2.'</BODY></HTML>');

?>
3.php:

<?php

session_start();

print('<HTML><BODY>
V1: '.$_SESSION["POST_PROCESS"]["V1"].'|V2: '.$_SESSION["POST_PROCESS"]["V2"].'</BODY></HTML>');

?>
3

.

kriz · 2005. Már. 19. (Szo), 16.54
Hogy a példádnál maradjunk, én header("Location: 3.php"); -vel próbáltam a dolgot megoldani, és ekkor nem ment a session dolog, pontosabban csak akkor jelentek meg az adatok, amikor a 3.php -re ráfrissítettem.
5

Kipróbáltam most úgy,

csla · 2005. Már. 19. (Szo), 16.58
Kipróbáltam most úgy, hogy a 2.php-be betettem az általad írt header-es sort, és így is tökéletesen működik, bármennyiszer nyomkodom az F5-öt a 3.php-nál.
6

Majd utánnanézek, hogy mi

kriz · 2005. Már. 19. (Szo), 17.02
Majd utánnanézek, hogy mi lehetett a gond, de ezekszerint a $_SESSION az egyetlen megoldás a dologra? A $_POST tömböt nem lehet valahogy "átörökíteni" a 3.php-be?
8

Ha a konkrét kérdés a

csla · 2005. Már. 19. (Szo), 18.22
Ha a konkrét kérdés a $_POST "átörökítése", akkor annak a legegyszerűbb és legkézenfekvőbb megoldása a $_SESSION. De ha valamiért nem használható a session változós átörökítés, akkor annyit tehetsz, hogy a 2.php-ben készítesz egy formot, aminek a megfelelő (akár hidden) mezőit PHP-ben kitöltöd már a HTML generálásakor, és úgy mész a 3.php-re, hogy a 2.php-ben lévő formot javascriptből automatikusan submitolod. (pl. <BODY onload="javascript: FORM_NEV.submit()"> Ennek persze hátrány a $_SESSION-nel szemben, hogy nem annyira elegáns, illetve hogy így ezt minden újabb oldal esetében el kéne játszanod.
2

session

VBala · 2005. Már. 19. (Szo), 16.45
Hívtál session_start()-ot a $_SESSION tömb használata előtt?
4

igen, minden

kriz · 2005. Már. 19. (Szo), 16.56
igen, minden script elején van egy @session_start();
7

hidden?

Anonymous · 2005. Már. 19. (Szo), 18.02
Csáó! Ha nagyon nem akarsz $_SESSION-t használni, akkor tudsz formba hidden elemeket tenni, s ezeket mondjuk egy javascript időzítővel elküldeni. Gondolok arra, hogy ha jók az adatok, kiírsz egy scriptet, ami elküldi a fomrot. Igazából nem értek javascriptül, de biztos vagyok benne, hogy meg lehet ezt csinálni. Üdv:
Mr.Tiny