Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Logowanie
Forum PHP.pl > Forum > Przedszkole
Beosky
Po wpisaniu danych i kliknięciu Zaloguj się po prostu nie zalogowywuje mnie do strony.

Kshyhoo
A skąd wiesz, że nie jesteś zalogowany?
Beosky
Faktycznie, faktycznie nie zauważyłem tego.
Kshyhoo
Brak jednej klamry zamykającej pętlę. Po to używa się edytorów z kolorowaniem składni i odpowiednio formatuje się kod - to co wkleiłeś, to śmietnik!
Beosky
Ok zamknąłem, ale nie loguje, bo powininem mieć link do wylogowania, a go nie ma. :/

Smietnik tzn?
Kshyhoo
Przekazujesz do sesji:
  1. $_SESSION['admin']='ok';
  2. $_SESSION['login']=''.$dane['login'].'';

Można zresztą tak:
  1. $_SESSION['admin']='ok';
  2. $_SESSION['login']=$dane['login'];

Sprawdź, czy masz to w sesji.
Zobacz też, co to za konstrukcja:

To zaś jakiś potwór:
  1. if(!isset($_SESSION['admin']) && !isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && !isset($_POST['submit']) && $_GET['p']!='wyloguj' && !isset($_COOKIE['log']))
Beosky
Cytat(Kshyhoo @ 14.02.2012, 17:56:29 ) *
To zaś jakiś potwór:
  1. if(!isset($_SESSION['admin']) && !isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && !isset($_POST['submit']) && $_GET['p']!='wyloguj' && !isset($_COOKIE['log']))


