Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Nie zakończona pętla w funkcji
Forum PHP.pl > Forum > Przedszkole
d0m1n1k_
Witam,
poszukuję rozwiązania do następującego problemu:

Napisałem prosty zestaw sprawdzania poprawności logowania.
Działać - działa, ale uprzykrza mi życie swoją długością ;-)
Zastanawiałem się jak to "pociąć" aby zamknąć całość do trzech/czterech elementów np. wkładając kolejne części do trzech funkcji.
Niemniej jednak nie znam się na tym na tyle aby to rozwiązać - próbowałem wyszukania takiego problemu ale nic nie znalazłem.

KOD DZIAŁAJĄCY:
  1. if(isset($_COOKIE['ident']) && isset($_COOKIE['paswrd1']) && isset($_COOKIE['paswrd2']))
  2. {
  3. $login_idnrA = $_COOKIE['ident'];
  4. $login_pas1A = $_COOKIE['paswrd1'];
  5. $login_pas2A = $_COOKIE['paswrd2'];
  6. $login_czekA = mysql_query("SELECT id, authorization, password FROM usrs WHERE id = '$login_idnrA' LIMIT 1");
  7. $login_czekB = mysql_fetch_array($login_czekA);
  8. $login_idnrB = $login_czekB['id'];
  9. $login_pas1B = $login_czekB['password'];
  10. $login_pas2B = $login_czekB['authorization'];
  11.  
  12. if (($login_idnrA == $login_idnrB) && ($login_pas1A == $login_pas1B) && ($login_pas2A == $login_pas2B))
  13. {
  14. echo "<li><a href=\"panel.php?id=$login_idnrA\">Mój profil</a></li>";
  15. echo "<li><a href=\"wyloguj.php\">Wyloguj</a></li>";
  16. }else{
  17. }
  18. }else{
  19. echo "<li><a href=\"logowanie.php\">Zaloguj się</a></li>";
  20. echo "<li><a href=\"rejestracja.php\">Dołącz do nas!</a></li>";
  21. }


MOJA "WIZJA" POCIĘCIA:

Część I
  1. function czescpierwsza()
  2. {
  3. if(isset($_COOKIE['ident']) && isset($_COOKIE['paswrd1']) && isset($_COOKIE['paswrd2']))
  4. {
  5. $login_idnrA = $_COOKIE['ident'];
  6. $login_pas1A = $_COOKIE['paswrd1'];
  7. $login_pas2A = $_COOKIE['paswrd2'];
  8. $login_czekA = mysql_query("SELECT id, authorization, password FROM usrs WHERE id = '$login_idnrA' LIMIT 1");
  9. $login_czekB = mysql_fetch_array($login_czekA);
  10. $login_idnrB = $login_czekB['id'];
  11. $login_pas1B = $login_czekB['password'];
  12. $login_pas2B = $login_czekB['authorization'];
  13.  
  14. if (($login_idnrA == $login_idnrB) && ($login_pas1A == $login_pas1B) && ($login_pas2A == $login_pas2B))
  15. {
  16. }


Część II
  1. function czescdruga()
  2. {
  3. }else{
  4. }
  5. }else{
  6. }


Część III
  1. function czesctrzecia()
  2. {
  3. }
  4. }


i takie coś wstawiać w kod w mniej więcej taki sposób:

  1. czescpierwsza();
  2. echo "tresc dla zalogowanego";
  3. czescdruga();
  4. echo "tresc dla niezalogowanego";
  5. czesctrzecia();


Czy jest taka możliwość?
Z góry dziękuję za pomoc!
tzm
Poczytaj może o sesjach?
Daimos
Nie rozbijesz tak instrukcji warunkowych. Możesz wsadzić do funkcji ich zawartość, np:
  1. if (($login_idnrA == $login_idnrB) && ($login_pas1A == $login_pas1B) && ($login_pas2A == $login_pas2B))
  2. {
  3. wyswietlCos($login_idnrA);
  4. }
  5. function wyswietlCos($login_idnrA)
  6. {
  7. echo "<li><a href=\"panel.php?id=$login_idnrA\">Mój profil</a></li>";
  8. echo "<li><a href=\"wyloguj.php\">Wyloguj</a></li>";
  9. }

Jeśli chcesz nauczyć się jakoś logicznie rozbijać aplikację, pomyśl o tym, aby funkcja zwracała Ci dane z bazy, inna funkcja odpowiadała za widoki.
Myślenie o tym, aby funkcja rozbijała kod bo ma za dużo linijek, to zbyt proste rozumowanie smile.gif
d0m1n1k_
Nie rozumiem. Mam zastąpić ciasteczka sesją?
Logowanie działa. Wykonuje powierzone jej działania.

Zależy mi na podzielenie kodu w sposób który spowoduje nie zamknięcie pętli (rozdzielenie jej na dwa/trzy "składziki).

Cytat(Daimos @ 19.09.2014, 12:11:43 ) *
Jeśli chcesz nauczyć się jakoś logicznie rozbijać aplikację, pomyśl o tym, aby funkcja zwracała Ci dane z bazy, inna funkcja odpowiadała za widoki.
Myślenie o tym, aby funkcja rozbijała kod bo ma za dużo linijek, to zbyt proste rozumowanie smile.gif


Wiem, że upraszczam, ale na moje potrzeby to uproszczenie jest uzasadnione... no prawie uzasadnione lenistwem ;-)

@Daimos, czyli rozumiem, że raczej się nie da, a na pewno nie powinienem tak tego wykonywać?
nospor
Cytat
Nie rozumiem. Mam zastąpić ciasteczka sesją?
Logowanie działa. Wykonuje powierzone jej działania.
I co z tego ze dziala jak dziala żle.... No chyba, że Twoim zamierzeniem było, że każdy może zalgoować sie na dowolne konto w Twoim serwisie. Jesli takie bylo zalozenie, to faktycznie, dziala i to wysmienicie smile.gif
d0m1n1k_
Cytat(nospor @ 19.09.2014, 12:17:41 ) *
I co z tego ze dziala jak dziala żle.... No chyba, że Twoim zamierzeniem było, że każdy może zalgoować sie na dowolne konto w Twoim serwisie. Jesli takie bylo zalozenie, to faktycznie, dziala i to wysmienicie smile.gif


Kolejny raz - nie rozumiem, czyli jeśli sesji nie wprowadzę w życie to robię to źle?
Jeśli tak, to zatem jednak jestem w lesie
KsaR
Cytat(d0m1n1k_ @ 19.09.2014, 12:30:16 ) *
Kolejny raz - nie rozumiem, czyli jeśli sesji nie wprowadzę w życie to robię to źle?
Jeśli tak, to zatem jednak jestem w lesie


Ciasteczka da sie edytować,
więc można tak sie zalogować na admina na przykład.

A do sesji użytkownik nie posiada dostępu do edycji, bynajmniej nie wiem jak.
d0m1n1k_
Ok - przyjęte do informacji.
Spróbuję to wszystko poprawić i dodać sesje.
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.