Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Menu dla zalogowanych i niezalogwanych
Forum PHP.pl > Forum > Przedszkole
wickas
Mam oto takie pionowe menu na stronie. Czy jest możliwe wyświetlenie po zalogowaniu na strone zamiast logowanie - Wylogowanie? Oraz przyporządkować mu skrypt wylogowania.
  1. [html]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset= utf-8" />
  6. <link rel="stylesheet" type="text/css" href="strona1.css" />
  7. <title>Strona startowa - Szpital</title>
  8. </head>
  9. <body>
  10. <div id="pojemnik">
  11. <div id="nag">
  12. <div id="menu">
  13. <ul>
  14. <li><a href="index.php" title="Powrót do Strony głównej">Strona Główna</a></li>
  15. <li><a href="konto.php" title="Zarządzanie kontem">Konto</a></li>
  16. <li><a href="baza.php" title="Baza danych leków">Baza Leków</a></li>
  17. <li><a href="rejestracja.php" title="Założenie konta">Rejestracja</a></li>
  18. <li><a href="logowanie.php" title="Zalogowanie się do konta">Logowanie</a></li>
  19. </ul>
  20. </div>
  21. </div>
  22. <div id="zawartosc"></div>
  23. <div id="stopka"></div>
  24. </div>
  25. </body>
  26. </html>
sajegib
  1. if(isset($_SESSION['twoja_nazwa_zmiennej_sesyjnej'])){
  2. echo "Wyloguj"; // wiadomo z hrefem do pliku niszczacego sesje
  3. }
  4. else {
  5. echo "Logowanie";
  6. }
wickas
Czy skrypt jest poprawny i ja coś namieszałem, czy też źle wykorzystałem przykład? Ponieważ póki co nic się nie zmieniło,loguje mnie przekierowuje na stronę główną ale nie zamienia logowanie na wylogowanie. Próbowałem rożnych kombinacji,bezskutecznie. Ktoś może poradzić gdzie umieścić ten warunek?
  1. [PHP]
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  5. <head>
  6. <meta http-equiv="content-type" content="text/html; charset= utf-8" />
  7. <link rel="stylesheet" type="text/css" href="strona1.css" />
  8. <title>Strona startowa - Szpital</title>
  9. </head>
  10. <body>
  11. <div id="pojemnik">
  12. <div id="nag">
  13. <div id="menu">
  14. <ul>
  15. <li><a href="index.php" title="Powrót do Strony głównej">Strona Główna</a></li>
  16. <li><a href="konto.php" title="Zarządzanie kontem">Konto</a></li>
  17. <li><a href="baza.php" title="Baza danych leków">Baza Leków</a></li>
  18. <li><a href="rejestracja.php" title="Założenie konta">Rejestracja</a></li>
  19. <?php
  20. if(isset($_SESSION['login'])) // dostęp dla zalogowanego użytkownika
  21. {
  22. echo '<li><a href="wylogowanie.php" title="Wylogowanie się">Wylogowanie</a></li>';
  23. }
  24. else
  25. {
  26. echo '<li><a href="logowanie.php" title="Zalogowanie się">Logowanie</a></li>';
  27. }
  28. ?>
  29. </ul>
  30. </div>
  31. </div>
  32. <div id="zawartosc"></div>
  33. <div id="stopka"></div>
  34. </div>
  35. </body>
  36. </html>

[/php]
webspy
przypisałeś do session login?

$_SESSION['login'] = $login;

Czy na stronie logowania masz session_start(); ?

sprawdź czy istnieje sesia -> echo $_SESSION['login'];

