Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z sesją w PHP - Nie mogę się odnieść do id użytkownika
Baku12345
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 23.04.2011

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


Witam
Działanie mojego skryptu ma być proste, ma polegać na tym, że po zalogowaniu się danego użytkownika wyświetli mu się lista kursów ze statusami do których ma dostęp a do których nie.

Mam w bazie między innymi takie tabele jak:
- users (id, name, login, password) - tabela przechowuje dane użytkownika
- courses (id, lp, name, url, category_id) - tabela przechowuje kursy, linki do nich i id kategorii do jakiej należy dany kurs
- access_courses (id, id_user, id_course, status) - tabela przechowuje informacje który użytkownik ma dostęp do którego kursu i wyświetla odpowiedni status

To mi działa w połączeniu z kodem, który sobie napisałem, ale problem jest w linii 75. Dokładnie w zapytaniu
  1. SELECT * FROM courses c, access_courses ac WHERE ac.id_user = $_SESSION['id'] && ac.id_course = c.id ORDER BY lp ASC

Jeżeli to wstawię to jest problem, natomiast jeżeli wstawię na sztywno id użytkownika np. tak
  1. SELECT * FROM courses c, access_courses ac WHERE ac.id_user = 1 && ac.id_course = c.id ORDER BY lp ASC

to wszystko jest idealnie. Jednak tak jak wspomniałem będzie więcej użytkowników i id chcę pobierać z sesji.

Poniżej umieszczam swój fragment kodu. Proszę o przeanalizowanie go i podpowiedź jak to naprawić.


  1. <?php
  2. .
  3. . // tu nieistotny fragment kodu
  4. .
  5. if (isset($_POST['login']) && isset($_POST['password']))
  6. {
  7. if (!empty($_POST['login']) && !empty($_POST['password']))
  8. {
  9. $login = addslashes(strip_tags($_POST['login']));
  10. $password = addslashes(strip_tags(md5($_POST['password'])));
  11.  
  12. $stmt = $pdo->prepare("SELECT * FROM users where login = '".$login."' && password = '".$password."';");
  13. $stmt->execute();
  14.  
  15. if ($row = $stmt->fetchAll(PDO::FETCH_ASSOC))
  16. {
  17. $_SESSION['id'] = $row['id'];
  18. $_SESSION['online'] = 1;
  19. $_SESSION['time'] = time();
  20. $_SESSION['user'] = $login;
  21. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  22. }
  23. else
  24. {
  25. $logon = new cTemplate;
  26.  
  27. $logon->assign['msg'] = "podałeś błędny login lub hasło!<br>spróbuj ponownie";
  28. $page->assign['container'] = $logon->parse("templates/logon.html");
  29. $page->assign['title'] = "Logowanie";
  30. $main->assign['page'] = $page->parse("templates/page.html");
  31. echo $main->parse("templates/index.html");
  32. }
  33. }
  34. else
  35. {
  36. $logon = new cTemplate;
  37.  
  38. $logon->assign['msg'] = "nie wprowadziłeś wszystkich danych<br>spróbuj ponownie";
  39. $page->assign['container'] = $logon->parse("templates/logon.html");
  40. $page->assign['title'] = "Logowanie";
  41. $main->assign['page'] = $page->parse("templates/page.html");
  42. echo $main->parse("templates/index.html");
  43. }
  44. }
  45.  
  46. if (isset($_SESSION['online']) && isset($_SESSION['time']) && $_SESSION['user'] && ($_SESSION['online']===1))
  47. {
  48. if (time()-$_SESSION['time'] < 900)
  49. {
  50. $_SESSION['time'] = time();
  51.  
  52. if (!isset($_GET['action']))
  53. {
  54. $_GET['action'] = "";
  55. }
  56.  
  57. .
  58. . // tu nieistotny fragment kodu
  59. .
  60.  
  61. switch ($_GET['action'])
  62. {
  63. default:
  64. if (isset($_GET['cat_id']))
  65. {
  66. $cat_id = $_GET['cat_id'];
  67.  
  68. $stmt = $pdo->prepare("SELECT * FROM courses c, access_courses ac WHERE ac.id_user = 1 && ac.id_course = c.id && c.category_id = $cat_id ORDER BY lp ASC");
  69. $stmt->execute();
  70. }
  71. else
  72. {
  73. $stmt = $pdo->prepare("SELECT * FROM courses c, access_courses ac WHERE ac.id_user = $_SESSION['id'] && ac.id_course = c.id ORDER BY lp ASC");
  74. $stmt->execute();
  75. }
  76.  
  77. .
  78. . // tu fragment wyświetlający listę kursów dostępnych dla danego użytkownika
  79. .
  80. }
  81.  
  82. $page->assign['container'] = $panel->parse("templates/panel.html");
  83. }
  84. else
  85. {
  86. $logon = new cTemplate;
  87.  
  88. $logon->assign['msg'] = "przekroczono czas bezczynności<br>zaloguj się ponownie";
  89. $page->assign['container'] = $logon->parse("templates/logon.html");
  90. $page->assign['title'] = "Logowanie";
  91. }
  92. }
  93. else
  94. {
  95. $logon = new cTemplate;
  96.  
  97. $logon->assign['msg'] = "<br>podaj login i hasło<br>";
  98. $page->assign['container'] = $logon->parse("templates/logon.html");
  99. $page->assign['title'] = "Witaj na portalu";
  100. }
  101.  
  102. $main->assign['page'] = $page->parse("templates/page.html");
  103.  
  104. echo $main->parse("templates/index.html");
  105. ?>


