Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pomoc z funkcją
--Andrzej--
post 22.02.2008, 20:05:36
Post #1





Goście







Witka!

Napisałem sobie następującą funkcję:
  1. <?php
  2. function is_active()
  3. {
  4. $userid = $_SESSION['userid']; 
  5. $query = mysql_query("SELECT status FROM users WHERE userid = '$userid' limit 1");
  6. while($r = mysql_fetch_assoc($query)) {
  7. }
  8. $status = $r['status'];
  9.  
  10.  if ($status != 1)
  11.  {
  12. return false;
  13.  }
  14.  else
  15.  {
  16. return true;
  17.  }
  18. }
  19. ?>


Sprawdza ona, czy użyszkodnik aktywował swoje konto za pomocą linka w emailu.

Na stronie zabezpieczonej sprawdzam ją w sposób następujący:
  1. <?php
  2. if (!is_active())
  3. {
  4.  die ('You are not permitted to view this page, <a href="login.php">click here</a> to login.');
  5. }
  6.  
  7.  
  8. echo ('You are permitted to view this page');
  9. ?>


Problem w tym, że funkcja, albo jej sprawdzanie nie działa. Inną funkcję też sprawdzam w ten sposób i to działa. Stworzyłem dwóch użytkowników, jednego ze status=1, drugiego ze status=0. Niestety nie mam już pomysłów co jest nie tak.

Może ktoś podrzucić jakąś sugestię? JEśli źle wytłumaczyłem to przepraszam, ale z php mam doczynienia parę dni i generalnie już zamiast myśli mam strongi od manuala:)

Pozdrowienia
Andrzej
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
netmare
post 22.02.2008, 20:09:13
Post #2





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


Sugestię to ja mam taką, żeby sprawdzać czy user aktywował linkiem podczas logowania, a nie przy ładowaniu każdej strony.
Na czym polega "nie działa" questionmark.gif
Go to the top of the page
+Quote Post
-Andrzekj-
post 22.02.2008, 20:11:51
Post #3





Goście







No fakt. Podczas logowania lepiej. Ale...właśnie to robię;)

"Nie działa" polega czasem, że funkcja przepuszcza użytkownika ze status=0 zamiast umrzeć i wywalić mu bład o braku uprawnień.


Any ideas?
Go to the top of the page
+Quote Post
netmare
post 22.02.2008, 20:15:43
Post #4





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


no jak na razie pomysł taki że przydałoby się include() w drugim pliku
poza tym trochę dziwnie napisana ta funkcja...

  1. <?php
  2. function is_active()
  3. {
  4. $userid = $_SESSION['userid']; 
  5. $query = mysql_query("SELECT status FROM users WHERE userid = '$userid' limit 1");
  6. $r = @mysql_fetch_assoc($query));
  7. return @$r['status'];
  8. }
  9. ?>


Powinno dać ten sam rezultat chyba...
Go to the top of the page
+Quote Post
-Gość-
post 22.02.2008, 20:17:08
Post #5





Goście







Pierwszy kod, to fragment pliku functions.php, który jest zinclude'owany w pliku init.php, który to znowu zincludowany w pliku login.php, który prowadzi do pliku usercp.php, z którego pochodzi drugi fragment kodu.

I dlaczego wg. Ciebie dziwnie? Starałem się kozystać z manuala, więc wydawało mi się, że będzie ok.
Go to the top of the page
+Quote Post
netmare
post 22.02.2008, 20:24:46
Post #6





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


no dziwne jest na przykład puste while.
"czasami" co masz na myśli może przeglądarka wyciąga stronę z cachu, zamiast ją przeładować. Szczerze mówiąc ja nie bardzo mam pomysły co to może być.
Może wkleisz większe fragmenty kodu z nazwami plików, albo może kto inny będzie miał lepsze pomysły...
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:44