Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Pobieranie danych z sesji, Wyświetlenie loginu i innych danych zalogowanej osoby
Flips
post 3.11.2009, 14:55:48
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 3.10.2009

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


Witam mam taki problem szukałem tego wszędzie gdzie tylko było możliwe ale nie znalazłem. Chodzi mi o zrobienie na swojej stronie internetowej takiego napisu: Jesteś zalogowany jako: (i tu nazwisko zalogowanej osoby). Już udało mi się coś takiego zrobić dzięki funkcji SELECT, FROM itd. wiecie o co chodzi. Jednak problem jest w tym że musiałem wpisać WHERE `login`='Flips'" (czyli ja) i to działa w ten sposób że pokazuje Jesteś zalogowany jako: (i tu moje nazwisko). Próbowałem wpisywać zamiast mojego loginu zmienną z formularza logowania, ale ona nie działa nie wiem dlaczego. Jeśli ktoś wie jak to zrobić to proszę o odpowiedź. Z góry dziękuję.
Go to the top of the page
+Quote Post
Blame
post 3.11.2009, 15:08:17
Post #2





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Hmm... najlepiej by było, gdybyś tworzył sesje która zawierała by wartość z $_POST['login] ale skoro mówisz że nie działa... W ogóle miło by było gdybyś nam podał fragment kodu ze skryptem logowania.


--------------------
Go to the top of the page
+Quote Post
Nattfarinn
post 3.11.2009, 15:13:37
Post #3





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

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


Cytat(Flips @ 3.11.2009, 14:55:48 ) *
Witam mam taki problem szukałem tego wszędzie gdzie tylko było możliwe ale nie znalazłem. Chodzi mi o zrobienie na swojej stronie internetowej takiego napisu: Jesteś zalogowany jako: (i tu nazwisko zalogowanej osoby). Już udało mi się coś takiego zrobić dzięki funkcji SELECT, FROM itd. wiecie o co chodzi. Jednak problem jest w tym że musiałem wpisać WHERE `login`='Flips'" (czyli ja) i to działa w ten sposób że pokazuje Jesteś zalogowany jako: (i tu moje nazwisko). Próbowałem wpisywać zamiast mojego loginu zmienną z formularza logowania, ale ona nie działa nie wiem dlaczego. Jeśli ktoś wie jak to zrobić to proszę o odpowiedź. Z góry dziękuję.

Nie chcę Cię martwić, ale póki nie podasz jakichś konkretnych informacji innych niż: "próbowałem ale mi nie działa", to konkretnej odpowiedzi nie uzyskasz. Nie dałeś nam żadnej informacji na temat sposobu autoryzacji, tego co i czy w ogóle coś trzymasz w sesji i kilku innych rzeczy. Jeśli przechowujesz gdzieś ID użytkownika lub jego login - to wystarczy, że w zapytaniu SQL które budujesz dasz:
  1. "(...) WHERE `login` = '.addslashes($login).'";

Wielkiej filozofii w tym nie ma i coś takiego generalnie musi działać. A jeśli nie działa, to daj chociaż komunikat błędu.


--------------------
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis
Go to the top of the page
+Quote Post
fenix.robi
post 3.11.2009, 15:17:18
Post #4





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

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


Hmm tyle co zrozumiałem to:

1. Skrypt z formularzem do logowania, jeśli wpisałes prawidłowy login i hasło to ->

1a) jesli chesz aby przedstawiony był login to

  1. $_SESSION['przedstaw'] = $login;


1b. Jeśli chcesz aby był przedstawiony jako "imie nazwisko", to pobież te dane z bazy i

  1. $_SESSION['przedstaw'] = $imie.' '.$nazwisko;


2. Potem napisz skrypcik który sprawdza czy jest istnieje dana sesja ze zmienną którą będziesz "include'dował" w każdym widoku ->

2a) Jesli istnieje to wyswietlasz jako kto jestes zalogowany
2b) Jesli nie to przekierowuje Cie do logowania

potrzebne funkcje to (niewymieniam funkcji do połaczenia i pobierania danych z bazy bo juz masz) isset , include i minimalna wiedza o sesjach ($_SESSION), aha no i echo haha.gif

