gpt4 book ai didi

php - 登录后根据user_level问题重定向到页面

转载 作者:行者123 更新时间:2023-11-29 15:45:08 26 4
gpt4 key购买 nike

enter image description here

如果这个问题之前已经讨论过,但在拖网后似乎无法找到答案,我深表歉意。

我的问题是:有没有一种简单的方法可以在用户登录后根据用户级别访问其自己的特定页面来重定向用户?即具有管理员访问权限的登录者会重定向到例如 admin.php,或者类似地,具有访问者访问级别的访问者会立即重定向到 acceuil.php

if(!empty($_POST["login"])){
//Retrieve the field values from our login form.
$username = !empty($_POST['username']) ? trim($_POST['username']) : null;
$passwordAttempt = !empty($_POST['password']) ? trim($_POST['password']) : null;

// $passwordAttempt = sha1($passwordAttempt);

//Retrieve the user account information for the given username.
$sql = "SELECT id, username, password, role FROM users WHERE username = :username ";

$stmt = $pdo->prepare($sql);
$stmt->bindValue(':username', $username);
$stmt->execute();

$user = $stmt->fetch(PDO::FETCH_ASSOC);
$query = $pdo->prepare($sql);

$stmt->bindValue(':username', $username);
$stmt->execute();

$user = $stmt->fetch(PDO::FETCH_ASSOC);
$pdo_statement = $pdo->prepare("SELECT role FROM users WHERE username = :username AND password=:password ");
$result = $pdo_statement->fetchAll();

if($user === false){
die('Incorrect username !!');
} else{
//Compare the passwords.
$validPassword = password_verify(($passwordAttempt), $user['password']);

//If $validPassword is TRUE, the login has been successful.
if(($passwordAttempt)===$user['password']){
//Provide the user with a login session.
$_SESSION['user_id'] = $user['id'];
$_SESSION['logged_in'] = time();

header('Location: core/acceuil.php');
exit;
} else {
//$validPassword was FALSE. Passwords do not match.
die(' password combination!');
}
}
}

最佳答案

您可以根据角色的切换进行重定向。不过,您当前的代码相当困惑,并且似乎并未实际使用 password_verify() 并且您运行了多个查询,因此我对其进行了一些重构。

<?php 
if(!empty($_POST["login"])){
//Retrieve the field values from our login form.
$username = !empty($_POST['username']) ? trim($_POST['username']) : null;
$password = !empty($_POST['password']) ? trim($_POST['password']) : null;

//Retrieve the user account information for the given username.
$sql = "SELECT id, username, password, role FROM users WHERE username = :username ";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':username', $username);
$stmt->execute();
ïf ($row = $stmt->fetch(PDO::FETCH_ASSOC) && password_verify($password, $row['password'])) {
//Provide the user with a login session.
$_SESSION['user_id'] = $user['id'];
$_SESSION['logged_in'] = time();

switch ($row['role']) {
case 'admin':
$url = 'admin.php';
break;
default:
$url = 'acceuil.php';
}

header('Location: core/'.$url);
exit;
} else {
die('Incorrect username or password');
}
}

关于php - 登录后根据user_level问题重定向到页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57142522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com