Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] - database:getInstance, session start()
Forum PHP.pl > Forum > Przedszkole
rahul
witam,mam problem w pewnej klasie.
Problem pojawia sie w momencie gdy chce kozystac z klasy odpowiedzialnej za bazy danych i w konstruktorze dodaje linijke $this->pdo = Database::GetInstance();
Klasa generalnie loguje uzytkownika i przypisuje do sesji jakies wartosci,wszystko ladnie dziala,do momentu jak dodaje ekstra kod.

function __construct()
{
session_start();
$this->pdo = Database::GetInstance();
}

przy przeladowaniu strony moja wartosc ustawiona w sesji znika.

help?!
nospor
1) session_start() daje się zazwyczaj na początku głównego skryptu. Przecież sesja ma być dostępna wszędzie a nie raz na jakiś czas gdzieś tam.
2) Nigdzie nie widzę być coś zapisywał do sesji
rahul
ok,ok. Przesle wiecej kodu. WIem juz gdzie lezy problem,lecz rozwiazac go nie moge. Chodzi o moja klase gdzie lacze sie do PDO,gdzies musi byc problem.

klasa.
  1.  
  2. <?php
  3. include_once('includes/db/databaseController.php');
  4.  
  5. class User {
  6.  
  7. private $pdo;
  8. private $name;
  9. private $email;
  10. private $role;
  11.  
  12. function __construct()
  13. {
  14. $this->pdo = Database::GetInstance();
  15. }
  16.  
  17. public function setRole($role)
  18. {
  19. $this->role = $role;
  20. }
  21. public function getRole()
  22. {
  23. return $this->role;
  24. }
  25.  
  26. function setName($name)
  27. {
  28. $this->name = $name;
  29. }
  30.  
  31. function getName()
  32. {
  33. return $this->name;
  34. }
  35.  
  36.  
  37. function login()
  38. {
  39. if($_POST['user_name'] == "rasztemberg_86@tlen.pl" && $_POST['user_password'] == "dupa")
  40. {
  41. $this ->name = "rafal";
  42. $this -> role ="user";
  43. $_SESSION['user_id'] = $this;
  44. return true;
  45. }
  46. elseif($_POST['user_name'] == "admin86@tlen.pl" && $_POST['user_password'] == "admin")
  47. {
  48. $this->name = "admin";
  49. $this->role = "admin";
  50. $_SESSION['user_id'] = $this;
  51. }
  52. else
  53. {
  54. return false;
  55. }
  56. }
  57.  
  58. function checkUserSession()
  59. {
  60. if (isset($_SESSION['user_id']))
  61. {
  62. return true;
  63. }
  64. else
  65. {
  66. return false;
  67. }
  68. }
  69.  
  70. function logout()
  71. {
  72. unset($_SESSION['user_id']);
  73. echo "session destroyed";
  74. }
  75.  
  76.  
  77.  
  78. } // end of class.
  79.  
  80.  
  81. ?>
  82.  


kontroller.
  1.  
  2. <?php
  3. require_once('controller/user.class.controller.php');
  4. require_once('view/login_form.php');
  5.  
  6. $user = new User;
  7. $user_v = new LoginView;
  8.  
  9. if(@$_POST['user_name'] && @$_POST['user_password'])
  10. {
  11. if( $user->login() == true)
  12. {
  13. //$user_v->showOptions();
  14. }
  15. else
  16. {
  17. echo "wrong pass";
  18. }
  19. }
  20.  
  21. if (@$_GET['function'] == "logout")
  22. {
  23. $user->logout();
  24. }
  25.  
  26. $correct_user = $user->checkUserSession();
  27.  
  28. if($correct_user == true)
  29. {
  30. $user_v->displayStatus(true);
  31. }else
  32. {
  33. $user_v->displayStatus(false);
  34. }
  35.  
  36. ?>
  37.  


i bazka danych,klasa.
  1. <?php
  2.  
  3. class Database extends PDO
  4. {
  5. // Store the single instance of Database
  6. private static $oInstance;
  7.  
  8. public function __construct()
  9. {
  10.  
  11. // DEVELOPMENT
  12.  
  13. $hostname = "localhost";
  14. $username = "root";
  15. $password = "admin";
  16. $sDataBaseName = "webshop";
  17.  
  18.  
  19.  
  20. try
  21. {
  22. parent::__construct('mysql:host=localhost;dbname=webshop', 'root', 'admin');
  23. //$pdo = new PDO('mysql:host=localhost;dbname=webshop', 'root', 'admin');
  24.  
  25. }catch(PDOException $e){
  26.  
  27. echo 'PHP Library error - PDO: ' . $e->getMessage();
  28. }
  29.  
  30.  
  31.  
  32. }
  33.  
  34. public static function GetInstance()
  35. {
  36. if (!self::$oInstance)
  37. {
  38. self::$oInstance = new Database();
  39. }
  40. return self::$oInstance;
  41. }
  42. }
  43.  
  44. ?>


odrazu podkresle ze baza danych i login dzialaja dla innych klas i w innych okolicznosciach,jednak gdy obie funckje sa w kontruktorze to jest lipa. przeniesienie session start gdzie indziej nic nie poprawia. no i nie powinno nawet. problem jest z klasa PDO bo jak zrobilem klase dla Mysqli to dzialalo. Jednak nie chce kozystac z mysli gdyz mam juz sporo zapytan pod pdo tak wiec zmiana wszystkiego bylaby strrasznie straszna.
any help?!?

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.