我正在开发一个项目,我正在尝试分配两个变量,但是当我变换var_dump()时,我一直得到 NULL
我的代码:
user.php的
<?php
class TheUser
{
public $isMember = 0;
public $userID = 0;
public $info = [];
public $user_name = 'guest';
public function __construct()
{
global $mysqli,$config;
if($_SESSION['the_user'] &&mysqli_num_rows($query = mysqli_query($mysqli,'SELECT * FROM `users` WHERE `username` = \''.$_SESSION['the_user'].'\' '))) {
{
$this->info = mysqli_fetch_assoc($query);
$this->user_name = $this->info['username'];
$this->isMember = 1;
$this->userID = $this->info['id'];
}
}}
function LoginUser()
{
global $mysqli,$config,$_SESSION;
if($_SESSION['the_user']) {die('go away');}
if(!$_POST['username']) { die('username already exist'); }
if(!$_POST['password']) { die('password is required...'); }
if(!mysqli_num_rows($query = mysqli_query($mysqli,'SELECT `id`, `username`, `email`, `password` FROM `users` WHERE `username` = \''.$_POST['username'].'\''))) { die('0: El usuario ingresado no existe'); }
$r = mysqli_fetch_row($query);
if($r[3] != $_POST['password']) { die('0: La contraseña es incorrecta'); }
//if($r[3] != $_POST['password']){ die(' incorrect password'); }
$_SESSION['the_user'] = $r[1];
$theUser = $_SESSION['the_user'];
$this->isMember = 1;
$this->userID = $r[0];
die('ok');
}
}
然后我的控制器看起来像:
<?php
include __DIR__.'/../../header.php';
$templateToShow = 'login';
$WhatLevel = 0;
$isAjax = empty($_GET['ajax']) ? 0 : 1;
$KeepGoing = true;
$PageTitle = $config['title'];
if($_POST)
{
$ala = $LU->LoginUser();
}
//session_destroy();
var_dump($_SESSION['the_user']);
var_dump($isMember);
var_dump($userID);
if(empty($isAjax) && !$templateToShow)
{
echo $twig->render('index.twig.php');
}else{
echo $twig->render("$templateToShow.twig.php",[
]);
}
我知道没有安全实施YET ...我只是先这样做,所以我可以稍后解决。
我想做的是
将$ isMember指定为1
将$ userID分配给我从数据库中获取的用户ID
我不知道为什么,但我一直这样:
string(6)“admin”int(0)int(0) 如果我没有意义,我很抱歉,但现在是凌晨3点,我非常沮丧:/
答案 0 :(得分:2)
在你的代码中你使用$ _SESSION,所以你必须在每个php文件的开头添加session_start()
。
并且您希望在另一个文件的其他类中使用变量,因此您必须包含该文件并使用此代码
$user = new TheUser;
$user->$isMember