Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]niedziałający warunek na admina.
GoOx
post 6.01.2012, 10:21:53
Post #1





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


Cześć biggrin.gif

Mam panel logowania oraz rejestracji stworzyłem coś co miało działać jak ranga admin czyli poziom 3 w tabeli..

przy logowaniu dodałem taką linijkę.

  1. $loginl = $_SESSION['uzytkownik'];

$loginl to zmienna z pola z nazwą użytkownika.
jest ona wstawiona w warunku zaraz po zalogowaniu.

skrypt który miał działać dla poziomu 3.

  1. $_SESSION['uzytkownik'] = $uzytkownik;
  2. $poziom = "SELECT poziom FROM uzytkownicy WHERE nick = '$uzytkownik' ";
  3. $res = mysql_query($poziom);
  4. $admin = mysql_fetch_row($res);
  5. if($admin[0] == "3") {
  6. if($_SESSION['admin']=='tak');
  7. }
  8. if($_SESSION['admin']=='tak') {
  9. echo "admin";
  10. }
  11.  

napis "admin" nie wyświetla się nie wiem nawet w czym jest problem sad.gif



Proszę o pomoc.

Ten post edytował GoOx 6.01.2012, 10:21:44
Go to the top of the page
+Quote Post
lobopol
post 6.01.2012, 10:29:12
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


if($_SESSION['admin']=='tak'); linia 6 nie powinno być
  1. $_SESSION['admin']='tak';


--------------------
Go to the top of the page
+Quote Post
vokiel
post 6.01.2012, 10:30:03
Post #3





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Dziwny kod..

  1. $_SESSION['uzytkownik'] = $uzytkownik;
  2. $poziom = "SELECT poziom FROM uzytkownicy WHERE nick = '$uzytkownik' ";
  3. $res = mysql_query($poziom);
  4. $admin = mysql_fetch_row($res);
  5. print_r($admin); // zobacz co dostales z bazy
  6. if($admin[0] == "3") {
  7. // co to jest? if($_SESSION['admin']=='tak');
  8. // chyba miało być:
  9. $_SESSION['admin']='tak';
  10. }
  11. if($_SESSION['admin']=='tak') {
  12. echo "admin";
  13. }


--------------------
Go to the top of the page
+Quote Post
GoOx
post 6.01.2012, 10:43:21
Post #4





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


Problem w tym że nie wiem czy pobieranie nazwy użyt do sesji działa.

kod który daliście mi nic nie pokazuje.

print_r nic nie pokazuje nawet echo nic nie pokazuje to chyba nazwa użyt nie jest w sesji.

to jest logowanie.php

  1. <?
  2. include('polaczenie.php');
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  5. "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <title>Untitled Document</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  10. </head>
  11. <body>
  12. Logowanie:</br>
  13. <form action="logowanie.php?loguje" method="post">
  14. Login:<input type="text" name="loginl"></br>
  15. Haslo:<input type="password" name="haslol"></br>
  16. <input type="submit" name="zaloguj" value="Zaloguj">
  17. </form>
  18. <?
  19. $loginl = $_POST['loginl'];
  20. $haslol = $_POST['haslol'];
  21. $haslom = md5($haslol);
  22. if(isset($_POST['zaloguj'])){
  23. $spr = "SELECT nick FROM uzytkownicy WHERE nick = '$loginl' ";
  24. $sprhaslo = "SELECT haslo FROM uzytkownicy WHERE nick = '$loginl' ";
  25. $res = mysql_query($spr);
  26. $danelogin = mysql_fetch_row($res);
  27. $res1 = mysql_query($sprhaslo);
  28. $danehaslo = mysql_fetch_row($res1);
  29. if(($loginl == $danelogin[0]) && ($haslom == $danehaslo[0]))
  30. {
  31. $_SESSION['zalogowany']='tak';
  32. echo " zalogowano ";
  33. $loginl = $_SESSION['uzytkownik'];
  34. echo '<script>location.href="index.php";</script>';
  35.  
  36. }
  37. else
  38. {
  39. echo "Logowanie nieudane";
  40. }
  41. }
  42. ?>
  43. </body>
  44. </html>


Ten post edytował GoOx 6.01.2012, 10:46:12
Go to the top of the page
+Quote Post
lobopol
post 6.01.2012, 10:46:57
Post #5





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


daj
  1. var_dump($uzytkownik);
  2. var_dump($_SESSION['uzytkownik']);

przed
  1. $_SESSION['uzytkownik'] = $uzytkownik;

i podaj wynik


--------------------
Go to the top of the page
+Quote Post
GoOx
post 6.01.2012, 10:53:15
Post #6





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


