所以我很忙于这个新的网站,因为它包括一个登录系统,而且我的设计者根本不知道任何PHP,所以我决定制作一个快速系统供他使用。我的设置功能实际上并没有设置变量
当他需要回显用户数据时,他将该属性放在百分号之间(例如%username%
。然后我的类为这些标签过滤文档,并用我给它们的值替换它们。像这样的PHP类:
public static function setUser($key, $value)
{
self::$user['%' . $key . '%'] = $value;
}
正如你所看到的,我称之为一个键和值这个功能,它被保存在一个数组,然后,我打电话parseParams
功能,其搜索页面这些标签功能:
private static function parseParams($content)
{
$userkeys = array_keys(self::$user);
$uservalues = array_values(self::$user);
self::$output = str_replace($userkeys, $uservalues, $content);
return self::$output;
}
输出是一个页面,因为我称之为render
函数。它在我调用的页面上执行了一个,然后该页面变为被解析的$ content变量。当我回应$output
变量时,我得到整个页面。
看起来很简单。现在,我的问题是没有设置任何变量。当我调用该函数的一个例子,就是当用户登录这里的登录功能:
public function Login()
{
$username = $_POST['username'];
$password = $_POST['password'];
$query = DB::$conn->prepare('SELECT username, password, rank FROM users WHERE username = ?');
$query->bind_param('s', $username);
$query->execute();
$query->bind_result($name, $pass, $rank);
$query->store_result();
if ($query->num_rows() > 0)
{
while ($query->fetch())
{
if (password_verify($password, $pass))
{
TPL::setUser('username', $username);
session_start();
define('LOGGEDIN', true);
header('Location: me');
exit();
}
else
{
$this->loginMessage[] = '{{wrongpass}}';
}
}
}
else
{
$this->loginMessage[] = '{{nouser}}';
}
}
我没有在文件的顶部定义TPL
类,命名空间的类下设:
use CRF\Template as TPL;
所以,我想这是一个很好的解决方案,并且它的工作,但只要我做var_dump(TPL::$user);
我得到一个空数组。
我的错误在哪里?
谢谢。
_Where_你把那个'的var_dump (TPL :: $用户);'? – Federkun
@Laxus我已经把它放在索引文件中,一切都在一起 –
你知道php是无状态的,对吗? 'TPL :: setUser('username',$ username);'你在Login()函数中拥有的永远不会被parseParams()解析。 – Federkun