Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Na Każdej Podstronie Logowanie
Forum PHP.pl > Forum > Przedszkole
Matimor
Witajcie
Mam taki problem, zrobiłem system logowania na stronie lecz, gdy zaloguję się np. na stronie głównej i przejdę do innej zakładki to już jestem wylogowany i tak w kółko. Jak mogę zrobić to na podstawie ciasteczek? Tak aby zapisywało mi sesję itd. Wszystko jest zrobione pod sesion_start itp.

Aha dodam jeszcze, że w każdej zakładce login.php jest pod include.
wookieb
Nie podałeś kodu więc jak mamy ci pomóc. Modlitwą?
Poza tym czytaj manual w dziale z sesjami.
drake88
zastosuj PHPSESSID, która jest unikalnym ciągiem znaków, wysyłanym do przeglądarki użytkownika i zapisywana na dysku jako ciasteczko (cookie).
Matimor
Sry zapomniałem kodu.

  1. <?php
  2.  
  3.  
  4. $mode = $_GET['m'];
  5.  
  6. if(!$x)
  7. {
  8. mysql_connect('***','***','***')
  9. or die('Nieudane połączenie z bazą danych.');
  10. or die('Nie udało się wybrać bazy danych.');
  11. $x = true;
  12. }
  13.  
  14. if($mode == 'logout' && $_SESSION['zalogowany'])
  15. {
  16. echo '<meta http-equiv="refresh" content="0; url=http://www.adres-forum.pl">';
  17. }
  18. if(isset($_POST['submit_reg']))
  19. {
  20. $login = $_POST['login'];
  21. $password = $_POST['password'];
  22.  
  23. $password = md5($password);
  24. $sql = "INSERT INTO users (username, password) VALUES('$login','$password')";
  25. if(@mysql_query($sql))
  26. {
  27. echo '<meta http-equiv="refresh" content="0; url=./zakonczenie.php">';
  28. }
  29. else
  30. {
  31. echo 'bład przesylu danych!';
  32. }
  33. }
  34. else if(isset($_POST['submit_log']))
  35. {
  36. $login = $_POST['login'];
  37. $password = $_POST['password'];
  38.  
  39. $password = md5($password);
  40. $sql = "SELECT * FROM users WHERE username = '$login' AND password = '$password'";
  41. if(($result = @mysql_query($sql)))
  42. {
  43. $row = @mysql_fetch_array($result);
  44. if($row['password'] == $password)
  45. {
  46. $_SESSION['zalogowany'] = true;
  47. $_SESSION['username'] = $row['username'];
  48. }
  49. else
  50. {
  51. echo '<meta http-equiv="Refresh" content="0; URL=login.php"; />';
  52. }
  53. }
  54. else
  55. {
  56. echo 'Brak danych dla tego logina';
  57. }
  58.  
  59. }
  60. ?>
wookieb
A na każdej stronie masz session_start na początku?
I nie komentuje kompletnego braku zabezpieczenia przed sql injection...
Matimor
Tak mam.

Jak mam to zabezpieczyć?
drake88
chcesz zabezpieczyć sesje?

  1. $session_timeout = 60 * 1200; // czas po którym sesja ma wygasnąć w sekundach
  2.  
  3. $session_fingerprint = @md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']);
  4.  
  5.  
  6.  
  7.  
  8. if (
  9.  
  10. (isset($_SESSION['last_active']) && $_SESSION['last_active']<(time()-$session_timeout))
  11.  
  12. || (isset($_SESSION['fingerprint']) && $_SESSION['fingerprint']!=$session_fingerprint))
  13.  
  14. {
  15.  
  16. @setcookie(session_name(), '', time()-3600, '/');
  17.  
  18.  
  19. }
  20.  
  21.  
  22.  
  23.  
  24. $_SESSION['last_active'] = time();
  25.  
  26. $_SESSION['fingerprint'] = $session_fingerprint;
Matimor
Nie wiem czy właśnie o to chodziło ale też się przyda, chodzi dokładniej o sql injection.
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.