Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Problem z $SESSION
ZeroCool
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.09.2010

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


Witam serdecznie,
w php "siedzę" od około 2-3 miesięcy. Ostatnio zacząłem się interesować tworzeniem systemu logowania/rejestracji na stronie. I napotkałem może niezbyt wielki, ale jednak problem.

Otóż, stworzyłem formularz do logowania, gdzie użytkownik podaje nazwę usera i hasło. Jeżeli poda poprawne dane, to tworzę sesję, której przypisuję nazwę użytkownika z bazy danych: $_SESSION['username'] = $dbusername; .

Po zalogowaniu na samej górze strony pojawia się Welcome i nazwa użytkownika. Pokazuje się ona praktycznie cały czas, aż do momentu, gdy nie kliknę na pasek adresu w przeglądarce i z tego poziomu przejdę na główną stronę. Wtedy wyświetla się już tylko Welcome. Co zrobić, by nazwa użytkownika (czyli, jak dobrze rozumiem również nazwa sesji) była widoczna cały czas?

Dodam, bo być może to jest istotne, że cały system logowania mam w pliku top.php, który w pliku index.php jest dodany na początku poprzez include("top.php");

Dziękuję już teraz za wszelkie wskazówki.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
kreciko
post
Post #2





Grupa: Zarejestrowani
Postów: 99
Pomógł: 7
Dołączył: 17.02.2010

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


A czy na początku w pliku index.php masz session_start()? A może kilka razy robisz session_start()?
Go to the top of the page
+Quote Post
ZeroCool
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.09.2010

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


Mam w pliku index.php na początku session_start();, w pliku top.php już nie (sprawdziłem i po dodaniu w top.php nic się niestety nie zmieniło).
Go to the top of the page
+Quote Post
kreciko
post
Post #4





Grupa: Zarejestrowani
Postów: 99
Pomógł: 7
Dołączył: 17.02.2010

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


Możesz podać więcej szczegółów, np. fragmenty kodu?
Go to the top of the page
+Quote Post
ZeroCool
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.09.2010

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


INDEX.PHP

  1. <?php
  2. ?>
  3. <html>
  4. <head>
  5. <link rel="Stylesheet" type="text/css" href="style.css">
  6. <link rel="stylesheet" type="text/css" href="shadowbox.css">
  7. <script type="text/javascript" src="shadowbox.js"></script>
  8. <script type="text/javascript" src="jquery.js"></script>
  9. <script type="text/javascript">
  10. Shadowbox.init();
  11. </script>
  12. </head>
  13. <body>
  14. <?php include("top.php"); ?>
  15. <div id="content">
  16. <div id="reg"></div>
  17. <?php
  18.  
  19. $page = $_GET['page'];
  20. if($page)
  21. {
  22. $path = $page.".php";
  23.  
  24. if(file_exists($path))
  25. {
  26. include($path);
  27. }
  28. else
  29. {
  30. echo "Taka strona nie istnieje.";
  31. }
  32. }
  33. else
  34. {
  35. echo "Content";
  36. }
  37.  
  38.  
  39. ?>
  40. </div>
  41. </body>
  42. </html>


TOP.PHP
  1. <div id="top">
  2. <?php
  3. if($_POST['login'])
  4. {
  5. $email = $_POST['email'];
  6. $password = $_POST['password'];
  7.  
  8. if($username&&$password)
  9. {
  10. require ('connect.php');
  11.  
  12. $query = mysql_query("SELECT * FROM users WHERE email='$email' AND password='$password'");
  13. $numrows = mysql_num_rows($query);
  14.  
  15. if($numrows!=0)
  16. {
  17. while ($row = mysql_fetch_assoc($query))
  18. {
  19. $dbid = $row['id'];
  20. $dbemail = $row['email'];
  21. $dbfirstname = $row['firstname'];
  22. $dblastname = $row['lastname'];
  23. $dbpassword = $row['password'];
  24. $dbcn = $row['cn'];
  25. $dbrn = $row['rn'];
  26. }
  27.  
  28. if($username==$dbusername&&$password==$dbpassword)
  29. {
  30. echo $_SESSION['username'] = $dbusername;
  31. }
  32. else
  33. {
  34. echo "Wrong username or password.";
  35. }
  36. }
  37. else
  38. echo "Wrong username or password.";
  39. }
  40. else
  41. {
  42. echo "Please enter a username and a password.";
  43. }
  44. }
  45. ?>
  46.  
  47. <?php
  48. if($_SESSION['username'])
  49. {
  50. echo "<font style='font-weight: normal;'>Welcome to my<font style='color: red;'>page</font>.pl | <font style='font-weight: normal;'>".date(d).".".date(m).".".date(Y)."</font>";
  51. }
  52. else
  53. {
  54. ?>
  55. <form action="index.php" method="POST">
  56. Username: <input type="text" name="email">
  57. Password: <input type="password" name="password"> <input type="submit" name="login" value="Login">
  58. | <a href="register.php" rel="shadowbox;height=300;width=350">Register</a> | <?php echo date(d).".".date(m).".".date(Y); ?></form>
  59. <?php
  60. }
  61. ?>
  62.  
  63. </div>
  64.  
  65. <?php
  66. $losowa = rand(1, 3);
  67. echo "<div id='logo'><img src='".$losowa.".JPG'></div>";
  68. ?>
Go to the top of the page
+Quote Post
-mkdes-
post
Post #6





Goście







Kod
if(isset($_SESSION['username'])){
echo'Użytkownik zalogowany: '.$_SESSION['username'];
}
Go to the top of the page
+Quote Post
kreciko
post
Post #7





Grupa: Zarejestrowani
Postów: 99
Pomógł: 7
Dołączył: 17.02.2010

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


Po prostu jak przechodzi do strony głównej nie przekazujesz żadnych zmiennych w tablicy $_POST, m.in. 'login' i dlatego ten cały wielki warunek z wyświetleniem nazwy użytkownika jest pomijany.

btw.
Cytat
by nazwa użytkownika (czyli, jak dobrze rozumiem również nazwa sesji)

To nie zawsze jest sobie równoważne. A często się zdarza, że tak nie jest. A i hasła w bazie danych powinno się trzymać w postaci zahaszowanej.
Go to the top of the page
+Quote Post
ZeroCool
post
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.09.2010

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


Wskazówka mkdes pomogła, dziękuję! Kreciko, Tobie również, za poświęcony czas.

Natomiast co do hasła, to ja umieszczam je w bazie w postaci sumy (tak to się chyba mówi) md5. O to chodzi z haszowaniem?
Go to the top of the page
+Quote Post
kreciko
post
Post #9





Grupa: Zarejestrowani
Postów: 99
Pomógł: 7
Dołączył: 17.02.2010

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


Tak.
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: 15.09.2025 - 04:34