Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Logowanie - sesje się zrywają.
Forum PHP.pl > Forum > Przedszkole
L0k0
Jako, że w 90% kursów w necie uczą sesji na podstawie licznika stron i jakoś nie przekłada mi się to na prace z projektem proszę o pomoc.

POBLEM:
Kod
Po zalogowaniu klikam w jeden z odnośników do Dodaj wiadomość lub Edytuj wiadomość - linki otwierają podane podstrony ale w tym momencie 'zalogowanie' wygasa i muszę się od nowa zalogować


Plik z logowaniem:
  1. <?php
  2. include('dbConn.php');
  3. if (!isset($_SESSION['zalogowany'])) {
  4. if ($_GET['wykonaj'] == "zaloguj") {
  5. $wynik = mysql_query("select * from users where user = '".$_POST['login']."' and password = '".$_POST['haslo']."'");
  6. if (!mysql_fetch_assoc($wynik)) {
  7. echo "Podana nazwa użytkownika lub hasło nie jest poprawne";
  8. ?>
  9. <a href="java script:history.back()">Wstecz</a>
  10. <?php
  11.  
  12. } else {
  13. $_SESSION['zalogowany'] = $_POST['login'];
  14. echo "Zalogowano jako: ".$_POST['login'];
  15. ?>
  16. <a href="index.php?page=dodaj">Dodaj wiadomość <br></a>
  17. <a href="index.php?page=edytuj">Edytuj wiadomość</a>
  18. <form action="<?php session_destroy(); ?>">
  19. <input type="submit" value="Wyloguj"><br>
  20. <?php
  21. }
  22. } else {
  23.  
  24. echo "Logowanie<br><br>";
  25. echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."?wykonaj=zaloguj\">";
  26. echo "<table><tr><td>";
  27. echo "Login:";
  28. echo "</td><td>";
  29. echo "<input type=\"text\" name=\"login\" size=\"10\"><br>";
  30. echo "</td></tr><tr><td>";
  31. echo "Hasło:";
  32. echo "</td><td>";
  33. echo "<input type=\"password\" name=\"haslo\" size=\"10\"><br>";
  34. echo "</td></tr></table>";
  35. echo "<p><center><input type=\"submit\" value=\"Zaloguj\"></p>";
  36. echo "</form>";
  37. }
  38. } else {
  39. echo "Jesteś już zalogowany";
  40. ?>
  41.  
  42. <form action="<?php session_destroy(); ?>">
  43. <input type="submit" value="Wyloguj"><br>
  44. <?php
  45. }
  46. ?>


Plik Dodaj Wiadomość:
  1. <h1>Dodaj nową wiadomość</h1><br><br>
  2. <form enctype="multipartform-data" method="post" action="./pages/addPostDB.php">
  3.  
  4. <table width="400">
  5. <tr>
  6. <td align="left">
  7. <b>Data:</b>
  8. </td>
  9. <td>
  10. <input type="text" size="8" name="data">
  11. </td>
  12. </tr>
  13. <tr>
  14. <td>
  15. <b>Temat:</b>
  16. </td>
  17. <td>
  18. <input type="text" size="77" name="temat">
  19. </td>
  20. </tr>
  21. <tr>
  22. <td>
  23. <b>Treść</b>
  24. </td>
  25. <td>
  26. <textarea name="tresc" class="tinymce"></textarea>
  27. </td>
  28. </tr>
  29. <tr>
  30. <td><b>Podpis</b></td>
  31. <td><input type="text" name="podpis" size="30">
  32. </td>
  33. </tr>
  34. <tr>
  35.  
  36. <td><b>Załączniki:</b></td>
  37.  
  38. <td><a href="./pages/addFile.php" onclick="window.open('./pages/addFile.php', 'Dodaj pliki', 'width=400', 'height=100').focus(); return false"><input type="button" value="Dodaj"></a></td>
  39.  
  40. </tr>
  41.  
  42. </table>
  43. <table width="470">
  44. <tr><td align="center">
  45. <input style="background-color:red; color: white;" type="reset" value="Wyczyść">
  46. <input style="background-color:green; color: white;" type="submit" value="Dodaj">
  47. </td>
  48. </tr>
  49. </table>
  50. </form>
  51.  
  52. </center>


Plik pierwszy osadzony jest w div'ie po prawej stronie (prawa.php).
Plik drugi osadzony jest w div'ie na środku (main.php).
ylk
A w pliku dodającym/edytującym wiadomość masz session_start()?
L0k0
Cytat(ylk @ 22.03.2011, 13:44:34 ) *
A w pliku dodającym/edytującym wiadomość masz session_start()?

Tak, dodałem już w pliku edycji i dodania wiadomości i nic...

  1. <?php
  2. ?>
  3. <center>
  4. <h1>Dodaj nową wiadomość</h1><br><br>
  5. <form enctype="multipartform-data" method="post" action="./pages/addPostDB.php">
  6. ...
kadlub
a twój plik edycji ma rozszerzenie php może html
gorzat
ale Ty przeciez jak sie zalogujesz to potem od razu niszczysz sesje, bo w tym samym ELSE masz session_destroy(); wylogowanie zrob w osobnym pliku.
L0k0
Cytat(kadlub @ 22.03.2011, 14:17:41 ) *
a twój plik edycji ma rozszerzenie php może html


Wszystkie pliki powyższe maja rozszerzenie .php.

Cytat(gorzat @ 22.03.2011, 14:17:58 ) *
ale Ty przeciez jak sie zalogujesz to potem od razu niszczysz sesje, bo w tym samym ELSE masz session_destroy(); wylogowanie zrob w osobnym pliku.


Session_destroy() jest aktywny PO wciśnięciu przycisku WYLOGUJ. Jest wstawiony w action formularza, więc bez tego się nie wykonuje.
sadistic_son
Co to w ogóle jest?!?!?!
  1. <form action="<?php session_destroy(); ?>">
questionmark.gifquestionmark.gif Mylisz się, to Twoje session_destroy wykona się w trakcie wyświetlania formaularza a nie po kliknięciu.

Zrób na początku strony takie coś:
  1. if(isset($_POST['wyloguj'])){session_destroy();}
i po problemie. Tylko w action formularza dodaj plik z tym warunkiem i nadaj name przyciskowi wyloguj, bo teraz masz samo value.
L0k0
Zadziałało, dzięki! thumbsupsmileyanim.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.