Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Nie działa return w funkcji ? PHP
bubolski
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 28.10.2009

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


Witam,

wziałem się za przerobienie starej strony www na bardziej zaawansowaną. Chcę zrobić ją przy użyciu funkcji , obiektów etc. I o dziwo mam problem na samym początku.

Zacząłem tworzyć panel logowania i jedna funkcja nie zwraca mi zmiennej.

Posiadam jedną funkcje do nawiązania połączenia z bazą danych. Druga natomiast sprawdza, czy użytkownik istnieje w bazie i jak tak to tworzy się zmienna sesji , a jak nie to zwraca odpowiedni komunikat a konkretnie $wynik 1 lub 2 (1 istnieje login , ale niepoprawne hasło ; 2 zapytanie sql zwrociło 0 wierszy więc user nie istnieje). Jednak nie zwraca mi się wartość wynik.

Mam 2 pliki index.php i function.php

Index.php
  1. <?php
  2. require_once('function.php');
  3. if(isset($_POST['textInput'])&&isset($_POST['passwordInput']))
  4. {
  5. ConnectKacik();
  6. CheckUser(html_entity_decode($_POST['textInput']),html_entity_decode($_POST['passwordInput']));
  7. echo $wynik; // niczego mi to nie wyświetla
  8.  
  9. }
  10. ?>


a tutaj funkcja CheckUser z function.php
  1. function CheckUser($login,$password){
  2.  
  3. $sql = "SELECT * FROM usery WHERE login='$login'";
  4. $result = mysql_query($sql);
  5.  
  6. $row = mysql_fetch_assoc($result);
  7.  
  8. if($login==$row['login'] && $password==$row['haslo'])
  9. {
  10.  
  11. }else
  12. {
  13. $wynik = 1;
  14. }
  15. if(mysql_num_rows($result)<1)
  16. {
  17. $wynik = 2;
  18. }
  19. // jeżeli w tym miejscu dam echo $wynik to wyświetla mi wartość na index.php (bo wyświetla z tego miejsca)
  20. return $wynik;
  21. }


Czemu mimo return $wynik , jak mam echo $wynik w index.php nie wyświetla mi tego wyniku (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował bubolski 9.08.2016, 17:07:30
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




Gdy funkcja cos zwraca to wypadaloby to odebrac...

$wynik = CheckUser(...);
echo $wynik;
Go to the top of the page
+Quote Post
KsaR
post
Post #3





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Bo zmienna $wynik jest tylko w funkcji twojej.
mozesz zrobic.

  1. $wynik = CheckUser(html_entity_decode($_POST['textInput']),html_entity_decode($_POST['passwordInput']));
  2. echo $wynik;


A dwa ze zależnie od twojego warunku w funkcji czasem zmienna $wynik nie istnieję. - edit, źle się przyjrzałem.

Ten post edytował KsaR 9.08.2016, 17:12:34
Go to the top of the page
+Quote Post
bubolski
post
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 28.10.2009

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


Cytat(nospor @ 9.08.2016, 17:08:09 ) *
Gdy funkcja cos zwraca to wypadaloby to odebrac...

$wynik = CheckUser(...);
echo $wynik;


Widzisz takie proste a ja spędziłem nad tym ponad godzine głowiąc się co może być nie tak i próbując co chwile coś zmieniać.
Ostatecznie rozwiązałem to póki co za pomocą zapisu wyniku w zmiennej sesji, ale już zmieniłem tylko zapis w index.php na
  1. $wynik = CheckUser(html_entity_decode($_POST['textInput']),html_entity_decode($_POST['passwordInput']));


i działa aż miło (IMG:style_emoticons/default/smile.gif)

Dzięki za pomoc.
Go to the top of the page
+Quote Post
Rysh
post
Post #5





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Cytat(bubolski @ 9.08.2016, 18:05:38 ) *
zwraca odpowiedni komunikat a konkretnie $wynik 1 lub 2 (1 istnieje login , ale niepoprawne hasło ; 2 zapytanie sql zwrociło 0 wierszy więc user nie istnieje).

Zrób albo użytkownik istnieje albo nie istnieje. Nie podpowiadaj ewentualnemu włamywaczowi że dany użytkownik istnieje.
Go to the top of the page
+Quote Post
bubolski
post
Post #6





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 28.10.2009

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


Cytat(KsaR @ 9.08.2016, 17:10:48 ) *
Bo zmienna $wynik jest tylko w funkcji twojej.
mozesz zrobic.

  1. $wynik = CheckUser(html_entity_decode($_POST['textInput']),html_entity_decode($_POST['passwordInput']));
  2. echo $wynik;


A dwa ze zależnie od twojego warunku w funkcji czasem zmienna $wynik nie istnieję.


To akurat jest specjalny zabieg. Jak nie ma wyniku to nie wyświetla błędu logowania. Jeżeli ktoś się loguje i wpisze złe hasło, lub użytkownik nie istnieje to tylko wtedy otrzyma śliczny czerwony button z opisem błędu. (IMG:style_emoticons/default/smile.gif)

Cytat(Rysh @ 9.08.2016, 17:12:45 ) *
Zrób albo użytkownik istnieje albo nie istnieje. Nie podpowiadaj ewentualnemu włamywaczowi że dany użytkownik istnieje.


W sumie masz rację. Już to sobie zmieniłem (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
aniolekx
post
Post #7





Grupa: Zarejestrowani
Postów: 340
Pomógł: 46
Dołączył: 31.07.2009
Skąd: A

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


pisz nazwy funkcji z malych liter, a nazwy klas z duzych... poczytaj o coding styles na http://www.php-fig.org/

Ten post edytował aniolekx 10.08.2016, 08:02:21
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 12:45