我正在尝试弄清楚如何拒绝用户登录我的网站,除非他们获得批准。我将我的网站设为私有,仅对我允许加入的人开放。任何人都可以注册,但一旦注册,他们就会获得 1 或"板凳"的权限/组级别。一旦我接受用户并更改权限级别,他们就可以登录了。
截至目前,我正在停止级别/组 1 用户并重定向回索引页面(他们登录的地方)。但是,我根本不想让他们前进到下一页。原因是我想显示某种弹出警报,显示我创建的消息。
我不确定我是否可以通过验证或我尝试的方式来做到这一点。我添加了我的登录代码,并尝试将我拥有的权限代码放在登录页面上,以尝试从一开始就停止它。基本上,如果用户尝试登录,脚本一旦看到权限级别在组"板凳"上就会死亡。然后显示弹出警报,说明原因。
我在这方面没有取得多大成功。我的组/权限级别具有名称和 ID。我尝试将两者放在这个单一的配额中,例如"板凳"和"1",但是两者都得到了相同的错误。
致命错误:在第 12 行的/home4/pfarley1/public_html/example.com/index.php 中的非对象上调用成员函数 hasPermission()
我正在尝试像这样登录它们...
<?php
if(Input::exists()) {
if(Token::check(Input::get('token'))) {
$validate = new Validate();
$validation = $validate->check($_POST, array(
'username' => array('required' => true),
'password' => array('required' => true)
));
// added this line in
if($user->hasPermission('1')) {
die($permissionError);}
if($validation->passed()) {
$user = new User();
$remember = (Input::get('remember') === 'on') ? true : false;
$login = $user->login(Input::get('username'), Input::get('password'), $remember);
if($login) {
Redirect::to('userIndex.php');
} else {
$tryagain = '<span class="signinpanel">' . "The information you entered did not match our records." . '</span>';
}
} else {
foreach($validation->errors() as $error) {
echo $error, '<br>';
}
}
}
}
?>
我的用户权限代码..
public function hasPermission($key) {
$group = $this->_db->get('groups', array('id', '=', $this->data()->group));
if($group->count()) {
$permissions = json_decode($group->first()->permissions, true);
if($permissions[$key] == true) {
return true;
}
}
return false;
}
我做错了什么,还是有更好的方法
?编辑:最后一个问题不够具体,所以我添加了信息,并且在我尝试执行此操作时对代码进行了修改。
第 12 行的$user
是什么?
if($user->hasPermission('1')) {
错误消息非常明确。