Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] - database:getInstance, session start(), problem w konstruktorze.
rahul
post 12.04.2011, 11:23:29
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 5.03.2011

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


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?!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post 12.04.2011, 11:25:22
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
rahul
post 12.04.2011, 12:25:55
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 5.03.2011

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


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?!?

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 04:17