单击按钮时设置 PHP $_SESSION 变量

Setting PHP $_SESSION variable on button click

我试图在用户单击模式 table 中的记录时设置一个 PHP $_SESSION 变量 table。

模态 table 是通过对 SQL 服务器 table 中的记录进行 while 循环来设置的。显示如下:

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

单击 table 中的链接之一时,它会运行此代码:

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

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

test.php 页面只是一个输入页面,其中填充了来自数据库 table 的值。它还具有上面显示的模态 table。 test.php上的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']) && $_POST['new']==1)
{
    $_SESSION['ficheCount'] ++;
}else if(isset($_POST['new2']) && $_POST['new2']==1)
{
    $_SESSION['ficheCount'] = $_SESSION['ficheCount'] - 1;
}else if(isset($_SESSION['ficheCount']) && $_SESSION['ficheCount'] > 0)
{
    $_SESSION['ficheCount'] = $_SESSION['ficheCount'];
}else{
    session_start();
    $_SESSION['ficheCount'] = 0;
}

if/else语句中的前两条语句是操作下一个和上一个记录按钮。他们工作正常。最后一条语句是在触发语句 1-3 的 none 时运行的代码。 如果用户从 changeVar.php 页面重定向回该页面,则应该触发第三条语句。但是,这永远不会触发。或者,它会触发但什么都不做——我不确定。

我已经尝试手动测试 changeVar 页面:

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

echo $_SESSION['ficheCount'];
?>

它将变量设置为正确的数字,但是,当我 return 到 test.php 页面时,它总是默认返回到之前设置的 ficheCount,就好像我从未在changeVar.php 页。

如果有人能看到我在这里做错了什么,将不胜感激。

干杯,

为了使用 PHP 会话,您总是需要 运行 命令 session_start(); 在每个使用会话的 PHP 文件的开头。 http://php.net/manual/en/function.session-start.php