Установка переменной PHP $_SESSION при нажатии кнопки

#php #session-variables

#php #сессия-переменные

Вопрос:

Я пытаюсь установить переменную PHP $ _SESSION, когда пользователь нажимает на запись в модальной таблице.

Модальная таблица настраивается путем выполнения цикла while по записям в таблице SQL Server. Это выглядит следующим образом:

     Value   |  Link
---------------------------
    0       |   <a href= changeVar.php?ficheNum=0></a>
    1       |   <a href= changeVar?ficheNum=1></a>
    2       |   <a href= changeVar?ficheNum=2></a>
    ...
  

При нажатии на одну из ссылок в таблице выполняется этот код:

 <?php
$ficheNum=$_REQUEST['ficheNum'];
$_SESSION['ficheCount'] = $ficheNum;

header("Location: test.php"); 
?>
  

The test.php страница — это просто страница входных данных, которые заполняются значениями из таблицы базы данных. В нем также есть модальная таблица, которая была показана выше. PHP на test.php заключается в следующем.

 $fiche_array = array();

$sel_query = "SELECT fiche
              FROM test.dbo.[TLM.Fiche_Globale]
              ORDER BY fiche ASC;";
$sel_result = sqlsrv_query($con, $sel_query) or die( print_r( sqlsrv_errors(), true));
while($sel_row = sqlsrv_fetch_array($sel_result)) {
    array_push($fiche_array, $sel_row['fiche']);
}

if(isset($_POST['new']) amp;amp; $_POST['new']==1)
{
    $_SESSION['ficheCount']   ;
}else if(isset($_POST['new2']) amp;amp; $_POST['new2']==1)
{
    $_SESSION['ficheCount'] = $_SESSION['ficheCount'] - 1;
}else if(isset($_SESSION['ficheCount']) amp;amp; $_SESSION['ficheCount'] > 0)
{
    $_SESSION['ficheCount'] = $_SESSION['ficheCount'];
}else{
    session_start();
    $_SESSION['ficheCount'] = 0;
}
  

Первые два оператора в инструкции if / else предназначены для управления кнопками следующей и предыдущей записи. Они работают нормально. Заключительный оператор — это код, который выполняется, если ни один из операторов 1-3 не запущен.
Предполагается, что третья инструкция срабатывает, если пользователь перенаправляется обратно на страницу из changeVar.php страница. Однако это никогда не срабатывает. Или это срабатывает и ничего не делает — я не уверен.

Я пытался вручную протестировать страницу changeVar:

 <?php
$ficheNum=$_REQUEST['ficheNum'];
$_SESSION['ficheCount'] = $ficheNum;

echo $_SESSION['ficheCount'];
?>
  

Она присваивает переменной правильное число, но, когда я возвращаюсь к test.php страница по умолчанию всегда возвращается к ficheCount, который был установлен ранее, как будто я никогда не устанавливал переменную в changeVar.php страница.

Если кто-нибудь может увидеть, что я здесь делаю не так, это было бы очень ценно.

приветствия,

Ответ №1:

Чтобы использовать сеансы PHP, вам всегда нужно запускать команду session_start(); в начале каждого PHP-файла, который использует сеансы. http://php.net/manual/en/function.session-start.php

Комментарии:

1. ой. Это было так просто. Добавлен ‘session_start();’ в начало changeVar.php страница, и мы снова в деле. Большое вам спасибо