Witam, jestem początkujący i uczę się PHP.
Potrzebuję zrobić logowanie dla różnych grup użytkowników. Używając szukajki znalazłem taki temat
KLIK lecz nie pomógł mi za bardzo, bo wcześniej już miałem to zrobione.
W bazie mam kolumnę 'user_role' i tam nadane są numery określające grupę użytkownika. Jednak przy logowaniu jakby nie zczytuje roli użytkownika, nie potrafi tego rozdzielić. "User_role" jest typu int. Próbówałem varcharem, kombinowałem brać dane z tej kolumny w cudzysłów, apostrof. W zależności od wyboru logowało mnie gdzie indziej wciąż nie rozróżniając roli.
Mam nadzieję, że jasno opisałem swój problem.
Z góry dziękuję za wszelką pomoc i objaśnienia.
edit: 0 - dla zywkłego usera, 1 - dla pracownika, 2 - dla admina.
Jeśli ustawię wartość 0:
if ($_SESSION['user_role']==0)
{
header('Location: userlist.php'); } else { header('Location: index.php'); }
to loguje mnie do userlist.php, a każda inna wartość przenosi do index.php, niezależnie kto sięloguje. W bazie widzę, że role >0 są nadane.
Po id loguje poprawnie. Ale to wadzi, żeby zrobić logowanie dla trzech grup użytkowników.
<?php
include 'config.php';
db_connect();
// sprawdzamy czy user nie jest przypadkiem zalogowany
if(!$_SESSION['logged']) {
// jeśli zostanie naciśnięty przycisk "Zaloguj"
if(isset($_POST['name'])) { // filtrujemy dane...
$_POST['name'] = clear($_POST['name']);
$_POST['password'] = clear($_POST['password']);
// i kodujemy hasło
$_POST['password'] = codepass($_POST['password']);
// sprawdzamy prostym zapytaniem sql czy podane dane są prawidłowe
$result = mysql_query("SELECT `user_id` FROM `users` WHERE `user_name` = '{$_POST['name']}' AND `user_password` = '{$_POST['password']}' LIMIT 1"); // jeśli tak to ustawiamy sesje "logged" na true oraz do sesji "user_id" wstawiamy id usera
$_SESSION['logged'] = true;
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['user_role'] = $row['user_role'];
if ($_SESSION['user_role']==2) //admin
{
header('Location: userlist.php'); } else { header('Location: index.php'); }
} else {
echo '<p>Podany login i/lub hasło jest nieprawidłowe.</p>'; header("Refresh: 5; url=login.php"); }
} else {
$_POST['name'] = '';
$_POST['password'] = '';
$_POST['user_role'] = '';
}
// wyświetlamy komunikat na zalogowanie się
echo '<form method="post" action="login.php"> <p>
Login:<br>
<input type="text" value="'.$_POST['name'].'" name="name">
</p>
<p>
Hasło:<br>
<input type="password" value="'.$_POST['password'].'" name="password">
</p>
<p>
<input type="submit" value="Zaloguj">
</p>
</form>';
} else {
echo '<p>Jesteś już zalogowany, więc nie możesz się zalogować ponownie.</p> <p>[<a href="index.php">Powrót</a>]</p>';
}
db_close();
?>
Ten post edytował artur2233 18.12.2012, 20:25:43