如何将数据从mysql数据库传递到$ _SESSION

时间:2014-03-03 11:05:30

标签: php mysql session

Hello Everyone我是PHP的新手,我正在尝试在php中创建一个非常小的应用程序 我正在尝试使用php中的会话来访问用户的用户ID,因为我遵循这些步骤

我在我的应用程序中创建这些类

我的第一堂课是数据库经理,我把它放在模型文件夹

public function executeQuery($query) {
        $result = mysql_query($query);
        if ($result === false) {
            $this->closeConnection($this->conn);
            exit;
        }
            // extract data from results, returning an associative array
            $rows = Array();
            while ($row = mysql_fetch_assoc($result)) {         
                $rows[] = $row;
            }
            return $rows;
}

然后我创建了这两个类

首先是loginManager

class LoginManager
{

    function checkLogin($arr)
    {
        require_once(FRONT_ROOT_PATH.'DatabaseManager.php');
        $query ="Select * from tbusers where username='".$arr['username']."' and password='".$arr['password']."'";
        $db= new DatabaseManager();
        $result=$db->executeQuery($query);
        return $result;
    }
}

,第二个是LoginInit

<?php
session_start();
include(LIB_PATH."Login/LoginManager.php");

    if(isset($_POST['addlogin']))
    {
        $obj= new LoginManager();
        $userlist=$obj->checkLogin($_POST);
    if(Count($userlist)>0)
    {   
       $_SESSION['uid']=$userlist['userid'];
        header('location:/ProjectDream/view/home/home.php');
    }
    else 
    {
        echo "Login Failed";
    }
    }
}

在这个课程中我添加了会话,之后我在这个php页面上调用这些类

<?php
include('Include/config.inc.php');
include(LIB_PATH."Login/Logininit.php");

?>
<html>

<head>


    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

    <title>Login</title>

    <!-- CSS -->

    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/animate.css">
    <link rel="stylesheet" href="css/styles.css">

</head>

    <!-- Main HTML -->

<body>

    <!-- Begin Page Content -->

    <div id="container">

    <form action="" method="post">
        <input type="hidden" name="addlogin"/>
        <label for="name">Username:</label>

        <input type="name" name="username">

        <label for="username">Password:</label>

        <p><a href="#">Forgot your password?</a>

        <input type="password" name="password">

        <div id="lower">

        <input type="checkbox"><label class="check" for="checkbox">Keep me logged in</label>

        <input type="submit" value="Login">

        </div>

        </form>

    </div>


    <!-- End Page Content -->

</body>

</html>

当用户登录时我将用户发送到home.php页面我在home.php

上写了这段代码
<?php

    session_start();
    if(isset($_SESSION['uid'])) 
    {

        echo  $_SESSION['uid'];
    }
    else 
    {
        echo "No Session ";
    }
?>

现在,当我运行此应用程序时,它在$ _SESSION变量中显示没有值 是否可以在PHP中调用类级别的会话。请告诉我如何在这里使用会话 感谢

3 个答案:

答案 0 :(得分:0)

赋值的变量应位于等式的左侧。 所以 改变

$userlist['userid']=$_SESSION['uid'];

$_SESSION['uid']=$userlist['userid'];

答案 1 :(得分:0)

从数据库中读取值时,必须为$_SESSION['uid']指定一些值。类似的东西:

$_SESSION['uid'] = $row['uid'];

另请注意,如果您要使用$_SESSION变量中的数据,则必须致电session_start()

答案 2 :(得分:0)

尝试这样它应该有效:

   $_SESSION['uid']=$userlist[0]['userid'];

在您的代码中:

     while ($row = mysql_fetch_assoc($result)) {         
         $rows[] = $row;
     }

您要将$row添加到$rows,以便拥有$rows[0]=$row;然后$rows[1]=$row;

所以实际上$rows['userid']没有设置,设置为$rows[0]['userid']