Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] System uprawnień z cookies
Knight
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.11.2012

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


Witam

Ostatnio przez dłuższy okres borykam się z problemem napisania systemu uprawnień.
Otóż gdy wpisuję ten kod by zostało zapisane moje numerID w cookies, a bym mógł je wywołać w pliku panel.php i tam ustalić co ma być dla danego id wyświetlane to wyskakuje mi error

Warning: setcookie() expects parameter 2 to be string, resource given in C:\wamp\www\nazwa\login.php on line 58


Linia 58 =
  1. setcookie('id', $id, time()+60*60);


  1. if($submit)
  2. {
  3.  
  4. $id = mysql_query("SELECT numerID FROM users WHERE Username='$username' AND Password='$zaszyfrowane'") or die(mysql_error());
  5. $rezultat=mysql_query("SELECT * FROM users WHERE Username='$username' AND Password='$zaszyfrowane");
  6.  
  7. setcookie('id', $id, time()+60*60);
  8.  
  9. if(@mysql_num_rows($rezultat)){
  10.  
  11. session_register('username'); // Zapamiętuje zmienną sesji
  12. header("location:panel.php"); // Przekierowanie do strony main.php
  13. }
  14. else
  15. {
  16. }
  17. }

http://fotoo.pl//out.php?i=437704_knight.png

Otóż myślę, że już jestem blisko by to w pełni działało, tylko blokuje mnie ten string, poprowadziłby mnie ktoś?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Przeczytaj komunikat (error), który Ci wyświetla i się do niego ustosunkuj.

System uprawnień oparty na ciasteczkach jest bezsensowny.
Już większy sens ma trzymanie to w sesji, a jeszcze większy weryfikowanie tego przy każdej akcji - bo uprawnienie może się zmienić podczas sesji.

Ten post edytował markonix 27.11.2012, 15:20:22
Go to the top of the page
+Quote Post
Knight
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.11.2012

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


oczekuje żeby 2 parametr był w ciągu?

Nie mogę wykminić o co tu chodzi, jakbym wiedział to bym nie pisał na forum.
Go to the top of the page
+Quote Post
Szymciosek
post
Post #4





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Wg. mnie parametr 2 powinien być stringiem.

Więc najpierw sprawdź czy rzeczywiście ID, które pobierasz za pomocą mysql_query takowym jest.

Ten post edytował Szymciosek 27.11.2012, 15:31:14
Go to the top of the page
+Quote Post
Knight
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.11.2012

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


No pobieram numerID z users gdzie username = $username itp.

a $username to nic innego jak $_POST['username'] itp.
więc wydaje mi się, że powinno wychwycić numerID, choć gdy wpisuje

  1. echo $id;

to wyskakuje Resource id #6 :/

Ten post edytował Knight 27.11.2012, 15:36:16
Go to the top of the page
+Quote Post
Szymciosek
post
Post #6





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


http://php.net/manual/en/function.mysql-query.php

Np example 2
Go to the top of the page
+Quote Post
Knight
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.11.2012

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


no wyskakuje mi jak napisałem Resource id #6
Go to the top of the page
+Quote Post
markonix
post
Post #8





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Weź w końcu otwórz dokumentacje i przeczytaj co funkcja zwraca.

http://php.net/manual/en/function.mysql-qu...ry-returnvalues
Go to the top of the page
+Quote Post
Knight
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.11.2012

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


dodałem coś takiego,

  1. mysql_fetch_array($id, MYSQL_NUM);


lecz nadal nie mogę dojść do tego powrócić do tego stanu przed resource, bo wyskakuje nadal ten sam błąd
Go to the top of the page
+Quote Post
Szymciosek
post
Post #10





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Ty w ogóle spoglądasz na examples w dokumentacji ? Tam jest w każdym chyba podane żeby to zastosować w while. Sprawdzaj.
Go to the top of the page
+Quote Post
Knight
post
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.11.2012

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


  1. if($submit)
  2. {
  3.  
  4. $rezultat=mysql_query("SELECT * FROM users WHERE Username='$username' AND Password='$zaszyfrowane");
  5. $id = mysql_query("SELECT numerID FROM users WHERE Username='$username' AND Password='$zaszyfrowane'") or die(mysql_error());
  6.  
  7.  
  8. while ($row = mysql_fetch_array($id, MYSQL_NUM))
  9. {
  10. printf("ID: %s", $row[0]);
  11. }
  12.  
  13. setcookie('id', $id, time()+60*60);
  14.  
  15. if(@mysql_num_rows($rezultat)){
  16.  
  17. session_register('username'); // Zapamiętuje zmienną sesji
  18. header("location:panel.php"); // Przekierowanie do strony main.php
  19. }
  20. else
  21. {
  22. }
  23. }


