如何跨页面使用存储和使用会话变量?

ab1*_*b11 24 php session session-variables

当访问一个页面时,我想启动一个会话并存储一个会话变量:

<?php
  session_start(); 
  $_SESSION['myvar']='myvalue';
?>
Run Code Online (Sandbox Code Playgroud)

然后从另一个页面,我想检查是否已存储该会话变量:

<?php
    session_start();
    echo("1");
    if(isset($_SESSION['myvar']))
    {
        echo("2");
       if($_SESSION['myvar'] == 'myvalue')
       {
           echo("3");
           exit;
       }
    }
    ?>
Run Code Online (Sandbox Code Playgroud)

此代码对我不起作用.

M98*_*M98 25

会话一步一步

  1. 在所有事情之前定义会话,在此之前不应该输出,NO OUTPUT

    <?php
    session_start();
    ?>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在页面中设置会话,然后您可以访问该页面.例如,这是第1.pp页

    <?php
       //This is page 1 and then we will use session that defined from this page:
        session_start();
        $_SESSION['email']='email@example.com';
    ?>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 2.php中使用和获取会话

     <?php
    
    //In this page I am going to use session:
    
      session_start();
      if($_SESSION['email']){
      echo 'Your Email Is Here!  :) ';
      }
     ?>
    
    Run Code Online (Sandbox Code Playgroud)

注意:注释没有输出.


小智 16

你要做的就是写--- session_start(); -----在两个页面上..

<!-- first page -->
<?php
  session_start(); 
  $_SESSION['myvar'] = 'hello';
?>

<!-- second page -->
<?php
    session_start();
    echo $_SESSION['myvar']; // it will print hello 

?>
Run Code Online (Sandbox Code Playgroud)

  • 原始问题已在两个页面上都有该函数调用,其他答案显示它是文件系统问题,而不是代码问题. (2认同)

Gum*_*mbo 9

从评论到这个问题的推理,似乎缺乏调整的session.save_path导致PHP的会话处理程序的这种不当行为.只需指定一个存在的目录(在文档根目录之外),并且PHP既可读也可写,以解决此问题.

  • @ ab11:*session.save\_path*中的路径是一个绝对文件系统路径,不是相对于文档根目录解释的(你绝对*不应该存储会话文件!). (2认同)