to mam napis zalogowano i NULL NULL

Proszę o pomoc.
Go to the top of the page
+Quote Post
lobopol
post 6.01.2012, 10:54:05
Post #7





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Czyli widzisz, że masz złe zmienne.
W tym momencie sprawdzasz czy użytkownik o loginie zalogowany jest adminem
  1. SELECT poziom FROM uzytkownicy WHERE nick = 'zalogowany';

masz


Ten post edytował lobopol 6.01.2012, 10:55:55


--------------------
Go to the top of the page
+Quote Post
GoOx
post 6.01.2012, 10:58:32
Post #8





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


nie działa ;/ skąd się wzięło to zalogowany?
Go to the top of the page
+Quote Post
lobopol
post 6.01.2012, 11:00:45
Post #9





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


A skąd mamy wiedzieć co do tego przypisałeś? Nie mamy całego skryptu, a to co podałem to jest zapytanie jakie w tym momencie puszczasz


--------------------
Go to the top of the page
+Quote Post
GoOx
post 6.01.2012, 11:04:14
Post #10





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


Proszę.
index.php
  1. <?
  2. include('polaczenie.php');
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  5. "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <title>Untitled Document</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  10. </head>
  11. <body>
  12. <form method="GET">
  13. <a href="rejestracja.php">Rejestracja</a>
  14. <a href="logowanie.php">Zaloguj sie</a>
  15. </form>
  16. <?
  17. if(isset($_GET['zalogowany']) && $_GET['zalogowany']=='wyloguj')
  18. {
  19. $_SESSION['zalogowany']='';
  20. }
  21. if($_SESSION['zalogowany']=='tak') {
  22. ?>
  23. Tresc widoczna tylko dla zalogowanego.
  24. <?
  25. }
  26. if($_SESSION['zalogowany']=='tak')
  27. {
  28. echo '<br /><br /><a href="index.php?zalogowany=wyloguj" name="wyloguj">Wyloguj</a>';
  29. }
  30. if(isset($_GET['wyloguj'])){
  31. }
  32. $_SESSION['uzytkownik'] = $uzytkownik;
  33. $poziom = "SELECT poziom FROM uzytkownicy WHERE nick = '$uzytkownik'";
  34. $res = mysql_query($poziom);
  35. $admin = mysql_fetch_row($res);
  36. if($admin[0] == "3") {
  37. $_SESSION['admin']='tak';
  38. }
  39. if($_SESSION['admin']=='tak') {
  40. echo "admin";
  41. }
  42.  
  43. ?>
  44. </body>
  45. </html>
  46.  


logowanie.php jest powyżej.
Go to the top of the page
+Quote Post
lobopol
post 6.01.2012, 11:07:20
Post #11





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


  1. $_SESSION['uzytkownik'] = $uzytkownik;

Przypisujesz nieistniejącą zmienną użytkownik do sesji i to sprawdzasz


--------------------
Go to the top of the page
+Quote Post
GoOx
post 6.01.2012, 11:08:53
Post #12





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


Wiec jak zrobić by zmienna użytkownik zaistniała w sesji?
Go to the top of the page
+Quote Post
lobopol
post 6.01.2012, 11:16:13
Post #13





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Czytaj ze zrozumieniem, nigdzie nie masz przypisanej żadnej wartości do zmiennej $uzytkownik, ogólnie wszystko masz pokręcone gdzie ty masz przypisanie czegokolwiek również do $_SESSION['uzytkownik'] popatrz sobie na kolejności przypisywania zmiennych..


--------------------
Go to the top of the page
+Quote Post
GoOx
post 6.01.2012, 11:52:27
Post #14





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


$_SESSION['uzytkownik'] = $uzytkownik;

a to więc jest co? do zmiennej z sesji jest przypisana w logowaniu wartość zalogowanego.
Go to the top of the page
+Quote Post
lobopol
post 6.01.2012, 12:09:38
Post #15





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


a co masz w $uzytkownik nic...
Jedyne użycie jakie zauważyłem $_SESSION['uzytkownik'] poza przypisaniem do niego nieistniejącej zmiennej $uzytkownik to
  1. $loginl = $_SESSION['uzytkownik'];

czyli nadpisanie $loginl nieistniejącą zmienną


--------------------
Go to the top of the page
+Quote Post
GoOx
post 6.01.2012, 13:16:22
Post #16





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


czyli

$_SESSION['uzytkownik'] = $uzytkownik;

zamienić na:

$_SESSION['loginl'] = $uzytkownik;

i tak samo w logowanie.php tak?