Warning: setcookie() expects parameter 2 to be string, resource given in C:\wamp\www\nazwa\login.php on line 62

dalej to samo, chociaż już mi wyszło że ID=1, czyli się zgadza.
Go to the top of the page
+Quote Post
Szymciosek
post
Post #12





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


  1. $id = mysql_query("SELECT numerID FROM users WHERE Username='$username' AND Password='$zaszyfrowane'") or die(mysql_error());

na
  1. $id_query = mysql_query("SELECT numerID FROM users WHERE Username='$username' AND Password='$zaszyfrowane'") or die(mysql_error());


  1. while ($row = mysql_fetch_array($id, MYSQL_NUM))
  2. {
  3. printf("ID: %s", $row[0]);
  4. }

na
  1. while ($row = mysql_fetch_array($id_query, MYSQL_NUM))
  2. {
  3. $id = $row[0];
  4. }


i na sam koniec:
  1. echo $id;


Trochę pomyśl. Bo niby po co Ci tam print ? Powinieneś wiedzieć jak działa, a tu musisz mieć przypisanie wartości do zmiennej.
Go to the top of the page
+Quote Post
Knight
post
Post #13





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.11.2012

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


no teraz ładnie działa, dzięki za pomoc, potem jeszcze napisze efekt końcowy i dokończe na panel.php żeby prawidłowo to wyświetlało, teraz mnie trochę czas goni.

Dzięki wam za pomoc, chociaż jednak jak miał kolega wyżej rację, rozwiązanie z sesjami będzie najodpowiedniejsze, jednak zostawię tutaj to co zrobiłem, być może komuś się przyda.

login.php - skrawek z odczytywaniem id i przekierowywaiem do login.php
  1. if($submit)
  2. {
  3.  
  4. $rezultat = mysql_query("SELECT * FROM users WHERE Username='$username' AND Password='$zaszyfrowane'");
  5. $id_query = mysql_query("SELECT numerID FROM users WHERE Username='$username' AND Password='$zaszyfrowane'") or die(mysql_error());
  6.  
  7.  
  8. while ($row = mysql_fetch_array($id_query, MYSQL_NUM))
  9. {
  10. $id = $row[0];
  11. }
  12.  
  13.  
  14.  
  15.  
  16. setcookie('id', $id, time()+60*60);
  17.  
  18. if(@mysql_num_rows($rezultat)){
  19.  
  20. session_register('username'); // Zapamiętuje zmienną sesji
  21. header("location:panel.php"); // Przekierowanie do strony main.php
  22. }
  23. else
  24. {
  25. }
  26. }



funkcja w panel.php

  1. function uprawnienia($acess)
  2. {
  3. require 'config.php';
  4. require 'zmienne.php';
  5.  
  6. $polaczenie = mysql_connect($serwer, $uzytkownik, $haslo);
  7. $db = mysql_select_db('liga' , $polaczenie);
  8. $id = $_COOKIE['id'];
  9. $result = mysql_query("SELECT Acess FROM users WHERE numerID = '$id'", $polaczenie) or die("Error");
  10. while($row = mysql_fetch_array($result))
  11. {
  12. $acess = $row[0];
  13. }
  14.  
  15. $uprawnienia = $row[$acess];
  16. if ($acess == '0')
  17. {
  18. echo 'Admin';
  19. }
  20. else if ($acess == '1')
  21. {
  22. echo 'Trener';
  23. }
  24. else if ($acess == '2')
  25. {
  26. echo 'Gracz';
  27. }
  28. }
  29.  
  30. @uprawnienia($acess);


Ten post edytował Knight 27.11.2012, 19:30:53
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 3.10.2025 - 03:22