Ten post edytował fenix.robi 3.11.2009, 15:19:31
Go to the top of the page
+Quote Post
Flips
post 3.11.2009, 15:19:41
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 3.10.2009

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


Cytat(Nattfarinn @ 3.11.2009, 16:13:37 ) *
Nie chcę Cię martwić, ale póki nie podasz jakichś konkretnych informacji innych niż: "próbowałem ale mi nie działa", to konkretnej odpowiedzi nie uzyskasz. Nie dałeś nam żadnej informacji na temat sposobu autoryzacji, tego co i czy w ogóle coś trzymasz w sesji i kilku innych rzeczy. Jeśli przechowujesz gdzieś ID użytkownika lub jego login - to wystarczy, że w zapytaniu SQL które budujesz dasz:
  1. "(...) WHERE `login` = '.addslashes($login).'";

Wielkiej filozofii w tym nie ma i coś takiego generalnie musi działać. A jeśli nie działa, to daj chociaż komunikat błędu.



O to chodzi, że właśnie nie ma żadnego błędu tylko po prostu nie wyświetla nazwiska. A co do kodu to już go wklejam:

  1. session_register("zalogowany");
  2.  
  3. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  4.  
  5. mysql_connect("[serwer]", "[baza]", "[hasło]")or die("Nie można nawiązać połączenia z bazą");
  6. mysql_select_db("db444106")or die("Wystąpił błąd podczas wybierania bazy danych");
  7.  
  8. function ShowLogin($komunikat=""){
  9. if($komunikat != 0)
  10. echo "$komunikat<br>";
  11. echo "<form action='loguj.php' method=post>";
  12. echo "Login: <br/><input type=text name=login style=width:110px maxlength=16><br>";
  13. echo "Hasło: <br/><input type=text name=haslo style=width:110px maxlength=16><br>";
  14. echo "<input type=submit value='Zaloguj!'>";
  15. echo "</form>";
  16. }


i druga część (w tym samym pliku)

  1. Jesteś zalogowany jako
  2. <?
  3. $_POST["login"] = $login;
  4. $zapytanie_imie = "SELECT `imie` FROM `IIIb_users` WHERE `login`='Flips'";
  5. $zapytanie_nazwisko = "SELECT `nazwisko` FROM `IIIb_users` WHERE `login`='Flips'";
  6. $imie_was_zapytanie = mysql_query($zapytanie_imie);
  7. $nazwisko_was_zapytanie = mysql_query($zapytanie_nazwisko);
  8. $imie_was = mysql_fetch_row($imie_was_zapytanie);
  9. $nazwisko_was = mysql_fetch_row($nazwisko_was_zapytanie);
  10. echo "$imie_was[0] $nazwisko_was[0]";
  11. ?>


i teraz napisz mi jak go przerobić żeby nie wyświetlało mojego imienia in nazwiska tylko tej osoby która jest zalogowana.

Ten post edytował Flips 3.11.2009, 15:37:22
Go to the top of the page
+Quote Post
Blame
post 3.11.2009, 17:51:56
Post #6





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


  1. Jesteś zalogowany jako
  2. <?
  3. $_POST["login"] = $login;
  4. $zapytanie_imie = "SELECT `imie` FROM `IIIb_users` WHERE `login`='$login'";
  5. $zapytanie_nazwisko = "SELECT `nazwisko` FROM `IIIb_users` WHERE `login`='$login'";
  6. $imie_was_zapytanie = mysql_query($zapytanie_imie);
  7. $nazwisko_was_zapytanie = mysql_query($zapytanie_nazwisko);
  8. $imie_was = mysql_fetch_row($imie_was_zapytanie);
  9. $nazwisko_was = mysql_fetch_row($nazwisko_was_zapytanie);
  10. echo "$imie_was[0] $nazwisko_was[0]";
  11. ?>

Próbowałeś?


--------------------
Go to the top of the page
+Quote Post
Flips
post 3.11.2009, 20:17:07
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 3.10.2009

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


