Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]logowanie
eminiasty
post 19.12.2017, 01:28:44
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Dlaczego po logowaniu wchodzi do czesci oznaczonej jako //2 skoro powinno chyba wchodzic w //1 i zwracac komunikat logowania?

Kontroler:

  1. function login()
  2. {
  3. $this->form_validation->set_rules('login_log', 'Login', 'trim|required|callback_checkLoginLog');
  4. $this->form_validation->set_rules('password_log', 'Hasło', 'trim|required|callback_checkPasswordLog');
  5.  
  6. if ($this->form_validation->run() == FALSE) {
  7. //nie zalogowany
  8. $this->session->set_flashdata('item', array('message' => validation_errors(), 'class' => 'danger'));
  9. redirect("/");
  10.  
  11. } else {
  12.  
  13. $login = $this->input->post('login');
  14. $password = $this->input->post('password');
  15.  
  16. $result = $this->Model_User->login($login, $password);
  17.  
  18. if ($result) {
  19. //1
  20. $this->session->set_flashdata('item', array('message' => 'Zalogowany!', 'class' => 'success'));
  21. redirect("/");
  22. }
  23. else{
  24. //2
  25. echo 'sss';
  26. }
  27.  
  28.  
  29. }
  30. }


Model:

  1. public function login($login, $password)
  2. {
  3. //pobranie hash
  4. $this->db->select('password');
  5. $this->db->from('user');
  6. $this->db->where('login', $login);
  7.  
  8. $query = $this->db->get();
  9. if ($query->num_rows() == 1) {
  10.  
  11. $result = $query->result_array();
  12. foreach ($result as $item) {
  13. if(password_verify($password,$item['password'])) {
  14. return TRUE;
  15. }
  16. else{
  17. return FALSE;
  18. }
  19. }
  20. }
  21. else{
  22. return FALSE;
  23. }
  24.  
  25.  
  26. }



//

W postaci:

  1. $this->Model_User->login($login, $password);
  2. $this->session->set_flashdata('item', array('message' => 'Zalogowany!', 'class' => 'success'));
  3. redirect("/");


działa ok, dalczego?

Ten post edytował eminiasty 19.12.2017, 01:49:43
Go to the top of the page
+Quote Post
nospor
post 19.12.2017, 06:31:19
Post #2





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




Cytat
Dlaczego po logowaniu wchodzi do czesci oznaczonej jako //2


bo login() zwraca false, dosc logiczne, nieprawdaz?


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

"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
eminiasty
post 19.12.2017, 20:51:11
Post #3





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


przy wpisaniu dobrego hasla powinien zrocic true?
Go to the top of the page
+Quote Post
nospor
post 19.12.2017, 20:53:14
Post #4





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




Co powinien a co zwraca to dwie rozne rzeczy. Juz moglbys sie tego nauczyc. Twoja funkcja login() zwraca false w dwoch miejscach. Zdebuguj te miejsca a bedziesz wiedzial czemu zwraca false.


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

"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
eminiasty
post 20.12.2017, 17:41:28
Post #5





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Nie rozumiem tego dlatego po kolei, rozbije na kwałki i może ktoś mnie oswieci:

//to w modelu - czesci obslugujacej
  1.  
  2. ..
  3. //pobieram hash na podstawie wpisanego loginu
  4. if ($query->num_rows() == 1) {
  5. //jesli login jest to idziemy dalej
  6. $result = $query->result_array();
  7. foreach ($result as $item) {
  8. //weryfikacja czy wpisane haslo, zgadza sie z hashem z bazy
  9. if(password_verify($password,$item['password'])) {
  10. return TRUE; //jesli tak no to zwracam TRUE, inaczej zaloguj sie czy zrob cos tam
  11. }
  12. else{
  13. return FALSE; //jesli nie to odrzucam
  14. }
  15. }
  16. }
  17. else{
  18. return FALSE;
  19. }
  20.  


//przechodze do kontrolera

  1.  
  2. //pobieram odpowiednio login i haslo z formularza
  3. $login = $this->input->post('login');
  4. $password = $this->input->post('password');
  5.  
  6. //przypisuje wywolanie metody do zmiennej
  7. $result = $this->Model_User->login($login, $password);
  8.  
  9. //a tu jest zonk? bo metoda ktora zwraca mi true nie dziala
  10. //czyli sprawdzam czy $result jest true tak jak to bylo w modelu po zalogowaniu
  11. if ($result) {
  12. //1
  13. $this->session->set_flashdata('item', array('message' => 'Zalogowany!', 'class' => 'success'));
  14. redirect("/");
  15. }
  16. //czesc 2 mozna nawet wyrzucic
  17. //najwazniejsze jest ze $result nie przyjmuje true , gdzie to ginie?!
  18.  
Go to the top of the page
+Quote Post
nospor
post 20.12.2017, 18:04:03
Post #6





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




Ale ty nie pisz komentarzy do funkcji, bo to jej nie debuguje.... Ty rob var_dump() na kazdym etapie to bedziesz wiedzial co sie pieprzy.


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

"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
eminiasty
post 20.12.2017, 23:05:00
Post #7





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


var_dump($result) mowi ze jest NULL, ale nie moge zrozumiec dlaczego?

wartosc z modelu wgl nie dochodzi do kontrolera?
Go to the top of the page
+Quote Post
markonix
post 21.12.2017, 00:02:09
Post #8





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


To debuguj model...

$result = $query->result_array();

Jeżeli tutaj nie ma tablicy, to następujący foreach się nie wykona ani razu więc jest opcja że nie zostanie zwrócony true lub false.
W ogóle CI to popularny FW, zainstaluj jakiegoś gotowca do logowania...


--------------------
Go to the top of the page
+Quote Post
eminiasty
post 21.12.2017, 00:37:35
Post #9





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


....

  1. $this->form_validation->set_rules('login_log', '


  1. $login = $this->input->post('login');


kocham takie błędy, dziękuję zainteresowanym
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.04.2024 - 16:28