Wydaje mi się że problem może być z tym że sesja nie jest globalna, ale może się mylę. Proszę o pomoc.
Z góry bardzo dziękuję.
Go to the top of the page
+Quote Post

Posty w temacie
- Baku12345   Problem z sesją w PHP - Nie mogę się odnieść do id użytkownika   20.09.2016, 06:12:41
- - viking   Twój kod w tym miejscu: [PHP] pobierz, plaintext ...   20.09.2016, 06:28:54
- - Baku12345   Dzięki za sugestię dotyczącą tego logowania, poczy...   20.09.2016, 20:20:07
- - viking   var_dump($_SESSION['id']);   20.09.2016, 20:28:49
- - kpt_lucek   Głupie pytanie... A dajesz: [PHP] pobierz, plaint...   20.09.2016, 20:56:02
- - Baku12345   Tak session_start daję Skróciłem jeszcze bardzie...   20.09.2016, 23:25:41
- - kpt_lucek   Zrób print_r/var_dump z $row = $stmt-...   20.09.2016, 23:47:03
- - Baku12345   Wprowadziłem chwilowo taki kod pomiędzy default a ...   21.09.2016, 04:10:24
- - Star   W jakim celu dajesz tutaj średnik? Nie mam na myśl...   21.09.2016, 05:29:27
- - viking   To teraz jeszcze var_dump($row). fetchAll zwr...   21.09.2016, 07:05:03
- - daro0   No rozpacz [PHP] pobierz, plaintext <?p...   21.09.2016, 09:20:32
- - kpt_lucek   Cytat(viking @ 21.09.2016, 08:05:03 )...   21.09.2016, 13:00:06
- - Baku12345   Dziękuję Wam wszystkim za odpowiedzi, wcześniej ni...   22.09.2016, 06:52:05
- - viking   Chyba czytasz co się do ciebie pisze? Cytatarray(...   22.09.2016, 07:09:18
- - Baku12345   A no faktycznie głupi błąd, powinienem był pobrać ...   22.09.2016, 21:50:17
- - daro0   No to sobie sprawdź co Ci wypluje hash_hmac, bez w...   23.09.2016, 06:55:09
- - Baku12345   To wiem, że zawsze po obrobieniu hasła, zmianie so...   23.09.2016, 20:37:53
- - daro0   No cóż, z tego co widać to nie takie proste... htt...   24.09.2016, 06:16:49


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: 14.10.2025 - 03:18