我想从数据库中获取用户组,然后检查它是否为2(这意味着它是管理员)。我目前有以下代码作为设置:
Login.php
<?php
//process login form if submitted
if(isset($_POST['submited'])){
$username = trim($_POST['username']);
$password = trim($_POST['password']);
if($user->login($username,$password)){
//logged in return to index page
$_SESSION['login'] = "$username";
header('Location: index.php');
exit;
} else {
$message = '<p class="error">Wrong username or password</p>';
}
}//end if submit
if(isset($message)) { echo $message; }
?>
<div class="lockscreen-credentials"> <form class="form-signin" role="form" method="post" action="">
<input type="text" class="form-control" name="username" placeholder="Username" required autofocus>
<div class="input-group">
<input type="password" class="form-control" placeholder="password" name="password" required/>
<div class="input-group-btn">
<button class="btn btn-flat" name="submited"><i class="fa fa-arrow-right text-muted"></i></button>
</div>
</div></form>
</div><!-- /.lockscreen credentials -->
这是被称为(class.user.php)的类:
public function login($username,$password){
$hashed = $this->get_user_hash($username);
*$st = $this->_db->prepare('SELECT userGroup FROM users WHERE username = :username');
$st->execute(array('userGroup' => 2));
$rows = $st->fetch();
if($st = 2) {
$_SESSION['loggedin'] = true;
return true;
}*
}
public function logout(){
session_destroy();
}
如您所见,我正在尝试检查星号(*)中的代码,该字段的值是否为2。如果是,那么我希望它登录。如果不是,我希望它重定向。我的错误是:
致命错误:D:***** \ classes \ class.user.php:42中的堆栈跟踪:#0 D:错误消息:未捕获的异常“ PDOException”,消息为“ SQLSTATE [HY093]:无效的参数编号:未定义参数” ****** \ classes \ class.user.php(42):PDOStatement-> execute(Array)#1 D:******* \ login.php(43):User-> login(' demo','demo')#2 {main}在第42行的D:******* \ classes \ class.user.php中抛出
在WHERE子句中分配正确的值
$st = $this->_db->prepare('SELECT userGroup FROM users WHERE username = :username');
$st->execute(array('username' => "some user name"));
$rows = $st->fetch();
if($rows['userGroup'] == 2) {
$_SESSION['loggedin'] = true;
return true;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句