Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]SESJA logowanie do PANELU
Forum PHP.pl > Forum > Przedszkole
kielich
Witam mam mały problem z logowanie do PA jako admin o to czesc kodu
Kod
if (isset($_POST['akcja'])==1){
if (isset($_POST['login']) and isset($_POST['haslo']) )
{
$login = htmlspecialchars(strip_tags(mysql_real_escape_string($_POST['login'])));

$haslo = htmlspecialchars(strip_tags(mysql_real_escape_string(sha1($_POST['haslo']))));

if ($login!="" and $haslo!="")

{

   $zapytanie = "SELECT login, haslo FROM admin_log WHERE login = '$login' and haslo = '$haslo' ";

    $temp=mysql_query($zapytanie) or die ('Nie mozna wykonanac.Przepraszamy');

     $ile=mysql_num_rows($temp);

    $temp=mysql_fetch_array($temp);

    $id=$temp['login'];

if ($ile!=0)

    {
$_SESSION['login']=$login;
     header("Location: panel.php");
    exit;
     }

i tu sprawdzanie sesji
Kod
session_start();
ob_start();
require_once 'conn.php';
if(isset($_SESSION['login'])== 1){
header("Location: index.php");
}else{


Problem jest taki ze wszystko sie loguje ładnie ale jesli uzytkownik zaloguje sie na froncie jako zwykly user i przejdzie do admina to ma cały panel i nie wiem jak okreslic ze tylko dostep jesli login bedzie admin
(admin trzymam w osobnej tabeli)

bardzo prosze o pomoc
gulldarek
Dodaj sobie do sesji jeszcze jedna zmienna, np. admin, zwykli uzytkownicy beda mieli ja ustawiona na false, a admini true. Pozniej w panelu sprawdz czy $_SESSION['admin'] == true
zelu
Błąd polega na tym, że nie masz żadnego rozgraniczenia na zwykłego usera i admina. W swoim skrypcie sprawdzasz tylko czy istnieje dany login i czy hasło się zgadza. Jeśli tak, to ustawiasz flagę na "zalogowany'. Później w panelu sprawdzasz tylko czy ktoś jest zalogowany i wpuszczasz go dalej. Wiec najlepiej do tabeli gdzie masz użytkowników dodaj pole 'uprawnienia' (albo cos podobnego) gdzie domyślnie jest 0 (zwykły user), a administratorom nadajesz np 1. No i przy zalogowaniu sprawdzasz poza czy jest ustawiona odpowiednia zmienna na 1 (admin) i wpuszczasz go dalej. Jeśli nie to komunikat "brak praw dostępu".
W sposób opisany wyżej możesz zrobić również prawa dla moderatora itp.

Pozdrawiam
bounty
Jeżeli w tej osoblej tabeli masz tylko loginy adminów to zrób tak w panelu admina
  1. <?php
  2. $login = $_SESSION['login'];
  3. /*
  4. logowanie do sql
  5. */
  6. $q = "SELECT * from admins where login = '$login'"; //admins zmien na nazwe tabeli adminów
  7. $r = mysql_query($q);
  8. if(mysql_fetch_assoc($r)){ //sprawdzenie czy w tabeli istenieje admin o podanym loginie
  9. echo 'OK :)'; // jest przynajmniej jeden rekord (admin) o podanym loginie
  10. } else {
  11. echo 'Niestety nie jestes adminem :('; // nie ma ani jednego rekordu o podanym loginie czyli osoba nie jest adminem tongue.gif
  12. }
  13. ?>
Spawnm
  1. <?php
  2. $r = mysql_query($q);
  3. ?>

Jeśli już to mysql_num_rows ...
a najlepiej to SELECT COUNT(*) FROM , i mysql_result" title="Zobacz w manualu PHP" target="_manual
bounty
To też się sprawdza tongue.gif


Najlepiej to dodaj kolumnę level albo coś takiego i daj w niej 0 - user 1 - admin
potem przy logowaniu sprawdzasz czy jest 1 czy 0 (admin czy user) i przypisujesz do $_SESSION['level'] i w panelu admina dajesz tylko
  1. <?
  2. if($_SESSION['level']==1){
  3. //jesli jest adminem
  4. } else {
  5. //jesli jest userem
  6. }
  7. ?>

to chyba najlepsze rozwiązanie...
Spawnm
lepsze dał zelu tongue.gif
wszelkie dane w db i spr przy wejściu do panelu
kielich
OK postanowiłem zrobić to co zelu powiedział i fajnie sie sprawuje smile.gif thx
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.