Sesje i Administratorzy

Odpowiedz Nowy wątek
2007-10-09 14:38
kameell666
0

Napisałem prosty skrypt dla administratorów. Posiada on opcje czy administrator może wejść na daną stronę czy nie.
W bazie przy tworzeniu użytkownika jest albo 0 albo 1 przy danym dziale, co znaczy 0 że nie może wejść na tą stronę - 1 może.
Mam problem z sesjami, ponieważ nie umiem rozgraniczyć danych użytkowników, tzn. jeśli zaloguje się jeden użytkownik i w tym samym czasie drugi to ten drugi i/lub pierwszy oddziałowywują na siebie wzajemnie. Przypuszczam że muszę użyć identyfikatora sesji ale nie wiem dokładnie jak to zrobić może mi ktoś poradzić?. Poniżej przedstawiam kod.


    <?php

ob_start();
include ("../db.php");
session_start();

// Jeśli osoba się zaloguje pokaże górny pasek dla administratora
if ($_SESSION['autorize'] == 'Tak')
    {
include ("header.php");
    }
// Jeśli wpisano login i hasło i potwierdzono przyciskiem ok wykonuj dalej
if (($_POST['Login'] != '') && ($_POST['Password'] != '') && ($_POST['Ok'] == 'Przeslij'))
   {
    $Login = $_POST['Login'];
    $Password = $_POST['Password'];
    }
// Jeśli wypełniono pola formularza rozpocznij pętle wyszukania użytkownika
        if ((isset($Login)) && (isset($Password)))
         {
          $Autoryzacja = mysql_query('SELECT * FROM autoryzacja');
          while($Autorize = mysql_fetch_array($Autoryzacja))
           {
// Jeśli znaleziono użytkownika zobacz jakie ma ID i wybierz dla niego odpowiednie wartości
        if (($Autorize['login'] == $Login) && ($Autorize['password'] == $Password) && ($Autorize['id'] != ''))
           {
            $Uzytkownik = mysql_query("SELECT * FROM autoryzacja WHERE id=$Autorize[id]");
            $Uzytkownik_ID = mysql_fetch_array($Uzytkownik);
// Przypisywanie czy jest autoryzacja i do jakich działów ma dostęp
            $_SESSION['autorize'] = 'Tak';
            $_SESSION['onas'] = $Uzytkownik_ID['onas'];
            $_SESSION['ewydanie'] = $Uzytkownik_ID['ewydanie'];
            $_SESSION['reklama'] = $Uzytkownik_ID['reklama'];
            $_SESSION['prenumerata'] = $Uzytkownik_ID['prenumerata'];
            $_SESSION['kontakt'] = $Uzytkownik_ID['kontakt'];
            $_SESSION['wiadomosci'] = $Uzytkownik_ID['wiadomosci'];
            $_SESSION['wnumerze'] = $Uzytkownik_ID['wnumerze'];
            $_SESSION['ksiazkiidodatki'] = $Uzytkownik_ID['ksiazkiidodatki'];
            $_SESSION['pietnascielat'] = $Uzytkownik_ID['pietnascielat'];
            $_SESSION['dzienpolskiejfarmacji'] = $Uzytkownik_ID['dzienpolskiejfarmacji'];
            $_SESSION['szkolenia'] = $Uzytkownik_ID['szkolenia'];
            $_SESSION['redaktorpolecatekst'] = $Uzytkownik_ID['redaktorpolecatekst'];
            $_SESSION['redaktorpolecagrafika'] = $Uzytkownik_ID['redaktorpolecagrafika'];
            $_SESSION['olowkiem'] = $Uzytkownik_ID['olowkiem'];
            $_SESSION['obiektywem'] = $Uzytkownik_ID['obiektywem'];
            $_SESSION['adm_wiadprzewijane'] = $Uzytkownik_ID['adm_wiadprzewijane']; // !
            $_SESSION['adm_pozycjonowanie'] = $Uzytkownik_ID['adm_pozycjonowanie']; // !
            $_SESSION['adm_ustawienia'] = $Uzytkownik_ID['adm_ustawienia']; // !
            $_SESSION['adm_reklama'] = $Uzytkownik_ID['adm_reklama']; // !
           }
          }
         }

switch( $_REQUEST['edycja'] )
        {
    case "z_informacja":
        include ("z_informacja.php");
    break;
        case "w_przewijane":
        include ('w_przewijane.php');
    break;
        case "pozycja":
    include ('pozycja.php');
    break;
        case "ustawienia":
        include ('ustawienia.php');
    break;
        case "reklama":
        include ('reklama.php');
    break;
        case "info":
        include ('info.php');
    break;
        case "wyloguj":
        session_unset();
        header("Location: index.php");
    exit;
        }
ob_end_flush(); ?>

<center>

<!-- Jeśli nie ma autoryzacji wyswietlaj formularz -->

<?php if ($_SESSION['autorize'] != 'Tak') { ?>

<form method="POST" action="">
        <a href="../index.php"><font face="Verdana" style="font-size: 9pt" color="#CC3300">Powrot do srony glownej</a></font><br>
    <br><font face="Verdana" style="font-size: 9pt" color="#CC3300">Login: <input type="text" name="Login" size="20"><br>
    Haslo: <input type="text" name="Password" size="20"><br>
    <input type="submit" value="Przeslij" name="Ok"><input type="reset" value="Resetuj" name="Reset"></font>
</form>

<?php   } ?>

<!-- Tutaj już warunki, w przypadku niektórych czynności -->
<?php if ($_SESSION['autorize'] != 'Tak') { ?>

<?php if (($Password == '') || ($Login == '') && ($_POST['Ok'] == 'Przeslij'))
         {
          echo '<font face="Verdana" style="font-size: 9pt" color="#CC3300">Nic nie wpisano, prosze wpisac nazwe uzytkownika oraz haslo</font>';
         }

      if (($_SESSION['autorize'] == false) && ($Login != '') && ($Password != ''))
         {
          echo '<font face="Verdana" style="font-size: 9pt" color="#CC3300">Podano zly login lub haslo</font>';
         }
         } ?>

<?php if (($_SESSION['autorize'] == 'Tak') && ($Password != '') && ($Login != '')) { echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=index.php">'; } ?>
<!-- Tutaj już warunki, w przypadku niektórych czynności -->
    </center>

[b]Następnie na kolejnych stronach dodałem odpowiednio dla konkretnych działów - tutaj np. dział reklama:[/b]

if (($_SESSION['adm_reklama'] == '0') || ($_SESSION['adm_reklama'] == ''))
    {
     echo '<br><center><font face="Verdana" style="font-size: 9pt" color="#CC3300">Nie masz dostepu do tej strony, skontaktuj sie z administratorem</font></center>';
    }

if ($_SESSION['adm_reklama'] == '1')
    {
echo 'Zawartosc strony.....';
    }
?>

Pozostało 580 znaków

2007-10-13 20:28
0

To jest bez sensu:

if ((isset($Login)) && (isset($Password)))

Przeciez robisz:

    $Login = $_POST['Login'];
    $Password = $_POST['Password'];

Wiec zmienne Login i Password będą na pewno istniec. Jak juz to sprawdz wartosc tych zmiennych.

A co do pytania to moze po prostu zapisz id kolesia co sie loguje w sesji a pozniej sprawdz czy jest administratorem.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0