Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobieranie danych z sesji
Forum PHP.pl > Forum > Przedszkole
Flips
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ę.
Blame
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.
Nattfarinn
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.
fenix.robi
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
Flips
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.
Blame
  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ś?
Flips
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
Nattfarinn
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ć.
Flips
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
Nattfarinn
  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"];
Flips
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
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.