wickas
Nie do końca wiem gdzie szukać(użyłem gotowca skryptu - nie jest to moja praca, stronka już tak), więc umieszczam skrypt logowania. Zresztą mam swiadomość ze jestem zerem z php w chwili obecje. Jakbym otrzymał wyjaśnienie co, skąd i po co zrozumiem to bardziej, a jeżeli pytał i denerwował swoją niewiedzą.
  1. [PHP]
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  5. <head>
  6. <meta http-equiv="content-type" content="text/html; charset= utf-8" />
  7. <link rel="stylesheet" type="text/css" href="strona1.css" />
  8. <title>Logowanie - Szpital</title>
  9. </head>
  10. <body>
  11. <div id="pojemnik">
  12. <div id="nag">
  13. <div id="status"> </div>
  14. <div id="menu">
  15. <ul>
  16. <li><a href="index.php" title="Powrót do Strony głównej">Strona Główna</a></li>
  17. <li><a href="konto.php" title="Zarządzanie kontem">Konto</a></li>
  18. <li><a href="baza.php" title="Baza danych leków">Baza Leków</a></li>
  19. <li><a href="rejestracja.php" title="Założenie konta">Rejestracja</a></li>
  20. <?php
  21. if(isset($_SESSION['login'])) // dostęp dla zalogowanego użytkownika
  22. {
  23. echo '<li><a href="wylogowanie.php" title="Wylogowanie się">Wylogowanie</a></li>';
  24. }
  25. else
  26. {
  27. echo '<li><a href="logowanie.php" title="Zalogowanie się">Logowanie</a></li>';
  28. }
  29. ?>
  30. </ul>
  31. </div>
  32. </div>
  33. <center><form action="logowanie.php" method="post">
  34. <input type="hidden" name='wyslane' value="TRUE" />
  35. <div id="logowanie">
  36. <div id="log0"><p class="nalog">Login:</p></div><div id="log"><input class="input" type="text" name="login" /></div>
  37. <div id="pass0"><p class="nalog">Hasło:</p></div><div id="pass"><input class="input" type="password" name="haslo" size="20" maxlength="10"/></div>
  38. <div id="zaloguj"><input name="submit" class="button" type="submit" value="Zaloguj" /></div>
  39. </div>
  40. </form></center>
  41. <div id="stopka"></div>
  42. </div>
  43. </body>
  44. </html>
  45.  
  46. <?php
  47. include 'db.php'; // połączenie się z bazą danych
  48. $tabela = 'dane'; // zdefiniowanie tabeli MySQL
  49.  
  50. if (!isset($_SESSION['login'])) { // dostęp dla niezalogowanego użytkownika
  51.  
  52. if (isset($_POST['wyslane'])) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  53.  
  54. $login = $_POST["login"];
  55. $haslo = $_POST["haslo"];
  56.  
  57. $wynik=mysql_query("SELECT * FROM $tabela WHERE login_dane='$login' and haslo_dane='$haslo' and Status_dane=0");
  58. // jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat
  59. if (mysql_num_rows($wynik) == 1) {
  60. $informacja = mysql_fetch_array($wynik);
  61. echo '<p class="tekst">Nie aktywowałeś/aś jeszcze swojego konta. Aby to zrobić wejdź w swoją skrzynkę odbiorczą, a następnie znajdź wiadmość z linkiem aktywacyjnym i aktywuj swoje konto</p>';
  62. } else {
  63.  
  64. // jeżeli wszystko jest dobrze, użytkownik się loguje
  65. $wynik=mysql_query("SELECT * FROM $tabela WHERE login_dane='$login' and haslo_dane='$haslo' and Status_dane=1");
  66.  
  67. if (mysql_num_rows($wynik) == 1) {
  68. $informacja = mysql_fetch_array($wynik);
  69. $_SESSION["login"] = $informacja["login"];
  70. $_SESSION["status"] = 1;
  71. header('Location: index.php');
  72. }
  73.  
  74. // jeżeli wszystko jest dobrze, użytkownik się loguje jako pracownik
  75. $wynik=mysql_query("SELECT * FROM $tabela WHERE login_dane='$login' and haslo_dane='$haslo' and Status_dane=2");
  76.  
  77. if (mysql_num_rows($wynik) == 1)
  78. {
  79. $informacja = mysql_fetch_array($wynik);
  80. $_SESSION["login"] = $informacja["login"];
  81. $_SESSION["status"] = 2;
  82. header('Location: index.php');
  83. } else
  84. {
  85. echo '<p class="tekst">Zostały wprowadzone nieprawidłowe dane</p>';
  86. }
  87. }
  88. mysql_close($polaczenie);
  89. }
  90.  
  91. } else {
  92. header('Location: index.php '); // zalogowany użytkownik zostaje przekierowany na stronę główną
  93. }
  94.  
  95. ?>
  96.  

[/php]
webspy
Wpisz sobie na tej stronie co przekierowuje (tam gdzie wkleiłeś kod ktory ma pokazywać zaloguj lub wyloguj)

  1.  
  2. <?
  3. //to na sam początek strony (na samą górę)
  4. ?>
  5. <?
  6. echo 'Login:'.$_SESSION['login']; //zobaczysz czy coś pokazuje czy istnieje session
  7.  
  8. if(isset($_SESSION['login'])) // dostęp dla zalogowanego użytkownika
  9. {
  10. echo '<li><a href="wylogowanie.php" title="Wylogowanie się">Wylogowanie</a></li>';
  11. }
  12. else
  13. {
  14. echo '<li><a href="logowanie.php" title="Zalogowanie się">Logowanie</a></li>';
  15. }
  16. ?>



