PHP存储会话数据,在会话中存储用户ID

Posted

技术标签:

【中文标题】PHP存储会话数据,在会话中存储用户ID【英文标题】:PHP storing session data, storing userid in session 【发布时间】:2015-05-06 08:46:42 【问题描述】:

抱歉,我是新手。以下代码仅显示“请登录”。代码确实有效,但它没有做我想要的,我正在尝试将用户 ID 存储在会话中。这是我的代码

<?php

    if(!isset($_SESSION)) session_start();


    if(isset($_POST['userid']))
         $userid = $_POST['userid']; 
         $_SESSION['userid']=$userid;
         echo "Welcome $_SESSION[userid]";
    

    if (!isset($_SESSION['userid']))
        echo "Please login";
        exit;
    
    ?>

【问题讨论】:

请出示您的表格代码 错字echo "Welcome $_SESSION[userid]"; 必须是echo "Welcome $_SESSION['userid']"; 它不会解决你的问题 Hei @r33drum 为什么您在一段时间后将正确答案更改为另一个答案并且因为我的答案有效而投了反对票? @Sanjay Kumar N S 我不能投票,我没有 15 个代表,我使用了你的代码并且它有效,我很感激,我给了你正确的答案。 @r33drum 现在它来了。 【参考方案1】:

session_start() 应该在开头没有任何条件。还有一个额外的右括号 ) 在第二个 if 条件语句中。试试这个:

 <?php
   session_start();


        if(isset($_POST['userid']))
            $_SESSION['userid']= $_POST['userid'];
            echo "Welcome $_SESSION['userid']";
        

        if (!$_SESSION['userid'])
            echo "Please login";
            exit;
        

【讨论】:

【参考方案2】:

session_start(); 不应该在你的 if 条件下,它必须在脚本的开头并且总是启动

<?php

    session_start();


    if(isset($_POST['userid']))
        $_SESSION['userid']= $_POST['userid'];
        echo "Welcome ".$_SESSION['userid'];
    

    if (!$_SESSION['userid'])
        echo "Please login";
        exit;
    

【讨论】:

【参考方案3】: session_start() 需要在您开始使用会话之前。 我建议您将 isset() 替换为 empty(),因为 empty() 已检查: “”(空字符串) 0(0为整数) 0.0(0 作为浮点数) “0”(0作为字符串) 空 错误 array()(一个空数组) $var; (声明的变量,但没有值)

【讨论】:

以上是关于PHP存储会话数据,在会话中存储用户ID的主要内容,如果未能解决你的问题,请参考以下文章

在会话中存储用户数据 - 从数据库

Laravel 4.2 将用户 ID 存储在会话数据中的啥位置?

PHP Sessions

PHP 7 用户会话问题 - 无法初始化存储模块

如何存储用户的会话数据

通过将数据存储在会话存储中进行会话管理