Niby dlaczego potwór? Chyba powinno działać normalnie, jakis pomysł jak to inaczej zrobic ?
Kshyhoo
Sprawdź, jak funkcjonuje !isset.
Twoje rozwiązanie: jeżeli nie jest ustawiona zmienne sesyjna o nazwie "admin" i nie jest ustawiona zmienna sesyjna o nazwie "login" i zmienna sesyjna "admin" nie jest równa "ok" i nie jest ustawiona $_POST['submit'] i zmienna $_GET['p'] nie jest równa "wyloguj" i nie jest ustawiona $_COOKIE['log']... to pokaż, że jesteś zalogowany. To kiedy ma pokazać, że jesteś zalogowany?
Powodzenia!
Beosky
Nie zrozumiałem nic z tego co napisałeś. Wiem jak dziala isset.
Cytat
Funkcja isset sprawdza czy zmienna została utworzona. Zwraca true jeśli istnieje lub false jeśli zmiennej nie ma. Wyjątek stanowi sytuacje gdy zmienna ma "wartość" NULL - wtedy funkcja isset zwraca false.
Kshyhoo
Dokładnie "jest ustawiona i nie ma przypisanej wartości NULL". Czyli konstrukcja:
  1. if(!isset($_SESSION['admin']) {
  2. echo'x';
  3. } else {
  4. echo'y';
  5. }

co wyświetli, x czy y?
Beosky
Wyświetli błąd.

Parse error: syntax error, unexpected '{' in D:\Program Files\WebServ\httpd\portal\login.php on line 26

^^
Kshyhoo
Brakuje jednego nawiasu, mogłeś sobie go dołożyć a nie komentować:
  1. if(!isset($_SESSION['admin'])) {
  2. echo'x';
  3. } else {
  4. echo'y';
  5. }
Beosky
Wyświetliło y.
Kshyhoo
Jeżeli nie jest ustawiona zmienne sesyjna o nazwie "admin", wyświetl X, w innym przypadku wyświetl Y.

Jakie wnioski?
Beosky
Ustawić odpowiednią zmienną?
Kshyhoo
Boże! Masz zły warunek. Widzisz różnicę:
  1. if(!isset($_SESSION['admin'])) {
  2. echo'x';
  3. } else {
  4. echo'y';
  5. }

  1. if(isset($_SESSION['admin'])) {
  2. echo'x';
  3. } else {
  4. echo'y';
  5. }
Beosky
Teraz wyświetliło X. Już rozumiem na czym to polega, ale nadal nie mogę się zalogowac.
Kshyhoo
Jeżeli użyjesz !isset, to znaczy, że zaprzeczasz warunkowi, czyli użyłeś formy, jeżeli NIE jest ustawiona - więc jesteś zalogowany, ale nie pokaże Ci tego. Zrób tak, a zobaczysz różnicę:
  1. if(TWÓJ POTWÓR) {
  2. echo'lipa';
  3. } else {
  4. echo'a tu zalogowany';
  5. }
Beosky
a tu zalogowany wyświetla. Jednak nie rozumiem
Kshyhoo
Rany, ale jesteś CKM. Na przykładzie Twojego potwora:
  1. if(!isset($_SESSION['admin']) && !isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && !isset($_POST['submit']) && $_GET['p']!='wyloguj' && !isset($_COOKIE['log'])) {
  2. echo'tu nie jestem zalogowany, bo użyłem !isset, czyli złego warunku';
  3. } else {
  4. echo 'Jestes zalgowany! jako '.$_SESSION['login'].', <a href="?p=wyloguj">Wyloguj </a>';
  5. }

Mam nadzieję, że teraz zakumasz.
Beosky
Trzeba było tak od razu. biggrin.gif
Teraz elegancko wyświetliło mi informacje, że nie jestem zalogowany, bo użyłem !isset.

I teraz pytanie czy jak !isset zamienie na isset. To jest to jakiś poważny błąd?
Kshyhoo
Przecież masz to wyżej już napisane. Próbowałem Cię naprowadzić, żebyś zakumał a nie za każdym razem myk na forum po gotowca. Zobacz tę odpowiedź i różnicę w wyświetleniu.
Beosky
No tak, ale jak zamienie tego ' potwora ' jak to nazwałeś z !isset na isset to wyświetli mi

Cytat
Jestes zalogowany! jako , Wyloguj
Kshyhoo
No chyba do tego dążysz? Miałeś sprawdzić różnicę z ! i bez !.
Beosky
Tak dąże do tego, aby było to wyświetla, ale to ma być wyświetlane tylko wtedy gdy jestem zalogowany. A, tak mi wyświetla jak jestem wylogowany i zalogowany...
Kshyhoo
To duża różnica:
  1. if(!isset($_SESSION['admin'])

Jeżeli $_SESSION['admin'] nie jest ustawiona...
  1. if(isset($_SESSION['admin'])

Jeżeli $_SESSION['admin'] jest ustawiona...
Beosky
Ech nie ogarniam tego.. :/
trzeba o issecie poczytać. biggrin.gif
Kshyhoo
To nie kwestia ISSET, tylko wykrzyknika przed nim. Więcej nic nie napiszę, prześledź to, co napisałem.
Beosky
  1. if(isset($_SESSION['admin']) && isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && isset($_POST['submit']) && $_GET['p']!='wyloguj' && isset($_COOKIE['log'])) {


Wyświetla: Jestes zalogowany! jako , Wyloguj

  1. if(!isset($_SESSION['admin']) && !isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && !isset($_POST['submit']) && $_GET['p']!='wyloguj' && !isset($_COOKIE['log'])) {


Wyświetla: tu nie jestem zalogowany, bo użyłem !isset, czyli złego warunku
--
Powinno wyświetlać Jestes zalogowany! jako NICK, Wyloguj

Zresztą zobacz sam:
http://83.29.118.80/portal/
Kshyhoo
No już łapiesz... Do logowania potrzebne są dane ;p
Masz problem z kodowaniem na stronie, stąd krzaki.
O operatorach przeczytasz w jakimkolwiek kursie PHP, to podstawy.
Beosky
Cytat
Masz problem z kodowaniem na stronie, stąd krzaki.


Jakie krzaki? Ja mam Polskie znaki

Cytat
Do logowania potrzebne są dane ;p

Tak są potrzebne dane, ale konto możesz stworzyć.
Kshyhoo
Cytat(Beosky @ 14.02.2012, 19:21:25 ) *
Jakie krzaki? Ja mam Polskie znaki

Cytat
Strona G��wna

Cytat(Beosky @ 14.02.2012, 19:21:25 ) *
Tak są potrzebne dane, ale konto możesz stworzyć.

I podam e-mail, żebyś mnie spamował?
Beosky
Podaj byle jaki email. smile.gif

Zrób tak:

test
test
test@wp.pl

Dziwne, bo kodowanie mam na UTF-8
Kshyhoo
Takie kombinacje:
  1. if($login ==''.$dane['login'].'' && $haslo ==''.$dane['haslo'].'')

Po co tyle ciapów, ukręcisz serwer...
Beosky
Temat do zamknięcia masz plusa, ale jednak napisze ten skrypcik od nowa i bez błędów tym razem, bo pierdzielnie mnie coś. haha.gif
Kshyhoo
Jeżeli się uczysz, to pisz kod modułowo - napisz jakąś część i sprawdź, czy działa - potem dokładaj kolejne kawałki, jak coś zmieniasz, to nie usuwaj, tylko zakomentuj. Używaj porządnego formatowania kodu (zagłębienia) dla zwiększenia przejrzystości. I nie przesadzaj z używaniem takiej ilości warunków jak w Twoim POTWORZE. Lepiej dać więcej zagłębień i kilka stopni sprawdzenia - wtedy wyskoczy, co jest skopane.
Sprawdzaj też, co przechodzi do tablic, np tak:
  1. print('<pre>POST: ');
  2. print_r($_POST);
  3. print('</pre>');
  4. print('<pre>GET: ');
  5. print_r($_GET);
  6. print('</pre>');
  7. print('<pre>COOKIE: ');
  8. print_r ($_COOKIE);
  9. print('</pre>');
  10. print('<pre>SESSION: ');
  11. print_r ($_SESSION);
  12. print('</pre>');
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.