我需要在登录时从数据库添加用户级别,不幸的是我做错了因为它根本不工作。我的代码如下:
public $username = null;
public $password = null;
public $salt = "Zo4rU5Z1YyKJAASY0PT6EUg7BBYdlEhPaNLuxAwU8lqu1ElzHv0Ri7EM6irpx5w";
public function __construct( $data = array() ) {
if( isset( $data['username'] ) ) $this->username = stripslashes( strip_tags( $data['username'] ) );
if( isset( $data['password'] ) ) $this->password = stripslashes( strip_tags( $data['password'] ) );
}
public function storeFormValues( $params ) {
//store the parameters
$this->__construct( $params );
}
登录功能
public function userLogin() {
$success = false;
try{
$con = new PDO( DB_HOST, DB_USER, DB_PASS );
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "SELECT * FROM users WHERE username = :username AND password = :password LIMIT 90";
$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();
$valid = $stmt->fetchColumn();
$_SESSION['username'] = $this->username;
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$_SESSION['level'] = $rows[0]['userID'];
$_SESSION['id'] = "6";
if( $valid ) {
$success = true;
}
$con = null;
return $success;
}catch (PDOException $e) {
echo $e->getMessage();
return $success;
}
}
Sumary :
我需要什么:当用户登录时,从数据库表中获取他的级别并将其添加到$ _SESSION [' level']
我得到了什么错误:我没有得到任何错误,会话级别被清空了
问题在哪里:说实话我不知道,没有收到任何错误,所以我不知道我做错了所以我希望得到一些建议或解释
print_r of my $_SESSION:
Array ( [username] => michal [id] => 6 [loggedin] => 1 [level] => )
答案 0 :(得分:0)
在编写会话之前,您应首先启动它:
您应该使用fetch()
因为它是一行。
$stmt->execute();
if($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
session_start();
$_SESSION['username'] = $this->username;
$_SESSION['level'] = $row['userID'];
$_SESSION['id'] = "6";
return true;
}
public function userLogin() {
try{
$con = new PDO( DB_HOST, DB_USER, DB_PASS );
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "SELECT * FROM users WHERE username = :username AND password = :password LIMIT 90";
$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();
if($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
session_start();
$_SESSION['username'] = $this->username;
$_SESSION['level'] = $row['userID'];
$_SESSION['id'] = "6";
return true;
}else{
return false;
}
$con = null;
return $success;
}catch (PDOException $e) {
echo $e->getMessage();
return false;
}
}