Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z includowaniem i sesjami
Forum PHP.pl > Forum > Przedszkole
shifu
Witam mam problem z includowaniem. I za chiny ludowe nie wiem jak sobie z tym poradzić. Mam takie pliki:
index.php
  1. include('klasy/request.php');
  2. @$strona=$_GET['strona'];
  3. $eee= new wstaw_html();
  4. $eee->wstaw_naglowek($strona);
  5.  
  6. $eee->wstaw_content($strona);
  7. $eee->wstaw_stopke();


request.php
  1. class wstaw_html
  2. {
  3.  
  4. public function wstaw_naglowek($title)
  5. {
  6. switch ($title)
  7. {
  8. case 'content':
  9. echo "<HTML><HEAD><TITLE>".$title."</TITLE></HEAD><BODY>";
  10. }
  11.  
  12. }
  13. public function wstaw_stopke()
  14. {
  15.  
  16. echo "</BODY></HTML>";
  17.  
  18. }
  19.  
  20. public function wstaw_content($strona)
  21. {
  22. if (file_exists('include/'.$strona.'.php'))
  23. {
  24. require('include/'.$strona.'.php');
  25.  
  26. }else{
  27.  
  28. include('include/404.php');
  29. }
  30.  
  31. }
  32. }
  33.  


content.php
  1. try
  2. {
  3. require('klasy/common.php');
  4.  
  5. if($session -> getUser() -> isAnonymous())
  6. {
  7. header('Location: login.php');
  8. }
  9. else
  10. {
  11.  
  12. echo "udalo sie <a href='index.php?strona=content2'>2 strona</a>";
  13.  
  14.  
  15.  
  16.  
  17.  
  18. }
  19.  
  20.  
  21. }
  22. catch(PDOException $exception)
  23. {
  24. echo 'Blad bazy danych: '.$exception->getMessage();
  25. }


