我正在执行登录系统,我想在验证用户身份时显示欢迎消息。我解释。
这是数据库:
用户登录时使用用户名,但我想在欢迎消息中显示其名字。
我拥有的功能是选择登录用户名的所有信息。
LoginManager.php
public function obtenirDades($usuari)
{
//Obtenim les dades de la base de dades
$sql = " SELECT * FROM erp_user WHERE username = '$usuari'";
$cons = (BdD::$connection)->prepare($sql);
$ok = $cons->execute();
$cons->setFetchMode(PDO::FETCH_ASSOC);
$resultat = $cons->fetchAll();
/*var_dump($resultat);
die();*/
return $resultat;
}
然后在LoginController.php中,我获得$ _POST信息,调用该函数以显示数据库信息,并使用LDAP验证用户。
LoginController.php
<?php
if (!isset($_SESSION))
{
session_start();
}
class LoginController extends Controller
{
public function process($params)
{
//EN EL LOGIN VALIDEM L'USUARI I CONTRASENYA
if (isset($_POST["login"])) {
/*HERE WE INSTANTIATE LOGINMANAGER SO WE CAN USE IT'S FUNCTIONS*/
$manager = new LoginManager();
/*WE OBTAIN THE POST DATA*/
$usuari = $_POST["usuari"];
$password = $_POST["password"];
//HERE WE USE THE FUNCTION TO OBTAIN INFORMATION FROM THE DATABASE
$dds = $manager->obtenirDades($usuari); `WE`
@$this->data["erp_users"] = $dds[0]["firstname"];
if($manager->valida($usuari, $password)){
//validació de ldap i redirecció si es professor o alumne
if ($manager->valida($usuari, $password) && $dds[0]["type"] == "PROFESSORS") {
$_SESSION["username"] = $usuari;
var_dump($dds);
die();
header("Location: professor");
} elseif ($manager->valida($usuari, $password) && $dds[0]["type"] == "ALUMNES") {
$_SESSION["username"] = $usuari;
header("Location: alumne");
} else {
header("Location: login");
}
}else{
echo "<div class='error'>USUARI i/o CONTRASENYA INCORRECTES! </div>";
}
}
//Destrium la session
if (isset($_POST['logout'])) {
session_destroy();
unset($_SESSION['username']);
header('location:login');
}
$this->getLogin();
}
//Funció que ens retorna la vista de login
public function getLogin()
{
$this->twig = "login.html";
}
}
当我执行var_dumb($ dds)时,我得到了:
也在 ProfessorController.php 中,我必须通过$ _SESSION,以便可以在Professor.html中获得名字
<?php
if (!isset($_SESSION)) {
session_start();
}
class ProfessorController extends Controller{
public function process($params)
{
/*var_dump($params);
die();*/
if(empty($params[0])){
/*echo $_SESSION["username"];*/
$this->getProfessor();
}elseif(isset($params[0]) && $params[0] == "crearNivell"){
$this->twig = "crearNivell.html";
}
}
public function getProfessor(){
$this->twig = "professor.html";
}
}
那么我该如何创建一个具有名字的$ _SESSION以便在我的视图中显示它?
答案 0 :(得分:1)
您的会话数据包含用户名。您需要使用名字创建会话。函数obtenirDades()返回多行,因为您正在使用fetchAll()方法。由于它是一个登录函数,因此请使用fetch()方法,该方法将返回单个键/值数组。然后,要存储在会话中,请执行以下操作
$_SESSION["firstname"] = $dds['firstname'];
答案 1 :(得分:0)
我找到了解决方法:
添加一个变量以存储所有数据:
$var = @$this->data["erp_users"] = $dds[0]["firstname"];
然后在会话中:
$_SESSION["username"] = $var;