Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Złe przywitanie na profilach użytkowników...
Forum PHP.pl > Forum > Przedszkole
czernin
Witam,

Mam mały problem. Na mojej stronie można się rejestrować i logować. Na każdej podstronie użytkownik zostaje przywitany, np: "Witaj Admin!". Wszystko jest dobrze, ale nie do końca. Gdy wejdziemy na profil jakiego¶ użytkownika jeste¶my przywitani jego loginem...

Znam przyczynę powstawania takiego czego¶. Mi chodzi o to, żeby¶my na profilach innych użytkowników byli poprawnie przywitani.

Wszystkie podstrony pobieraj± dane użytkownika za pomoc± $user_data = get_user_data(); . Ale na profilach użytkowników tak nie jest. Pobierane s± wówczas dane usera na którego jeste¶my profilu, a nasze dane pobierane nie s±. Na profilach zamiast $user_data = get_user_data(); jest $user_data = get_user_data($_GET['id']); - pobiera to dane użytkownika o danym numerze id.

Jeżeli byłoby to interesuj±ce, b±dĽ potrzebne to adresem profilu jest /profile.php?id=1, gdzie 1 to numer id usera.

Mam nadzieję, że napisałem to w miarę przystępnie i kto¶ będzie potrafił mi pomóc.

Poniżej prezentuję skrypt profile.php:

  1. <?php
  2. include 'config.php';
  3. db_connect();
  4.  
  5. check_login();
  6.  
  7. // filtrujemy id oraz rzutujemy je na int
  8. $_GET['id'] = (int)clear($_GET['id']);
  9.  
  10. // pobieramy dane usera z podanego id
  11. $user_data = get_user_data($_GET['id']);
  12.  
  13. // sprawdzamy czy znalazło użytkownika
  14. // jeśli nie to wyświetlamy komunikat
  15. // a jeśli tak to wyświetlamy wszystkie jego dane
  16. // jeśli user nie ma podanej strony www lub skąd jest to wyświetlamy "brak"
  17. if($user_data === false) {
  18. header("Location: index.php");
  19. } else {
  20. echo '<html>
  21. <head>
  22. </head>
  23. <body>
  24. <h2>'.$user_data['user_name'].':</h2>
  25. <p>Email: '.$user_data['user_email'].'</p>
  26. <p>Data rejestracji: '.date("d.m.Y, H:i", $user_data['user_regdate']).'</p>
  27. <p>Strona WWW: '.(empty($user_data['user_website']) ? 'Nie podano' : $user_data['user_website']).'</p>
  28. <p>Sk±d: '.(empty($user_data['user_from']) ? 'Nie podano' : $user_data['user_from']).'</p>
  29. </body>
  30. </html>';
  31. }
  32.  
  33. db_close();
  34. ?>
krzywy36
pobierz dane dwa razy, raz z id raz bez.
CuteOne
Od tego masz sesje - zapisz w nich id zalogowanego użytkownika a potem jak już Krzywy napisał pobierz dane dla niego i dla konta, które odwiedza
czernin
A możnaby prosić o jaki¶ przykład?
Go¶ć
  1. <?php
  2. include 'config.php';
  3. db_connect();
  4.  
  5. check_login();
  6.  
  7. // filtrujemy id oraz rzutujemy je na int
  8. $_GET['id'] = (int)clear($_GET['id']);
  9.  
  10. // pobieramy dane usera z podanego id
  11. $user_data = mysql_query(mysql_fetch_array("SELECT * from users where id=".$_GET['id'].""));
  12.  
  13. // sprawdzamy czy znalazło użytkownika
  14. // jeśli nie to wyświetlamy komunikat
  15. // a jeśli tak to wyświetlamy wszystkie jego dane
  16. // jeśli user nie ma podanej strony www lub skąd jest to wyświetlamy "brak"
  17. if($user_data === false) {
  18. header("Location: index.php");
  19. } else {
  20. echo '<html>
  21. <head>
  22. </head>
  23. <body>
  24. <h2>'.$user_data['user_name'].':</h2>
  25. <p>Email: '.$user_data['user_email'].'</p>
  26. <p>Data rejestracji: '.date("d.m.Y, H:i", $user_data['user_regdate']).'</p>
  27. <p>Strona WWW: '.(empty($user_data['user_website']) ? 'Nie podano' : $user_data['user_website']).'</p>
  28. <p>Sk±d: '.(empty($user_data['user_from']) ? 'Nie podano' : $user_data['user_from']).'</p>
  29. </body>
  30. </html>';
  31. }
  32.  
  33. db_close();
  34. ?>
  35.  
  36. Go to the top of the page
  37.  
  38. +
krzywy36
zacznijmy od tego, że w tym kodzie który podałe¶, nigdzie nie wy¶wietlasz "Witaj nazwa_usera!", więc nie wiem jak mam Ci pomóc, zreszt± dużej filozofii tu nie ma, z tego co napisałe¶, wynika, że je¶li wywołasz funkcję get_user_data() bez argumentu to dostajesz dane aktualnie zalogowanego użytkownika, a je¶li z argumentem (id) to dostajesz dane usera o danym id, więc nie wiem w czym problem. Wywołujesz j± raz bez argumentu i drugi raz z argumentem:
  1. $logged_user_data = get_user_data();
  2. $user_data = get_user_data($id);

W komunikacie "Witaj..." wy¶wietlasz dane z $logged_user_data a w profilu z $user_data.
czernin
krzywy36, dzięki! Wczoraj nie miałem jako¶ do tego głowy... +1 "pomógł".
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.