Php 会话变量在页面之间丢失

Php 会话变量在页面之间丢失,php,Php,我有很多页面需要访问变量。当用户在accounts.php上的表单中输入ID时,会为该变量分配一个值: account.php <form action="afterlog.php" class="form" method="post"> <input type="text" name="amid" id = "amid" class="input" /> <input class="btn" type="submit" value="Go" /&g

我有很多页面需要访问变量。当用户在accounts.php上的表单中输入ID时,会为该变量分配一个值:

account.php

<form action="afterlog.php" class="form" method="post">
    <input type="text" name="amid" id = "amid" class="input" />
    <input class="btn" type="submit" value="Go" />       
</form>
<?php
session_start();
   if($_SERVER['REQUEST_METHOD']=='POST')
   {
    $_SESSION['account_manager_id']=$account_manager_id;
    $account_manager_id = $_POST['amid'];
    header('Location: customer_view.php');
  }
?>

将值“amid”发布到afterlog.php

afterlog.php

<form action="afterlog.php" class="form" method="post">
    <input type="text" name="amid" id = "amid" class="input" />
    <input class="btn" type="submit" value="Go" />       
</form>
<?php
session_start();
   if($_SERVER['REQUEST_METHOD']=='POST')
   {
    $_SESSION['account_manager_id']=$account_manager_id;
    $account_manager_id = $_POST['amid'];
    header('Location: customer_view.php');
  }
?>

它检查POST,分配会话变量,并将用户重定向到customer_view.php

customer\u view.php

<form action="afterlog.php" class="form" method="post">
    <input type="text" name="amid" id = "amid" class="input" />
    <input class="btn" type="submit" value="Go" />       
</form>
<?php
session_start();
   if($_SERVER['REQUEST_METHOD']=='POST')
   {
    $_SESSION['account_manager_id']=$account_manager_id;
    $account_manager_id = $_POST['amid'];
    header('Location: customer_view.php');
  }
?>
我需要在本页面和之后的所有页面中使用“$account\u manager\u id”。下面是我如何将_SESSION变量的值赋值给它的:

<?php 
session_start();
$_SESSION['account_manager_id']=$account_manager_id;
?>

但是该值不在任何页面上,包括customer_view.php。我知道它会传递到afterload.php,因为它会在那个页面上打印出来,但它会在那个页面之后消失

我做错了什么


谢谢你的帮助

$account\u manager\u id
中有任何值之前,您正试图为
$会话['account\u manager\u id']
分配一个值。您只需切换顺序:

$_SESSION['account_manager_id']=$account_manager_id;
$account_manager_id = $_POST['amid'];
或者简单地说:

$_SESSION['account_manager_id'] = $_POST['amid'];
在afterlog.php中

<?php
   if($_SERVER['REQUEST_METHOD']=='POST')
   {
    $account_manager_id = $_POST['amid'];    
    $_SESSION['account_manager_id']=$account_manager_id;

    header('Location: customer_view.php');
  }
?>



在您尝试将变量
$account\u manager\u id
放入会话时,没有为其分配值。立即启用正确的错误报告!1.在afterlog.php中,在实际设置变量值之前,您将为$\u会话分配一个变量。2.在customer_view.php中,您正在用我假定的未初始化变量覆盖$_会话中的值。您在customer_view脚本中“赋值”的尝试也是毫无意义的–您希望从会话中获取一个值,而不是用另一个值覆盖现有会话值(当然,这也是未定义的)。要访问第三页上的“account\u manager\u id”,我需要什么?目前我有:$\u SESSION['account\u manager\u id]=$account\u manager\u id;感谢您的帮助。我想我的问题是在再次使用变量时如何引用它,这是在如下查询中:“从mgap_账户_经理中选择*,其中账户_经理_id=”$account_经理_id'”;或so$sql=“从mgap_账户_经理中选择*,其中账户_经理_id=“.$”会话['account_经理_id'”;