Możesz nie mieć session bo w pliku z logowaniem przekierowuje zawsze na index wiec nie wiesz czy wszystko poszlo dobrze
wickas
Wyświetliło mie się coś takiego - Notice: Undefined variable: _SESSION in C:\xampp\htdocs\szpital\index.php on line 26
  1. [PHP]
  2. <?
  3. //to na sam początek strony (na samą górę)
  4. ?>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  6. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  8. <head>
  9. <meta http-equiv="content-type" content="text/html; charset= utf-8" />
  10. <link rel="stylesheet" type="text/css" href="strona1.css" />
  11. <title>Strona startowa - Szpital</title>
  12. </head>
  13. <body>
  14. <div id="pojemnik">
  15. <div id="nag">
  16. <div id="menu">
  17.  
  18. <ul>
  19. <li><a href="index.php" title="Powrót do Strony głównej">Strona Główna</a></li>
  20. <li><a href="konto.php" title="Zarządzanie kontem">Konto</a></li>
  21. <li><a href="baza.php" title="Baza danych leków">Baza Leków</a></li>
  22. <li><a href="rejestracja.php" title="Założenie konta">Rejestracja</a></li>
  23. <li><a href="logowanie.php" title="Zalogowanie się">Logowanie</a></li>
  24. <?php
  25. echo 'Login:'.$_SESSION['login']; //zobaczysz czy coś pokazuje czy istnieje session
  26.  
  27. if(isset($_SESSION['login'])) // dostęp dla zalogowanego użytkownika
  28. {
  29. echo '<li><a href="wylogowanie.php" title="Wylogowanie się">Wylogowanie</a></li>';
  30. }
  31. else
  32. {
  33. echo '<li><a href="logowanie.php" title="Zalogowanie się">Logowanie</a></li>';
  34. }
  35. ?>
  36. </ul>
  37. </div>
  38. </div>
  39. <div id="zawartosc"></div>
  40. <div id="stopka"></div>
  41. </div>
  42. </body>
  43. </html>

[/php]
webspy
To spróbuj samo echo $_SESSION['login'];


Masz to na wirtualnym serwerze?

wickas
Ponownie Notice: Undefined variable: _SESSION in C:\xampp\htdocs\szpital\index.php on line 26 ,tak korzystam z XAMPP-a 1.81 na localhost.
webspy
daj taki kod u gory zamiast
  1. <?
  2. //to na sam początek strony (na samą górę)
  3. ?>

daj takie cos
  1. <?php ob_start(); error_reporting(E_ALL ^ E_NOTICE);
  2. ?>
wickas
Jest postęp, po dodaniu tego nic się nie wyświetla, a nawet pokazał się element wylogowania. http://pics.tinypic.pl/i/00237/w9ymdcr2pxyt.jpg Teraz pozostaje problem usunięcia logowanie.

Edit: jednak przedwcześnie się cieszyłem, jest to po prostu nadmiarowy link do logowania.
webspy
nie istenieje $_SESSION['login'] więc tak będzie

Dodaj np przed isset($_SESSION['login']) wykrzyknik i zobaczysz bo sie stanie (jesli cos sie stanie)

  1. if(!isset($_SESSION['login'])) // dostęp dla zalogowanego użytkownika
  2. {
  3. echo '<li><a href="wylogowanie.php" title="Wylogowanie się">Wylogowanie</a></li>';
  4. }
  5. else
  6. {
  7. echo '<li><a href="logowanie.php" title="Zalogowanie się">Logowanie</a></li>';
  8. }




Edit: moim zdaniem jest problem w pliku z logowaniem więc tam trzeba skupić uwagę, na początku uzupełnij sobie przekierowania że jesli zalogowany to przekierowuje na index.pl jezeli nie to na blad.php itd....
wickas
Po tym co podałeś w końcu się zalogowało ;> Ale teraz jest problem z wylogowaniem. Klikam na wylogowanie, nazwa skryptu się wyświetla,przekierowuje na strone index.php lecz nie niszczy sesji http://pics.tinypic.pl/i/00237/txgr8k5m4105.jpg AAA... Dobra nieważne, przekierowanie w skrypcie wylogowania - logowanie.php pomogło. Dziękuje za poświęcony na mnie czas.
webspy
Tylko nie wiem czy to Ci działa naprawdę bo jak dałeś ten wykrzyknik przed isset to po prostu odwróciłeś założenie if, weź teraz bez wykrzyknika i przetestuj.

Popracuj nad stroną logowania.
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.