Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: $_SESSION
Forum PHP.pl > Forum > PHP
Mlodycompany
Elo. Mam już skrypcik logowania który działa ale jako tako.
Więc.
Oto on:

index.php
  1. <?
  2.  
  3. $mysql_host = "localhost";
  4. $mysql_login = "root";
  5. $mysql_haslo = "haslo";
  6. $mysql_baza = "baza";
  7. $mysql_tabela = "tabela";
  8.  
  9. // **************************************************
  10. // ********** wylogowanie i zalogowanie z ustaleniem sesji...
  11. // **************************************************
  12.  
  13. $login = $_POST["login"];
  14. $haslo = $_POST["haslo"];
  15.  
  16. if ($_GET["login"]=="koniec") { // wylogowanie
  17. } else if ($login<>"" and $haslo<>"") {
  18. $haslo = md5($haslo);
  19. if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo)) {
  20. if (mysql_select_db($mysql_baza)) {
  21. $wynik=mysql_query("SELECT * FROM $mysql_tabela WHERE
  22. login='$login' and haslo='$haslo'");
  23. if (mysql_num_rows($wynik)==1) {
  24. $dane=mysql_fetch_array($wynik);
  25. $_SESSION["zalogowany"]="tak";
  26. $_SESSION["login"]=$dane["login"];
  27. $_SESSION["imie"]=$dane["imie"];
  28. $_SESSION["email"]=$dane["email"];
  29. }
  30. } else echo "Nie można połączyć się z bazą";
  31. mysql_close($baza);
  32. }
  33. }
  34. ?>
  35.  
  36. <table border="1" width="100%">
  37. <tr><td valign="top" width="200">
  38.  
  39. <p>
  40. lewy bok strony
  41. </p>
  42.  
  43. <?
  44.  
  45. // **************************************************
  46. // ********** panel formularza do zalogowania i wylogowania
  47. // **************************************************
  48.  
  49. if ($_SESSION["zalogowany"]=="tak") {
  50. echo "<p>Witaj <b>".$_SESSION["login"]."</b></p>";
  51. echo "<br><a href=\"index.php?login=koniec\">wyloguj się</a>";
  52. echo "<br><a href=\"zmiana.php\">zmień hasło</a>";
  53. } else {
  54.  
  55. echo <<<KONIEC
  56. <form action="index.php" method="post">
  57. <table>
  58. <tr>
  59.   <td align="right">login:&nbsp;</td>
  60.   <td><input type="text" name="login" /></td>
  61. </tr>
  62. <tr>
  63.   <td align="right">hasło:&nbsp;</td>
  64.   <td><input type="password" name="haslo" /></td>
  65. </tr>
  66. <tr>
  67.   <td colspan="2" align="right">
  68.   <input type="submit" value="zaloguj" /></td>
  69. </tr>
  70. </table>
  71. </form>
  72. <a href="rejestracja.php?opcja=przypomnij">przypomnij hasło</a></br />
  73. <a href="rejestracja.php">ZAREJESTRUJ SIĘ!</a>
  74. KONIEC;
  75.  
  76. }
  77. ?>
  78.  
  79. </td><td valign="top">
  80.  
  81. <p>
  82. prawy bok strony...
  83. </p>
  84. <p>
  85. <a href="index.php">index.php</a> - <a href="index2.php">index2.php</a>
  86. </p>
  87.  
  88. <?
  89. if ($_SESSION["zalogowany"]=="tak") {
  90. echo "<p>TEN tekst widzi tylko zalogowany użytkownik! </p>";
  91. }
  92. ?>
  93.  
  94. </td>
  95. <tr>
  96. </table>


index2.php
  1. <?
  2. ?>
  3.  
  4. <table border="1" width="100%">
  5. <tr><td valign="top" width="200">
  6.  
  7. <p>
  8. lewy bok strony
  9. </p>
  10.  
  11. <?
  12.  
  13. // **************************************************
  14. // ********** panel formularza do zalogowania i wylogowania
  15. // **************************************************
  16.  
  17. if ($_SESSION["zalogowany"]=="tak") {
  18. echo "<p>Witaj <b>".$_SESSION["login"]."</b></p>";
  19. echo "<br><a href=\"index.php?login=koniec\">wyloguj się</a>";
  20. echo "<br><a href=\"zmiana.php\">zmień hasło</a>";
  21. } else {
  22.  
  23. echo <<<KONIEC
  24. <form action="index.php" method="post">
  25. <table>
  26. <tr>
  27.   <td align="right">login:&nbsp;</td>
  28.   <td><input type="text" name="login" /></td>
  29. </tr>
  30. <tr>
  31.   <td align="right">hasło:&nbsp;</td>
  32.   <td><input type="password" name="haslo" /></td>
  33. </tr>
  34. <tr>
  35.   <td colspan="2" align="right">
  36.   <input type="submit" value="zaloguj" /></td>
  37. </tr>
  38. </table>
  39. </form>
  40. <a href="rejestracja.php?opcja=przypomnij">przypomnij hasło</a></br />
  41. <a href="rejestracja.php">ZAREJESTRUJ SIĘ!</a>
  42. KONIEC;
  43.  
  44. }
  45. ?>
  46.  
  47. </td><td valign="top">
  48.  
  49. <p>
  50. prawy bok strony...
  51. </p>
  52. <p>
  53. <a href="index.php">index.php</a> - <a href="index2.php">index2.php</a>
  54. </p>
  55.  
  56. <?
  57. if ($_SESSION["zalogowany"]=="tak") {
  58. echo "<p>TEN tekst widzi tylko zalogowany użytkownik! </p>";
  59. }
  60. ?>
  61.  
  62. </td>
  63. <tr>
  64. </table>


