@Dmax99

Как записать в сессию доп параметры с БД?

Здравствуйте! Заранее оговорюсь, в php нуб.
Хочу записать в сессию помимо имени и времени, еще дополнительные параметры, такие как ИД и Роль пользователя.
Хочу сделать разделение по правам доступа, чтобы ограничить части админки от пользователей.

Насколько я понимаю, сессия формируется в файле Логин.
// if user click Login button
	if(isset($_POST['btnLogin'])){
	
		// get username and password
		$username = $_POST['username'];
		$password = $_POST['password'];
		
		// set time for session timeout
		$currentTime = time() + 25200;
		$expired = 3600;
		
		// create array variable to handle error
		$error = array();
		
		// check whether $username is empty or not
		if(empty($username)){
			$error['username'] = "*Username should be filled.";
		}
		
		// check whether $password is empty or not
		if(empty($password)){
			$error['password'] = "*Password should be filled.";
		}
		
		// if username and password is not empty, check in database
		if(!empty($username) && !empty($password)){
			
			// change username to lowercase
			$username = strtolower($username);
			
			//encript password to sha256
		    $password = hash('sha256',$username.$password);
			
			// get data from user table
			$sql_query = "SELECT * 
				FROM tbl_user 
				WHERE username = ? AND password = ?";
						
			$stmt = $connect->stmt_init();
			if($stmt->prepare($sql_query)) {
				// Bind your variables to replace the ?s
				$stmt->bind_param('ss', $username, $password);
				// Execute query
				$stmt->execute();
				/* store result */
				$stmt->store_result();
				$num = $stmt->num_rows;
				// Close statement object
				$stmt->close();
				if($num == 1){
					$_SESSION['user'] = $username;
					
					$_SESSION['ID'] = $ID; 
					$_SESSION['Role'] = $Role;
					
					$_SESSION['timeout'] = $currentTime + $expired;
					header("location: dashboard.php");
				}else{
					$error['failed'] = "Invalid Username or Password!";
				}
			}
			
		}	
	}

А как добавить ID и Role?
И если оно будет записываться, то как потом распределить показ ссылок в соответствии ролям??
Извините за тупые вопросы, сам просто уже не тяну... Заранее спасибо!
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dagababaev
// Начинаем работу с сессиями
session_start();
$type_of_user = '';

// Проверяем, если в сессии нет ID или Role – просим авторизоваться
if (!$_SESSION['ID'] || !$_SESSION['Role']) {
  // Здесь код / переброс на аторизвцию
  die('Auth needed');
}

// Далее на примере Role, но под ID просто нужно расширить проверки
// Соответсвенно если данные в БД, получаете из нее роль об текущей $_SESSION['Role']
If ($_SESSION['Role'] == "admin") {
 // Если это админ
 $type_of_user = 'admin';
}

$menu = '';

if ($type_of_user == 'admin') {
    $menu .= '<a href="#">Admin Link 1</a><br>'; 
    $menu .= '<a href="#">Admin Link 2</a><br>';
    $menu .= '<a href="#">Admin Link 3</a><br>'; 
    $menu .= '<a href="#">Admin Link 4</a><br>';  
} else {
    $menu .= '<a href="#">Link 1</a><br>'; 
    $menu .= '<a href="#">Link 2</a><br>';
    $menu .= '<a href="#">Link 3</a><br>'; 
    $menu .= '<a href="#">Link 4</a><br>';  
}

echo $menu;


Соответсвенно при формировании меню из БД вам нужно добавить доп. свойство – Role и делать выборку по роли. Как-то так…
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы