Передача переменных сеанса php нестандартным способом

Я использую следующий PHP-код и HTML-форму для передачи значения «item_name» на страницу загрузки.

<?php
session_start();
$_SESSION['item_name']="item_name";
?>
...
<form action="download.php" method="post">
<input type="hidden" name="item_name" value="133076">
<input type="submit" value="download">
</form>

Я получаю и использую значение «item_name» на странице загрузки, как это.

<?php
session_start();
$item_name=$_POST["item_name"];
?>

Все это прекрасно работает, но у меня есть следующая проблема, которую я надеюсь решить здесь. После первого щелчка я хочу вернуться на ту же html-страницу, например:

<form action="" method="post">

затем сделайте что-нибудь с помощью JavaScript, сгенерируйте ссылку на «download.php» и после этого сможете скачать файл. Проблема в том, что к тому времени, когда я нажимаю на только что сгенерированную ссылку, чтобы перейти к «download.php»,

$_SESSION['item_name']="item_name";

уже потерян. Итак, как я могу сохранить эту переменную сеанса, чтобы использовать ее на странице загрузки? Спасибо.


person Ash    schedule 13.08.2013    source источник
comment
это как-то запутанно! что ты хочешь сделать на самом деле?   -  person morteza kavakebi    schedule 13.08.2013


Ответы (1)


На странице download.php вам нужно установить переменную как переменную сеанса:

<?php
session_start();
$_SESSION['item_name'] = $_POST["item_name"];
?>

Выполнив описанное выше, переменная будет сохранена в сеансе PHP и будет доступна везде, где вы вызываете session_start().

То, как у вас это есть прямо сейчас:

<?php
session_start();
$item_name = $_POST["item_name"];
?>

что сделает переменную доступной только на вашей странице download.php и нигде больше.

person BannerMan    schedule 13.08.2013
comment
Я правильно передаю и получаю переменную. Код работает. Проблема возникает, когда я пытаюсь что-то сделать на странице, а затем получаю переменную только на странице загрузки. - person Ash; 13.08.2013
comment
@Ash Позвольте мне посмотреть, правильно ли я вас понял: (1) у вас есть форма со скрытым элементом item_name, (2) вы публикуете item_name в download.php, (3) вы фиксируете item_name в переменной сеанса на той же странице download.php, (4) Затем вас перенаправляют обратно в исходную форму?! - person BannerMan; 13.08.2013
comment
Я хочу иметь некоторую задержку между загрузками, поэтому я начинаю сеанс, но не перехожу сразу на страницу загрузки. К сожалению, в течение этой задержки переменные сеанса теряются. - person Ash; 13.08.2013
comment
@Ash Не очень понятно, что ты пытаешься сделать. Может быть, вы можете уточнить свой вопрос еще немного?! - person BannerMan; 13.08.2013