Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Menu widoczne po zalogowaniu
Forum PHP.pl > Forum > Przedszkole
kkproject
W pliku index.php mam menu, które jest wywoływanie poprzez:
  1.  
  2. <?php
  3.  
  4. include "kategorie.php";
  5. kategorie();
  6.  
  7. ?>


Plik kategorie zawiera:
  1. function kategorie()
  2. {
  3. if(!makeDBConnection()){
  4. return false;
  5. }
  6.  
  7. $query = "SELECT * FROM kategorie GROUP BY nazwa ORDER BY nazwa";
  8.  
  9. if(!$result = mysql_query($query)){
  10. echo("Odrzucone zapytanie: funkcja showItem: $query");
  11. return false;
  12. }
  13.  
  14. $count = mysql_num_rows($result);
  15.  
  16. if($count==0)
  17. {
  18. echo("<center>Nie znaleziono żadnej kategorii.</center>");
  19. }
  20. else
  21. {
  22.  
  23. echo("<table width='100%' border='0' align='left' valign='middle'>");
  24. while($arr = mysql_fetch_array($result)){
  25. echo("<tr>");
  26. echo("<td>");
  27. echo("<a href='index.php?action=search_k&kat=$arr[id]'>$arr[nazwa]</a>");
  28.  
  29. $query_podkat = "SELECT id, nazwa_podkat FROM kategorie WHERE nazwa LIKE '$arr[nazwa]' AND nazwa_podkat NOT LIKE 'brak' ORDER BY nazwa_podkat";
  30. $result_podkat = mysql_query($query_podkat);
  31. $count_podkat = mysql_num_rows($result_podkat);
  32. if($count_podkat!=0)
  33. {
  34. echo("<ul>");
  35. while($arr_podkat = mysql_fetch_array($result_podkat)){
  36. echo("<li class=\"kategorie\"><a href='index.php?action=search_pk&kat=$arr_podkat[id]'>$arr_podkat[nazwa_podkat]</a></li>");
  37. }
  38. echo("</ul>");
  39. }
  40.  
  41. echo("</td>");
  42. echo("</tr>");
  43. }
  44. echo("</table>");
  45.  
  46. }
  47. return true;
  48. }


Chciałbym, aby owe kategorie były wyświetlane tylko dla użytkowników zalogowanych. System logowania mam oparty o sesje.
Proszę o jakieś pomysły w tej sprawie.

Dziękuję z góry.
Swirek
może i tu jest większy problem ale nie wystarczy

  1. if($_SESSION["nazwa"]==0)
  2. {
  3. echo "Brak dostępu"; exit();
  4. }
  5. else
  6. kategorie();
kkproject
Próbowałem poprzez:
  1. if(isSet($_SESSION['login'])){
  2. include "./kategorie.php";
  3. kategorie ();
  4. }
  5. else {
  6. echo("Dostęp po zalogowaniu"); }


Efekt był taki, że widniał napis "Dostęp po zalogowaniu", a gdy użytkownik się zalogował dalej pisało "Dostęp po zalogowaniu" a funkcja kategorie() nie była wywoływana :/
Swirek
spróbuj wyrzucić zmienną na ekran

  1. echo $_SESSION["login"];


i powiedz czy jest w niej login. Wybacz jeśli uraziłem Cię tym pytaniem, ale nie widzę kodu ani nie znam Twojego poziomu php smile.gif
kkproject
Rozumiem. Programuje w PHP. Ale taka zagwozdka wpadła mi i nie wiem jak sobie z tym poradzić.

po zalogowaniu skrypt:

  1. echo $_SESSION["login"];


Wyświetla na ekranie login użytkownika.
Swirek
tu jest wszystko ok.

ewentualnie include spróbuj wywalić poza warunek if na gorę bo nie wiem co w nim siedzi i spróbuj warunek
  1. if($_SESSION["login"]!='')
nic innego mi nie przychodzi do głowy.
wydaje mi się, że problem może jest gdzieś indziej
kkproject
Dałem tak:
  1. <?php
  2. include "./kategorie.php";
  3.  
  4. if($_SESSION["login"]!='') {
  5. kategorie ();
  6. }
  7. else {
  8. echo("Dostęp po zalogowaniu");
  9. }
  10. ?>


Kategoria nie jest wyświetlana gdy użytkownik jest niezalogowany, sytuacja nie zmienia się również gdy zaloguje się.

Co ciekawe kategorie pojawiają się gdy użytkownik się wyloguje.


To jest funkcja logowania:
  1. function login()
  2. {
  3. if(isSet($_SESSION['UserId'])){
  4. echo("<h3 align='center'>Już jesteś zalogowany!</h3>");
  5. }
  6. else if(!isSet($_POST["haslo"]) || !isSet($_POST["email"])){
  7. echo("<h5 align='center'>WprowadĽ e-mail i hasło:</h5>");
  8. include "sklep_login_form.php";
  9. }
  10. else{
  11. $val = checkEmailAndPass($_POST["email"], $_POST["haslo"]);
  12. if($val == LOGIN_OK){
  13. $_SESSION['login'] = $_POST["email"];
  14. echo("<h3 align='center'>Logowanie prawidłowe</h3>");
  15. echo("<a href='index.php?action=showbasket' class='czarny'>Twój koszyk</a>");
  16. }
  17. else if($val == BAD_EMAIL_OR_PASS || $val == BAD_DATA_LENGTH){
  18. echo("<h3 align='center'>Nieprawidłowa nazwa lub hasło użytkownika.</h3>");
  19. include "sklep_login_form.php";
  20. }
  21. else if($val == DB_CONNECTION_ERROR){
  22. echo("<h3 align='center'>Błąd serwera. Zalogowanie nie było możliwe.</h3>");
  23. include "sklep_login_form.php";
  24. }
  25. }
  26. }






To jest funkcja wylogowywania:
  1. function logout()
  2. {
  3. if(!isSet($_SESSION['UserId'])){
  4. echo("<h3 align='center'>Nie jesteś zalogowany.</h3>");
  5. return;
  6. }
  7. else{
  8. unset($_SESSION['UserId']);
  9. echo("<h3 align='center'>Wylogowanie prawidłowe.</h3>");
  10. }
  11.  
  12. }
  13.  
  14. ?>
Swirek
a spróbuj po zalogowaniu użyć

  1. Header("Location: /");


edit.
albo po prostu odświeżyć stronę w celu "załadowania do przeglądarki" zmiennej
kkproject
właśnie po odświeżeniu strony wszystko jest ok

jak więc wymusić aby ta zmienna była ładowana do przeglądarki ?
Swirek
po poprawnym zalogowaniu użyj tak jak Ci napisałem przekierowania za pomocą header i wszystko będzie ładnie śmigać smile.gif

  1. if($val == LOGIN_OK){
  2. $_SESSION['login'] = $_POST["email"];
  3. Header("Location: /jakasstrona.php?log=1");
  4. }


jeżeli chcesz wyświetlić komunikat o prawidłowym zalogowaniu

  1. if($log==1)
  2. echo("<h3 align='center'>Logowanie prawidłowe</h3>");


koszyk na pewno jest widoczny na stronie głównej i podstronach od razu więc linku chyba nie trzeba dorzucać.

pozdro smile.gif
kkproject
Dzięki za pomoc wink.gif
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.