Problem jest taki, że skrypt nie wyświetla nic. Wstawia nagłówek i przerywa działanie sad.gif Podpowie mi ktoś co robię źle?
Jeśli podaruję sobie includowanie i zawartość content.php znajduje się w index.php to wszystko działa jak należy.
nospor
Wlacz wyswietlanie bledow a twoim oczom ukaze sie jasnosc.
shifu
No i ukazała się ale potem chyba prąd wyłączyli facepalmxd.gif
Jednak rozwiązałem jeden problem to pojawił się kolejny sad.gif
Pojawia się taki błąd:
Fatal error: Call to a member function exec() on a non-object in /home/mitos/public_html/include/klasy/session.php on line 162
zawartość session.php
  1. <?php
  2.  
  3. define('COOKIE_NAME', 'tuibgidf'); // losowe
  4. define('COOKIE_EXPIRE', 3600); // 1 godzina
  5.  
  6. class session
  7. {
  8. private $id;
  9. private $ip;
  10. private $browser;
  11. private $time;
  12. private $user;
  13. public function __construct()
  14. {
  15. global $pdo, $request;
  16.  
  17. // Kontrola poprawnosci ciastka
  18. if(!isset($_COOKIE[COOKIE_NAME]))
  19. {
  20. $_COOKIE[COOKIE_NAME] = '';
  21. }
  22. if(strlen($_COOKIE[COOKIE_NAME]) != 40)
  23. {
  24. $this -> create();
  25. }
  26. // Wyslanie zapytania o sesje. Od razu sprawdzamy
  27. // jej waznosc oraz zgodnosc IP i przegladarki
  28. $stmt = $pdo -> prepare('SELECT
  29. session_user, session_ip,
  30. session_browser, session_time FROM sessions
  31. WHERE session_id = :sid AND
  32. session_ip = :sip AND
  33. session_browser = :sbrowser AND
  34. session_time > :time
  35. ');
  36. $stmt -> bindValue(':sid', $_COOKIE[COOKIE_NAME],
  37. PDO::PARAM_STR);
  38. $stmt -> bindValue(':sip', $request -> getIp(),
  39. PDO::PARAM_STR);
  40. $stmt -> bindValue(':sbrowser', $request -> getBrowser(),
  41. PDO::PARAM_STR);
  42. $stmt -> bindValue(':time', time() - COOKIE_EXPIRE,
  43. PDO::PARAM_INT);
  44. $stmt -> execute();
  45. if($session = $stmt -> fetch(PDO::FETCH_ASSOC))
  46. {
  47. $stmt -> closeCursor();
  48. $this -> id = $_COOKIE[COOKIE_NAME];
  49. $this -> ip = $session['session_ip'];
  50. $this -> browser = $session['session_browser'];
  51. $this -> time = $session['session_time'];
  52. setcookie(COOKIE_NAME, $this -> id,
  53. time() + COOKIE_EXPIRE);
  54. $stmt = $pdo -> prepare('UPDATE sessions SET
  55. session_time = :time WHERE session_id = :sid');
  56. $stmt -> bindValue(':sid', $_COOKIE[COOKIE_NAME],
  57. PDO::PARAM_STR);
  58. $stmt -> bindValue(':time', time(), PDO::PARAM_INT);
  59. $stmt -> execute();
  60. if($session['session_user'] == 0)
  61. {
  62. // sesja anonimowa
  63. $this -> user = new user(true);
  64. }
  65. else
  66. {
  67. // sesja zalogowanego
  68. $stmt = $pdo -> prepare('SELECT user_id AS `id`,
  69. user_login AS `login`,
  70. user_password AS `password`,
  71. user_lastvisit AS `lastvisit`
  72. FROM users WHERE user_id=:uid');
  73. $stmt -> bindValue(':uid',
  74. $session['session_user'], PDO::PARAM_INT);
  75. $stmt -> execute();
  76. $stmt -> setFetchMode(PDO::FETCH_CLASS, 'user',
  77. array(0 => false));
  78. if($this -> user = $stmt -> fetch())
  79. {
  80. $stmt -> closeCursor();
  81. }
  82. else
  83. {
  84. $stmt -> closeCursor();
  85. $this -> create();
  86. }
  87. }
  88. }
  89. else
  90. {
  91. $stmt -> closeCursor();
  92. $this -> create();
  93. }
  94. } // end __construct();
  95. private function create()
  96. {
  97. global $pdo, $request;
  98. $this -> garbageCollector();
  99.  
  100. // utworz nowa anonimowa sesje. Wczesniej usun stare z bazy
  101. $this -> id = sha1(uniqid(time().$request->getIp()));
  102. setcookie(COOKIE_NAME, $this -> id, time() + COOKIE_EXPIRE);
  103. $stmt = $pdo -> prepare('INSERT INTO sessions (session_id,
  104. session_user, session_time, session_browser,
  105. session_ip) VALUES(
  106. :session_id, 0, :session_time,
  107. :session_browser, :session_ip
  108. )');
  109. $stmt -> bindValue(':session_id', $this -> id,
  110. PDO::PARAM_STR);
  111. $stmt -> bindValue(':session_ip', $request -> getIp(),
  112. PDO::PARAM_STR);
  113. $stmt -> bindValue(':session_browser',
  114. $request -> getBrowser(), PDO::PARAM_STR);
  115. $stmt -> bindValue(':session_time', time(), PDO::PARAM_INT);
  116. $stmt -> execute();
  117. $this -> user = new user(true);
  118. } // end create();
  119. public function update(user $user)
  120. {
  121. global $pdo, $request;
  122.  
  123. if($user -> isAnonymous())
  124. {
  125. if($this -> user -> isAnonymous())
  126. {
  127. throw new Exception('Próba przerejestrowania
  128. anonimowego użytkownika!');
  129. }
  130. // Aktualizacja ostatnich odwiedzin, jesli
  131. // wylogowujemy usera.
  132. $stmt = $pdo -> prepare('UPDATE users SET
  133. user_lastvisit = :lastvisit
  134. WHERE user_id = :uid');
  135. $stmt -> bindValue(':lastvisit', time(),
  136. PDO::PARAM_INT);
  137. $stmt -> bindValue(':uid', $this -> user -> getId(),
  138. PDO::PARAM_INT);
  139. $stmt -> execute();
  140. }
  141. // Zmiana ID sesji oraz przypisanie do niej usera
  142. $newId = sha1(uniqid(time().$request->getIp()));
  143. setcookie(COOKIE_NAME, $newId, time() + COOKIE_EXPIRE);
  144. $stmt = $pdo -> prepare('UPDATE sessions SET
  145. session_id = :new_id, session_user = :user
  146. WHERE session_id = :sid');
  147. $stmt -> bindValue(':new_id', $newId, PDO::PARAM_STR);
  148. $stmt -> bindValue(':sid', $this -> id, PDO::PARAM_STR);
  149. $stmt -> bindValue(':user', $user -> getId(),
  150. PDO::PARAM_INT);
  151. $stmt -> execute();
  152.  
  153. $this -> id = $newId;
  154. $this -> user = $user;
  155. } // end update();
  156. private function garbageCollector()
  157. {
  158. global $pdo;
  159.  
  160. // Usun stare sesje i przenies do uzytkownikow
  161. // czas ostatniej aktywnosci jako ostatnia wizyte
  162. $pdo -> exec('UPDATE users, sessions
  163. SET users.user_lastvisit = sessions.session_time
  164. WHERE users.user_id=sessions.session_user AND
  165. sessions.session_time < '.(time() - COOKIE_EXPIRE));
  166. $pdo -> exec('DELETE FROM sessions WHERE
  167. session_time < '.(time() - COOKIE_EXPIRE));
  168. } // end garbageCollector();
  169.  
  170. public function getUser()
  171. {
  172. return $this -> user;
  173. } // end getUser();
  174. }
  175. ?>

W tym, że znów bez includowania wszystko smiga
nospor
ZMienna $pdo nie istnieje.
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.