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

PHP storing session data, storing userid in session

抱歉,我是新手。以下代码只显示'Please login'。代码确实有效,但它没有按照我的意愿进行,我正在尝试将用户标识存储在会话中。这是我的代码

<?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;
    }
    ?>

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;
    }

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;
        }
  • session_start() 需要在您开始使用会话之前。
  • 我建议您将 isset() 替换为 empty(),因为 empty() 检查了:
    • ""(空字符串)
    • 0(整数 0)
    • 0.0(0 作为浮点数)
    • "0"(0 作为字符串)
    • 错误
    • array()(空数组)
    • $变量; (声明的变量,但没有值)