Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Menu widoczne tylko po zalogowaniu
mikcuki
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.11.2012

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


Witam chciałbym zapytać jak uprościć ukrywanie podmenu przed niezalogowanym użytkownikiem. Dodam, że zrobiłem to i działa świetnie. Mam jednak wrażenie, że da się to uprościć, przynajmniej mam taką nadzieję (IMG:style_emoticons/default/smile.gif)

mam funkcję:
  1. function logged_in() {
  2. return (isset($_SESSION['user_id'])) ? true : false;
  3. }


w ten sposób zrobiłem rozwijane menu tak żeby tylko zalogowani mogli zobaczyć podmenu po najechaniu na odpowiednią kategorię kursorem:

  1. <div id="nav">
  2. <ul>
  3. <li><a href="#">Menu 1</a>
  4. <?php if (logged_in() === true) { echo '
  5. <ul>
  6. <li><a href="#">Menu 1.1</li>
  7. <li><a href="#">Menu 1.2</li>
  8. <li><a href="#">Menu 1.3</li>
  9. </ul>'; } ?>
  10. </li>
  11. <li><a href="#">Menu 2</a>
  12. <?php if (logged_in() === true) { echo '
  13. <ul>
  14. <li><a href="#">Menu 2.1</li>
  15. <li><a href="#">Menu 2.2</li>
  16. <li><a href="#">Menu 2.3</li>
  17. </ul>'; } ?>
  18. </li>
  19. <li><a href="#">Menu 3</a>
  20. <?php if (logged_in() === true) { echo '
  21. <ul>
  22. <li><a href="#">Menu 3.1</li>
  23. <li><a href="#">Menu 3.2</li>
  24. <li><a href="#">Menu 3.3</li>
  25. </ul>'; } ?>
  26. </li>
  27. </ul>
  28. </div>


Teraz pytanie czy da się ustawić klasę dla niewidocznego <ul> np: <ul class="loggedin">, i zdefiniować ją w funkcji php tak żeby nie dodawać za każdym razem instrukcji "if". Mam nadzieję, że w miarę wyjaśniłem o co mi chodzi. Mile widziane inne rozwiązania (IMG:style_emoticons/default/smile.gif) Pozdrawiam

Ten post edytował mikcuki 19.12.2012, 15:14:54
Go to the top of the page
+Quote Post
_krc_
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.02.2006

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


mozesz zrobic tak jak piszesz pod warunkiem ze sprawdzasz rowniez po stronie serwera (wchodzac na strone w ukrytym linku), czy user jest zalogowany..
bo jesli tego nie zrobisz to bedzia tylko atrapa zabezpieczenia.. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
gr56
post
Post #3





Grupa: Zarejestrowani
Postów: 77
Pomógł: 15
Dołączył: 19.11.2011

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


Niestety jedynym sensownym sposobem są ify jednak możesz troche poprawić swój kod:
- aby poprawić kolorowanie składni html, zamiast
  1. <?php if (logged_in() === true) { echo '
  2. <ul>
  3. <li><a href="#">Menu 1.1</li>
  4. <li><a href="#">Menu 1.2</li>
  5. <li><a href="#">Menu 1.3</li>
  6. </ul>'; } ?>

użyj
  1. <?php if (logged_in() === true) { ?>
  2. <ul>
  3. <li><a href="#">Menu 1.1</li>
  4. <li><a href="#">Menu 1.2</li>
  5. <li><a href="#">Menu 1.3</li>
  6. </ul> <? } ?>

- zamień if (logged_in() === true) na if (logged_in())
oraz return (isset($_SESSION['user_id'])) ? true : false; na return isset($_SESSION['user_id']);
Go to the top of the page
+Quote Post
mikcuki
post
Post #4





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.11.2012

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


Cytat(_krc_ @ 19.12.2012, 20:05:34 ) *
mozesz zrobic tak jak piszesz pod warunkiem ze sprawdzasz rowniez po stronie serwera (wchodzac na strone w ukrytym linku), czy user jest zalogowany..
bo jesli tego nie zrobisz to bedzia tylko atrapa zabezpieczenia.. (IMG:style_emoticons/default/wink.gif)


Strony, do których prowadzą ukryte linki też sprawdzają czy user jest zalogowany i nie chodzi tu o same zabezpieczenie tylko o to żeby niepotrzebnie nie wyświetlać przypadkowym gościom linków do stron, na które i tak nie mogą wejść. Już jak się ktoś uprze i będzie chciał na skróty przez url wejść to wyświetli się info, że musi być zalogowany.

Cytat(gr56 @ 19.12.2012, 20:37:23 ) *
Niestety jedynym sensownym sposobem są ify jednak możesz troche poprawić swój kod:
- aby poprawić kolorowanie składni html, zamiast
  1. <?php if (logged_in() === true) { echo '
  2. <ul>
  3. <li><a href="#">Menu 1.1</li>
  4. <li><a href="#">Menu 1.2</li>
  5. <li><a href="#">Menu 1.3</li>
  6. </ul>'; } ?>

użyj
  1. <?php if (logged_in() === true) { ?>
  2. <ul>
  3. <li><a href="#">Menu 1.1</li>
  4. <li><a href="#">Menu 1.2</li>
  5. <li><a href="#">Menu 1.3</li>
  6. </ul> <? } ?>

- zamień if (logged_in() === true) na if (logged_in())
oraz return (isset($_SESSION['user_id'])) ? true : false; na return isset($_SESSION['user_id']);


Dzięki za odpowiedź. Szkoda, że nie da się tego jakoś "zautomatyzować" bo jeszcze sporo przede mną i miałem nadzieję, że sobie trochę ułatwię (IMG:style_emoticons/default/tongue.gif)

Pozdrawiam.

Go to the top of the page
+Quote Post
_krc_
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.02.2006

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


Kod
<?php $class_name = (logged_in() !== true) ? 'ul-hidden' else ''; ?>

<div id="nav">
    <ul>
    <li><a href="#">Menu 1</a>
        <ul class="<?php echo $class_name; ?>">
            <li><a href="#">Menu 1.1</li>
            <li><a href="#">Menu 1.2</li>
            <li><a href="#">Menu 1.3</li>
        </ul>  
    </li>
    <li><a href="#">Menu 2</a>
        <ul class="<?php echo $class_name; ?>">
            <li><a href="#">Menu 2.1</li>
            <li><a href="#">Menu 2.2</li>
            <li><a href="#">Menu 2.3</li>
        </ul>
    </li>
    <li><a href="#">Menu 3</a>  
        <ul class="<?php echo $class_name; ?>">
            <li><a href="#">Menu 3.1</li>
            <li><a href="#">Menu 3.2</li>
            <li><a href="#">Menu 3.3</li>
        </ul>
    </li>
    </ul>
</div>
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: 26.09.2025 - 10:17