questionmark.gif
Go to the top of the page
+Quote Post
Mackos
post 6.01.2012, 13:28:27
Post #17





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


Jaaa.... no masz cokolwiek w tej sesji $_SESSION['uzytkownik'] albo $_SESSION['loginl'] ? NIE.
Żeby jakiekolwiek przypisanie Ci działało musisz do zmiennej np. $uzytkownik przypisać login użytkownika z bazy danych.


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
Go to the top of the page
+Quote Post
GoOx
post 6.01.2012, 13:40:37
Post #18





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


Aaaaa w końcu zrozumiałem zaraz zrobię biggrin.gif

edit/

ok zamiast $loginl dałem $danelogin[0] czyli z bazy danych i nadal nic co zrobić?

PS sprawdziłem czy w zmiennej $_SESSION['loginl'] cokolwiek jest dałem echo i jest. więc teraz chyba trzeba szukać błędu w index.php

Ten post edytował GoOx 6.01.2012, 13:48:14
Go to the top of the page
+Quote Post
lobopol
post 6.01.2012, 13:47:02
Post #19





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Ech napiszę Ci jak powinien wyglądać proces logowania:

1. Sprawdzamy czy użytkownik jest zalogowany, jeżeli nie krok 2
  1. if(!isset($_SESSION['logged'])) {
  2. //niezalogowany trza działać
  3. } else {
  4. //zalogowany jakaś tam akcja
  5. }

2. Sprawdzamy czy został uzupełniony formularz logowania
  1. if(isset($_POST['login']) && isset($_POST['password'])) {
  2. //przesłano login i hasło krok 3
  3. } else {
  4. //nie przesłano hasła i loginu jakaś akcja
  5. }

3. Sprawdzamy czy mamy takiego użytkownika w bazie z takim hasłem
  1. $login = $_POST['login'];
  2. $password = md5($_POST['password']); //md5 dla przykłądu trzeba to lepiej zabezpieczyć
  3. $sql = 'SELECT * FROM baza WHERE user="'.mysql_real_escape_string($login).'" AND password = "'.$password.'" LIMIT 1';
  4. //tu pobranie z bazy jeżeli jest wynik to hasło+login jest dobre
  5. //zapisujemy do sesji potrzebne rzeczy czyli
  6. $_SESSION['logged'] = true;
  7. $_SESSION['login'] = $login;
  8. $_SESSION['access_lvl'] = //poziom z bazy wyciągnięty

4. sprawdzenie czy ktoś ma uprawnienia admina
  1. if(isset($_SESSION['logged']) && $_SESSION['access_lvl'] == 3) {
  2. //jej to admin działaj
  3. }

5. wylogowanie
  1. $_SESSION = array();



--------------------
Go to the top of the page
+Quote Post
GoOx
post 6.01.2012, 14:25:55
Post #20





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


wszystko dobrze zrobiłem?

  1. <?
  2. include('polaczenie.php');
  3. ?>
  4. <?
  5.  
  6. if(!isset($_SESSION['logged'])) {
  7. ?>
  8. <body>
  9. Logowanie:</br>
  10. <form action="logowanie.php?loguje" method="post">
  11. Login:<input type="text" name="login"></br>
  12. Haslo:<input type="password" name="haslo"></br>
  13. <input type="submit" name="zaloguj" value="Zaloguj">
  14. </form>
  15. <?
  16.  
  17. } else {
  18. echo "Jesteś juz zalogowany.";
  19. }
  20.  
  21. if(isset($_POST['login']) && isset($_POST['password'])) {
  22. $login = $_POST['login'];
  23. $password = md5($_POST['password']);
  24. $spr = 'SELECT * FROM uzytkownicy WHERE nick="'.mysql_real_escape_string($login).'" AND haslo = "'.$password.'" LIMIT 1';
  25. $res = mysql_query($spr);
  26. $dane = mysql_fetch_row($res);
  27.  
  28. $_SESSION['logged'] = true;
  29. $_SESSION['login'] = $login;
  30. $_SESSION['access_lvl'] = "3" ;
  31. } else {
  32. echo "Nie podałeś loginu i hasla";
  33. $_SESSION = array();
  34. }
  35.  
  36.  
  37.  
  38.  


questionmark.gif bo ciągle mi pisze że nie podałem loginu i hasła ale wpisuję klikam zaloguj i nic się nie dzieje.

myślę że tam powinno być jeszcze

  1. $poziom = mysql_query("SELECT poziom FROM uzytkownicy WHERE nick = '$loginl' );
  2. $poziom3 = mysql_fetch_row($poziom);
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:08