Problem jest w tym, że po zmianie strony z indexu na index2 zmienna $_SESSION['zalogowany'] zachowuje sie jakby jej nie bylo. Na indexie jest a na index2 juz nie. W czym jest problem?questionmark.gif
empuszek
1.Przy warunku o destroy session masz $_GET['login'] = "koniec"; Czemu?? Wszedzie masz na POST
2. Daj wszędzie SESSION_start(); (duże litery)
Sabistik
~empuszek:
1) no chyba wiadomo że wylogowanie odbywa się z linka
2) pokaż mi źródło twoich informacji o dużych literach - jak o czymś nie masz pojęcia to nie pisz lepiej nic.
xbigos
Cytat(empuszek @ 30.03.2008, 19:24:31 ) *
2. Daj wszędzie SESSION_start(); (duże litery)

Ja tutaj czegoś nie rozumiem co ten Pan napisał sciema jak nie wiem.exclamation.gif! polecam manual


Mlodycompany spróbój całe logowanie przeniesc do innego pliku a w index-ach zostaw tylko to co ma tam być.
Po zalogowaniu uzyj header na przeniesienie do strony glownej. Na moje oko kod masz dobrze. Chyba ze cos przeoczyłem.
Nie rozumiem dlaczego pchasz info o użytkowniku (mail i imie) do sesji. Pozdro

a tak poza tym to proponuję http://pl.php.net/add_slashes

Sory za dubel ale sabistik był prędzej a nie zauwazylem.
Mlodycompany
dane o emailu i innych rzeczach sa mi potrzebne poniewaz mam tez do zmiany danych dla uzytkownikow.

sprobuje zrobic na kazdej stronie rozpoczecie sesji ale chyba to nic nie da bo juz na niektorych mialem z poprzedniego logowania i tez nie działało, ale moze sie myle
xbigos
Ale nadal nie wiem po co pchasz to w sesje. Jeśli użytkownik bedzie chciał zmienic dane i przejdzie do odpowieniego formularza wtedy niech skrypt ewentualnie pobiera dane i wypełni formularz danymi. Po co za każdym razem pchać te info do sesji. W końcu zmiana danych użytkownika nie dzieje się po każdym zalogowaniu.

A co do tego session_start() to dajesz to wszędzie gdzie używasz sesji. Inaczej zmienne $_SESSION Ci nie zadziałają.
Mlodycompany
nie działa. dam moze skrypt indexu
  1. <?
  2. $PHP_SELF = "index.php";
  3. $get = pokaz;
  4. include('login.php');
  5. include('filmy/mysql.php');
  6. include('tablice/news.php');
  7.  
  8. ?>
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  10. <html>
  11. <head>
  12. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  13.  
  14. <meta http-equiv="Reply-to" content="mlodycompany@o2.pl">
  15. <meta http-equiv="Content-Language" content="pl">
  16. <link rel="stylesheet" href="style.css" type="text/css">
  17.  
  18.  
  19. </head>
  20. <body>
  21. <center>
  22. <table class="tabela2" cellpadding="0" cellspacing="0" border="0">
  23. <tr>
  24.  
  25. <th colspan="3" class="clock" valign="bottom" align="right"><? include('clock.php')?></th>
  26.  
  27. </tr>
  28. <tr>
  29.  
  30. <th colspan="3" bgcolor="#000000" height="80">R E K L A M A</th>
  31.  
  32. </tr>
  33. <tr>
  34.  
  35. <th class="menu" valign="top" align="right"><? include('menu.php')?></th>
  36. <th class="page" valign="top"><? include('sys.php')?></th>
  37. <th class="menu" valign="top"><? include('menu2.php')?></th>
  38.  
  39. </tr>
  40.  
  41. </table>
  42.  
  43. </body>
  44. </html>

PLIK SYS.PHP:
  1. <?
  2. $pokaz = $_GET['pokaz'];
  3. if($_GET['pokaz'] == $pokaz){
  4. include(''.$pokaz.'.php');
  5. ?>

Plik z rozpoczeciem sesji jest includowany (login.php) czyli sesja na kazdej stronie to i tak jest rozpoczeta wiec rozpoczecie sesji na kazdej podstronie jest bez sensowne biggrin.gif

Czy ktos jest mi wstanie pomoc czy nie?questionmark.gif
Pilsener
Cytat
Plik z rozpoczeciem sesji jest includowany (login.php) czyli sesja na kazdej stronie to i tak jest rozpoczeta wiec rozpoczecie sesji na kazdej podstronie jest bez sensowne


Skoro wiesz aż tyle, to po lekturze tego:
http://pl.php.net/manual/pl/function.session-start.php

Bez problemu dojdziesz, co jest nie tak.

PS >
Cytat
Czy ktos jest mi wstanie pomoc czy nie?
- i sugeruję nie pisać tonem rozpieszczonego dziecka, bo tutaj moderatorzy to nie przedszkolanki i mogą uznać, że pomóc Ci może kasacja postu i kolejne ostrzeżenie lub ban.
xbigos
No to w index daj na samym początku pliku session_start() a poza tym tak jak nospor mówił. Przeczytaj manuala.
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.