Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Dziwny problem z klasą obsługującą logowanie
--kamil--
post 15.12.2011, 19:27:15
Post #1





Goście







Siemka wszystkim, podczas pisania kodu natknąłem się na dziwny bład którego nie potrafię rozpracować, zerknijcie jak możecie,

  1. <?php
  2.  
  3. require_once '../config/config.php';
  4.  
  5. class user {
  6.  
  7. private $login;
  8. private $haslo;
  9.  
  10. function __construct($login, $haslo){
  11.  
  12. $this->login = $login;
  13. $this->haslo = $haslo;
  14.  
  15. }
  16.  
  17. static public function check(){
  18.  
  19.  
  20. if ($_SERVER['REQUEST_METHOD'] == 'POST'){
  21. {
  22. global $pdo;
  23.  
  24. $stmt = $pdo -> prepare("SELECT `login`as '$this->login', `haslo` as '$this->haslo' FROM users");
  25. $stmt -> bindValue(':login', $this->login, PDO::PARAM_STR);
  26. $stmt -> bindValue(':haslo', $this->haslo, PDO::PARAM_STR);
  27. $stmt -> execute();
  28. $stmt -> setFetchMode(PDO::FETCH_CLASS, 'user',
  29. array(0 => false));
  30. $user = $stmt -> fetch();
  31.  
  32. if ($user > 0){
  33.  
  34. $stmt -> closeCursor();
  35. return $user;
  36.  
  37. echo 'jestes zalogowany';
  38. }
  39. else
  40. {
  41. $stmt -> closeCursor();
  42.  
  43. return 0;
  44. echo 'blad';
  45. }
  46.  
  47. }
  48. }
  49. else {
  50. echo 'błąd w skrypcie';
  51. }
  52. }
  53.  
  54. }


a bład który mi się pojawia to:
Fatal error: Using $this when not in object context in ###/user.class.php on line 25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
--kamil--
post 15.12.2011, 19:54:26
Post #2





Goście







poprawiłem tamto, w sumie błąd przez niedopatrzenie, ale teraz znowu kicha

takie błędy:
Warning: Missing argument 2 for user::__construct() in ###/user.class.php on line 11

Notice: Undefined variable: pass in ###/user.class.php on line 14

w sumie nie powinno być błedu, var_dump() zwraca wartości zmiennych, więc nie wiem,
Go to the top of the page
+Quote Post
Adi32
post 15.12.2011, 20:30:05
Post #3





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Jest napisane, że brakuje drugiego paramentu w konstruktorze w klasie user czyli hasła.
Zobacz w miejscu gdzie tworzony jest obiekt klasy user czy wszystko jest ok.


--------------------
Wolałem języki z rodziny C ale poszedłem na łatwizne...
Go to the top of the page
+Quote Post
--kamil--
post 15.12.2011, 20:35:22
Post #4





Goście







w miejscu gdzie tworze obiekt jest raczej ok, zmienne są przekazywane do konstruktora, widze to po tym że przy użyciu var_dump($this->haslo); zwraca mi wartość przesłaną wcześniej.
Go to the top of the page
+Quote Post
Adi32
post 15.12.2011, 20:38:58
Post #5





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Tak przy okazji. Wiesz, że to bez sensu:

  1. $stmt -> closeCursor();
  2. return $user;
  3.  
  4. echo 'jestes zalogowany';


Return kończy działanie funkcji i metod.

A mógłbyś pokazać jak jest tworzony obiekt? Dziwne to wszystko.


--------------------
Wolałem języki z rodziny C ale poszedłem na łatwizne...
Go to the top of the page
+Quote Post
--kamil--
post 15.12.2011, 20:43:06
Post #6





Goście







heh, to echo 'blad'; to akurat pisalem wcześniej zanim pojawił się return, zapomniałem skasować tongue.gif

  1. $login = htmlspecialchars(trim($_POST['login']));
  2. $haslo = htmlspecialchars(trim($_POST['haslo']));
  3.  
  4. if (isset($login) && isset ($haslo)){
  5.  
  6. $user = new user($login, $haslo);
  7. $user->check();
  8.  
  9.  
  10. }


zmienne $login i $haslo zostają wczesniej przesłane z formularza, w hasle powinna byc jeszcze md5().
Go to the top of the page
+Quote Post
Adi32
post 15.12.2011, 20:48:20
Post #7





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


  1. public function check(){


--------------------
Wolałem języki z rodziny C ale poszedłem na łatwizne...
Go to the top of the page
+Quote Post
--kamil--
post 15.12.2011, 20:51:10
Post #8





Goście







no niestety, dalej lipa
Go to the top of the page
+Quote Post
kehator
post 17.03.2013, 21:43:22
Post #9





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 23.05.2009

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


witam
mam podobny problem. powyżej jednej zmiennej konstruktor się sypie, wyskakuje taki sam błąd.
znalazłem tylko jedno rozwiązanie i działa.
orginał tutaj - stackoverflow.com/questions/13606429/missing-argument-in-for-construct

  1. public function __construct(array $data) {
  2. $this->setId($data['id']);
  3. .
  4. .
  5. .
  6. .
  7. }


osobiście zrobiłem tak:
  1. public function __construct($data)
  2. {


Ten post edytował kehator 17.03.2013, 21:44:16
Go to the top of the page
+Quote Post
gothye
post 18.03.2013, 11:54:59
Post #10





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


bindujesz dane w PDO ,a wcale nie wykorzystujesz ich w tworzonym zapytaniu . Po co ?
No i gdzie warunek w klauzuli WHERE ?

Ten post edytował gothye 18.03.2013, 12:01:55


--------------------
Nie udzielam pomocy poprzez PW
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: 14.08.2025 - 08:40