Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]SESJA logowanie do PANELU
kielich
post
Post #1





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


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


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
gulldarek
post
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 15
Dołączył: 13.09.2003
Skąd: London

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
zelu
post
Post #3





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
bounty
post
Post #4





Grupa: Zarejestrowani
Postów: 68
Pomógł: 9
Dołączył: 12.04.2009
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


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. ?>


--------------------
<?php
while($earth){
drop_bomb();
}
?>
Go to the top of the page
+Quote Post
Spawnm
post
Post #5





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




  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

Ten post edytował Spawnm 1.05.2009, 15:46:15
Go to the top of the page
+Quote Post
bounty
post
Post #6





Grupa: Zarejestrowani
Postów: 68
Pomógł: 9
Dołączył: 12.04.2009
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


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...


--------------------
<?php
while($earth){
drop_bomb();
}
?>
Go to the top of the page
+Quote Post
Spawnm
post
Post #7





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




lepsze dał zelu tongue.gif
wszelkie dane w db i spr przy wejściu do panelu
Go to the top of the page
+Quote Post
kielich
post
Post #8





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


OK postanowiłem zrobić to co zelu powiedział i fajnie sie sprawuje smile.gif thx


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 09:15