Cytat(Blame @ 3.11.2009, 18:51:56 ) *
  1. Jesteś zalogowany jako
  2. <?
  3. $_POST["login"] = $login;
  4. $zapytanie_imie = "SELECT `imie` FROM `IIIb_users` WHERE `login`='$login'";
  5. $zapytanie_nazwisko = "SELECT `nazwisko` FROM `IIIb_users` WHERE `login`='$login'";
  6. $imie_was_zapytanie = mysql_query($zapytanie_imie);
  7. $nazwisko_was_zapytanie = mysql_query($zapytanie_nazwisko);
  8. $imie_was = mysql_fetch_row($imie_was_zapytanie);
  9. $nazwisko_was = mysql_fetch_row($nazwisko_was_zapytanie);
  10. echo "$imie_was[0] $nazwisko_was[0]";
  11. ?>

Próbowałeś?


to było pierwsze co tylko próbowalem
Go to the top of the page
+Quote Post
Nattfarinn
post 3.11.2009, 20:26:07
Post #8





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

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


A potraktuj zmienną $login var_dump'em (np. tuż przed zapytaniami SQL):
  1. var_dump($login);

I zobaczy, czy w ogóle cokolwiek do tej zmiennej przekazujesz - a jeśli tak, to co winksmiley.jpg. Wynikiem nie omieszkaj się pochwalić.

Ten post edytował Nattfarinn 3.11.2009, 20:26:54


--------------------
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis
Go to the top of the page
+Quote Post
Flips
post 3.11.2009, 20:54:27
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 3.10.2009

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


Cytat(Nattfarinn @ 3.11.2009, 21:26:07 ) *
A potraktuj zmienną $login var_dump'em (np. tuż przed zapytaniami SQL):
  1. var_dump($login);

I zobaczy, czy w ogóle cokolwiek do tej zmiennej przekazujesz - a jeśli tak, to co winksmiley.jpg. Wynikiem nie omieszkaj się pochwalić.


NULL - dokładnie tak jak myślałem ;/ teraz kto mi to wytłumaczy dlaczego w tej części:

  1. if(mysql_num_rows(mysql_query("select * from IIIb_users where login = '".htmlspecialchars($_POST["login"])."'AND haslo = '".htmlspecialchars($_POST["haslo"])."'")))


zmienna $_POST["login"] działa, ale w wyniku tego wyżej wymienionego warunku

  1. {
  2. echo "Zalogowano poprawnie.</a>";
  3. $_SESSION["zalogowany"]=1;
  4. $_SESSION["przedstaw"] = $_POST['login'];
  5. }
  6.  
  7. $_SESSION["przedstaw"] = $login;


już nie? sad.gif
Go to the top of the page
+Quote Post
Nattfarinn
post 3.11.2009, 20:59:15
Post #10





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

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


  1. $_SESSION["przedstaw"] = $login;

A jesteś pewien, że przypisujesz tutaj właściwą zmienną? Bo na moje oko, wg. Twojego kodu nadpisujesz wartość zmiennej sesyjnej, niezadeklarowaną wcześniej zmienną $login. smile.gif Nie widzę, reszty kodu, ale powinno to być raczej:
  1. $login = $_SESSION["przedstaw"];


--------------------
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis
Go to the top of the page
+Quote Post
Flips
post 3.11.2009, 21:05:07
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 3.10.2009

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


Cytat(Nattfarinn @ 3.11.2009, 21:59:15 ) *
  1. $_SESSION["przedstaw"] = $login;

A jesteś pewien, że przypisujesz tutaj właściwą zmienną? Bo na moje oko, wg. Twojego kodu nadpisujesz wartość zmiennej sesyjnej, niezadeklarowaną wcześniej zmienną $login. smile.gif Nie widzę, reszty kodu, ale powinno to być raczej:
  1. $login = $_SESSION["przedstaw"];


No już właśnie przed chwilą dzięki wklejaniu tu tego kodu sam to zauważyłem biggrin.gif przepraszam za kłopot ale jestem dopiero bardzo początkujący w temacie PHP i MySQL, chociaż nie ma się co dziwić bo w szkole tego nie uczą a mam dopiero 15 lat. Zaznaczam że mi pomogłeś i mam nadzieję że jeśli znowu będę miał jakiś problem (ale nie taki łatwy do rozwiązania jak teraz) to już na prawdę mi pomożesz smile.gif pozdrawiam
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: 16.07.2025 - 10:03