Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomoc z funkcją
Forum PHP.pl > Forum > Przedszkole
-Andrzej-
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
netmare
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
Andrzekj
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?
netmare
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ść
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.
netmare
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...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.