Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wejście na stronę użytkowników z różnymi uprawnieniami
Forum PHP.pl > Forum > Przedszkole
talia
Witam, mam taki kłopot:
robię dziennik lekcyjny na bazie danych. Jest logowanie i sesja. Mam 3 typy użytkowników: uczeń, rodzic,nauczyciel.
Zrobiłam logowanie. Działa - jeśli użytkownik nie jest zalogowany, wyrzuca go na stronę główną. Ale problem jest, jeśli jest zalogowany jako uczeń, wejdzie na swoją strone i "z palca" w adresie strony podmieni show_pupil na show_teacher. Wtedy pokazuje mu panel nauczyciela.

Czyli powinnam chyba oprócz sprawdzenia czy użytkownik jest zalogowany także sprawdzić uprawnienia. Kombinuję, ale nie działa. Za uprawnienia odpowiada kolumna ident_function w tabeli user.
1-uczen
2-rodzic
3-nauczciel

[PHP] pobierz, plaintext

<?php
session_start();

//logowanie do bazy

$mail = $_POST['mail'];
$password = $_POST['password'];

$query = "SELECT * FROM `user` WHERE mail='$mail'";
$result = mysql_query($query, $db_link)
or die ("Błąd w zapytaniu\n");

$liczba_wierszy=mysql_num_rows($result);

$row = mysql_fetch_array($result);
if($row)
{
if(md5($password) == $row['password'])
{

$_SESSION['id_user'] = $row['id_user'];

$result=$row['ident_function'];

switch($result) {
case 3:
header("Location: baza_show_teacher.php");
break;
case 2:
header("Location: baza_show_parent.php");
break;
case 1:
header("Location: baza_show_pupil.php");
break;
default:
print ("Skontaktuj sie z administratorem");
break;
}
}
else{
echo('Błędne hasło!');
}
}
else{
echo('Konto nie istnieje!');
}
mysql_close();
?>

[PHP] pobierz, plaintext



oraz wyświetlanie danych na stronie:

[PHP] pobierz, plaintext

<?php
session_start();
if(!isset($_SESSION['id_user']))
{
include('index2.php');
exit();
}

$user = $_SESSION['id_user'];
?>

[PHP] pobierz, plaintext



i dalej zapytania sql...
jahonen
ident_function wrzuć do sesji
row["ident_function"] = $_SESSION["prawo"];
switch($_SESSION["prawo"])
{
case 1:
echo "tekst dla ucznia";
break;
case 2:
echo "tekst rodzica";
break;
case 3:
echo "tekst nauczyciela";
break;
}

tutaj nie da się wpisać z palca
talia
Dziękuję za podpowiedź. Ale właśnie że "kumaty uczeń" wejdzie na stronę nauczyciela. Po zalogowaniu na ucznia przerzuca mnie na stronę z koncówką adresu baza_show_pupil. Tutaj w adresie poprawiam ręcznie na baza_show_teacher i wchodzę na stronkę nauczyciela. Bo jestem zalogowana przecież. Chodzi mi o to, jak na początku każdej strony należy ją zabezpieczyć, oprócz:

  1. <?php
  2. if(!isset($_SESSION['id_user']))
  3. {
  4. include('index2.php');
  5. exit();
  6. }
  7.  
  8. $user = $_SESSION['id_user'];
  9. ?>


?
Damonsson
  1. if(!isset($_SESSION['id_user']) || $row['ident_function'] != 3 (lub 2 lub 1 zależy jakie ma mieć uprawienia))
  2. {
  3. include('index2.php');
  4. exit();
  5. }
talia
Cytat(Damonsson @ 14.06.2014, 23:50:11 ) *
  1. if(!isset($_SESSION['id_user']) || $row['ident_function'] != 3 (lub 2 lub 1 zależy jakie ma mieć uprawienia))
  2. {
  3. include('index2.php');
  4. exit();
  5. }


Jest reakcja, tylko nie taka, jak oczekiwano. Teraz w ogóle nie wyświetla ocen np. ucznia i przekierowuje na stronę index2.php. Nie umiem dojść, czego jeszcze tu brakuje.
Zmienna $row['ident_function'] pojawia się w pliku logowanie, więc na kolejnej stronie powinien ją znać.

Działa arrowheadsmiley.png
W pliku logowanie do $_SESSION['id_user'] = $row['id_user'] dodałam $_SESSION['ident_function'] = $row['ident_function'];
I przy wejściu na stronę ucznia jest:
if(!isset($_SESSION['id_user'])|| ($_SESSION['ident_function'])!=1)
{
include('index2.php');
exit();
}

Dzięki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.