Php 如何在函数中设置会话,以便在任何地方使用此会话?这不是';行不通

Php 如何在函数中设置会话,以便在任何地方使用此会话?这不是';行不通,php,function,class,session,Php,Function,Class,Session,我在函数中遇到了会话问题 如何设置$_会话['idUser']=$result['idUser'];到一个会话,我可以将其用于即将到来的活动 <?php // Session starts session_start(); class DB_Functions { public function getUserByEmailAndPassword($email, $password) { $result = mysql

我在函数中遇到了会话问题

如何设置$_会话['idUser']=$result['idUser'];到一个会话,我可以将其用于即将到来的活动

    <?php

// Session starts
    session_start();


    class DB_Functions {

        public function getUserByEmailAndPassword($email, $password) {
            $result = mysql_query("SELECT * FROM User WHERE emailadress = '" . $email . "'") or die(mysql_error());
            // check for result 
            $no_of_rows = mysql_num_rows($result);
            if ($no_of_rows > 0) {
                $result = mysql_fetch_array($result);



//This is the session I want to use

$_SESSION['idUser'] = $result['idUser'];

                    return $result;

假设这只是一个更大类的片段,我看不出这行的原因:

$_SESSION['idUser'] = $result['idUser'];

不起作用(再次假设$result['idUser']包含一个值)。确保您有
session_start()

删除
之前的空格。我建议首先使用以下选项:

我极力推荐

  • 就像你想要的,你可以在任何地方使用它
  • 它将阻止您使用超级全局变量,如$\u会话(不容易调试)
  • 使您的代码更易于测试,这样您就不必手动管理会话了
  • 示例代码:

    use Symfony\Component\HttpFoundation\Session\Session;
    
    $session = new Session();
    $session->start();
    
    // set and get session attributes
    $session->set('name', $result['id_user']);
    $session->get('name'); //Easy to get 'id_user' in another page.
    
    //Other examples: 
    // set flash messages (appears only once, for warnings/alerts)
    $session->getFlashBag()->add('notice', 'Profile updated');
    
    // retrieve messages
    foreach ($session->getFlashBag()->get('notice', array()) as $message)
    {
        echo '<div class="flash-notice">'.$message.'</div>';
    }
    
    使用Symfony\Component\HttpFoundation\Session\Session;
    $session=新会话();
    $session->start();
    //设置并获取会话属性
    $session->set('name',$result['id\u user']);
    $session->get('name')//在另一个页面中轻松获取“id\U用户”。
    //其他例子:
    //设置闪烁消息(仅显示一次,用于警告/警报)
    $session->getFlashBag()->添加('notice','Profile updated');
    //检索消息
    foreach($session->getFlashBag()->get('notice',array())作为$message)
    {
    回显“.$message.”;
    }
    
    如果您喜欢这里的链接:

    警告 在使用之前,请确保您的PHP会话尚未启动 课时课。如果您有一个旧式会话系统启动您的 会话,请参阅


    您的代码不完整。它显示了一个函数和一个类,它没有被括号括起来。此外,您没有调用该函数,因此代码不会被执行。您是否尝试转储$\u会话数据中的内容<代码>回显“”
    返回`我要试试这个!谢谢你的转发!