将userid设置为会话数组如何?

时间:2013-10-02 18:34:39

标签: php

你好我发布了关于这个问题的第4个问题,但到目前为止没有人可以帮助我,所以让我们从开始开始,我需要的是简单的我需要:从名称中的列名“userID”设置userID变量“用户“进入Sessions数组:$ _SESSION ['userID']

这是我的登录页面代码:

<?php 
session_start();
include_once("config.php"); //include the settings/configuration
?>
<?php if( !(isset( $_POST['login'] ) ) ) { ?>
    <?php 
    //else look at the database and see if he entered the correct details
    } else {

session_start();
$usr = new Users;
$usr->storeFormValues( $_POST );
if( $usr->userLogin() ) {
header( 'Location: cursos.php' ) ;
$_SESSION["loggedIn"] = true;
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];

这是我的用户类,它运行登录函数:

public function userLogin() {
$success = false;
try{
$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "SELECT * FROM users WHERE username = :username AND password = :password LIMIT 1";
$stmt = $con->prepare( $sql );
$stmt->bindValue( "username", $this->username, PDO::PARAM_STR );
$stmt->bindValue( "password", hash("sha256", $this->password . $this->salt), PDO::PARAM_STR );
$stmt->execute();  


$result = $sth->fetch(PDO::FETCH_ASSOC);

$success = true;
if ($result!==false) { // Check there is a match
    $_SESSION['userID']= $result['userID'];
}


$success = true;

$con = null;
return $success;
}catch (PDOException $e) {
echo $e->getMessage();
return $success;

代码工作正常我只想添加它,它将从数据库内的users表的列中获取userID值,并在用户插入后将其存储到$ _SESSION ['userID']。

那么任何想法如何在我的代码中达到这个目标?谢谢!

1 个答案:

答案 0 :(得分:0)

如果你只想要表中的UserID,你将不得不首先加载$stmt->fetch(),然后你可以将它存储在你的会话中。

所以在function userLogin()执行后执行:

$result = $stmt->fetch(PDO::FETCH_ASSOC);

如果找到用户,则$result将包含users表中的所有字段。所以:

if ($result!==false) { // Check there is a match
    $_SESSION['userID']= $result['userID'];
}