Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Profile użytkownika - nie pobiera ID
Forum PHP.pl > Forum > Przedszkole
Gość
Hejcia,
a więc napisałem skrypt profili na swoją strone i jest mały problem, a mianowicie. Chciałbym do menu dla zalogowanych dodać link, który przekierowuje na mój profil tzn. na profil każdego usera, który kliknie w Mój profil

Kod PHP:
Kod
<li><a href="profil.php?id='.$id.'">Mój profil</a></li>


Po kliknięciu powinno pobierać ID z bazy i przekierować na mój profil, a przekierowuje do karty profil.php na której nic nie ma. Po prostu nie czyta ID.

kod z menu:
  1. <?php
  2. if($_SESSION['logged']) {
  3. echo '<ul id="menu">
  4. <li><a href="index.php">Strona Główna</a></li>
  5. <li><a href="logout.php">Wyloguj się</a></li>
  6. <li><a href="profil.php?id='.$_SESSION['id'].'">Mój profil</a></li>
  7. </ul>';
  8. }
  9. else {
  10. echo '<ul id="menu">
  11. <li><a href="index.php">Strona Główna</a></li>
  12. <li><a href="login.php">Zaloguj się</a></li>
  13. <li><a href="register.php">Zarejestruj się</a></li>
  14. </ul>';
  15. }
  16. ?>


A, tutaj kod z profil.php
  1. <?php include ("page_header.php"); ?>
  2.  
  3. <?php
  4. require ("config/polacz.php");
  5.  
  6. // Sprawdzamy czy użytkownik jest zalogowany.
  7. if($_SESSION['logged']) {
  8. echo $_SESSION['id'];
  9. $check = $sql=mysql_query("SELECT * FROM `users` WHERE id='".$_GET['id']."'");
  10. if(!mysql_num_rows($check)) {
  11. echo '<center>Podany użytkownik nie istnieje.</center>';
  12. }
  13. else { while($row=mysql_fetch_array($sql)){
  14. $login=stripslashes($row['login']);
  15. $imie=stripslashes($row['imie']);
  16. }
  17. echo "<b>Login:</b> ".$login."<br />";
  18. echo "<b>Imię:</b> ".$imie."<br />";
  19. }
  20. // Gdy jest wylogowany wyświetlamy informacje.
  21. } else {
  22. echo "<center>Aby przeglądać profile zaloguj się.</center>";
  23. }
  24.  
  25. ?>
  26.  
  27. <?php include ("page_footer.php"); ?>


W czym moze tkwic problem?
modern-web
Na pierwszy (bardzo szybki) rzut oka wnioskuję, że wartość tablicy $_GET['id'] wynosi NULL, a co to oznacza to chyba wiesz smile.gif
1. Jeśli to jest kod php to stosuj się do odpowiednich zasad korzystania z " i '
  1. echo '<li><a href="profil.php?id='.$id.'">Mój profil</a></li>';

2.
  1. $check = $sql=mysql_query("SELECT * FROM `users` WHERE id='".$_GET['id']."'");

jak już to...
  1. $check = $sql=mysql_query("SELECT * FROM `users` WHERE `id` = '$_GET['id']'");

3. kombinuj, ja idę spać; rano wpadnę i ewentualnie pomogę jeśli będzie potrzeba... smile.gif
Gość
Cytat
Jeśli to jest kod php to stosuj się do odpowiednich zasad korzystania z " i '


Gotowe.

Cytat
$check = $sql=mysql_query("SELECT * FROM `users` WHERE `id` = '$_GET['id']'");


Wywaliło tylko błąd z parserem.
Parse error: syntax error, unexpected T_VARIABLE in D:\Program Files\WebServ\httpd\profil.php on line 11

Oczywiście poprawiłem, ale nadal nie czyta ID. Już nie wiem od czego może to być.
basstone
  1. <li><a href="profil.php?id='.$_SESSION['id'].'">Mój profil</a></li>


A gdzie w całym kodzie przypisujesz do $_SESSION['id'] wartość id zalogowanego użytkownika?
Gość
Cytat(basstone @ 24.02.2012, 01:25:45 ) *
  1. <li><a href="profil.php?id='.$_SESSION['id'].'">Mój profil</a></li>


A gdzie w całym kodzie przypisujesz do $_SESSION['id'] wartość id zalogowanego użytkownika?


Kod, który podałeś wyżej nie istnieje w moich plikach. Mam tylko ten:
  1. echo '<li><a href="profil.php?id='.$id.'">Mój profil</a></li>';
Gość
Ref.
modern-web
Pokaż na czym stoimy smile.gif
Gość
Tzn.?

Tutaj demo - nie musisz podawać prawdziwych danych podczas rejestracji:
http://83.4.133.88/index.php/

Po zalogowaniu się masz w menu zakładkę Mój profil. Jeśli klikniesz powinno Cię przekierować na Twoje ID i wyświetlić Nick.

Plik login.php
  1. <?php include ("page_header.php"); ?>
  2.  
  3. <?php
  4. require ("config/polacz.php");
  5.  
  6. if($_SESSION['logged']) {
  7. echo '<center>Nie możesz zalogować się drugi raz!</center>';
  8. }
  9. else {
  10. echo '<center>
  11. <form action="login.php" method="POST">
  12. Login:<br />
  13. <input type="text" name="login"><br />
  14. Hasło:<br />
  15. <input type="password" name="haslo"><br />
  16. <input type="submit" name="ok" value="Zaloguj się"></form>
  17. </center>';
  18. }
  19. if (!$_POST['ok']) {
  20. echo '';
  21. } else {
  22.  
  23. // Flirtrujemy dane użytkownika.
  24. $login = strip_tags(mysql_escape_string($login));
  25. $haslo = md5($haslo);
  26.  
  27. // Sprawdzamy czy pole login oraz hasło jest uzupełnione.
  28. if(empty($haslo)) {
  29. echo ("<center>Proszę uzupełnić polę hasło.</center>");
  30. }
  31.  
  32. if (empty($login)) {
  33. echo ("<center>Proszę uzupełnić polę login.</center>");
  34. }
  35.  
  36. // Sprawdzamy czy dane, które podał użytkownik są takie same jak w bazie danych.
  37. $check = mysql_query("SELECT * FROM users WHERE login='$login' AND haslo='$haslo'");
  38. $result = mysql_num_rows($check);
  39. if ($result==1) {
  40.  
  41. $_SESSION['logged']='ok';
  42. $_SESSION['id'] = $row['id'];
  43. echo "<center>Zostałeś/aś pomyślnie zalogowany/a do serwisu.</center>";
  44. header('location: index.php');
  45. }
  46.  
  47. if ($result==0) {
  48. echo ("<center>Podane dane są nieprawidłowe.</center>");
  49. }
  50.  
  51.  
  52. }
  53. ?>
  54.  
  55. <?php include ("page_footer.php"); ?>


A, tutaj profil.php
  1. <?php include ("page_header.php"); ?>
  2.  
  3. <?php
  4. require ("config/polacz.php");
  5.  
  6. // Sprawdzamy czy użytkownik jest zalogowany.
  7. if($_SESSION['logged']) {
  8. echo $_SESSION['id'];
  9. $check = $sql=mysql_query("SELECT * FROM `users` WHERE id='".$_GET['id']."'");
  10. if(!mysql_num_rows($check)) {
  11. echo '<center>Podany użytkownik nie istnieje.</center>';
  12. }
  13. else { while($row=mysql_fetch_array($sql)){
  14. $login=stripslashes($row['login']);
  15. $imie=stripslashes($row['imie']);
  16. }
  17. echo "<b>Login:</b> ".$login."<br />";
  18. echo "<b>Imię:</b> ".$imie."<br />";
  19. }
  20. // Gdy jest wylogowany wyświetlamy informacje.
  21. } else {
  22. echo "<center>Aby przeglądać profile zaloguj się.</center>";
  23. }
  24.  
  25. ?>
  26.  
  27. <?php include ("page_footer.php"); ?>


Linijka z menu
  1. <?php
  2. if($_SESSION['logged']) {
  3. echo '<ul id="menu">
  4. <li><a href="index.php">Strona Główna</a></li>
  5. <li><a href="logout.php">Wyloguj się</a></li>
  6. <li><a href="profil.php?id='.$id.'">Mój profil</a></li>
  7. </ul>';
  8. }
  9. else {
  10. echo '<ul id="menu">
  11. <li><a href="index.php">Strona Główna</a></li>
  12. <li><a href="login.php">Zaloguj się</a></li>
  13. <li><a href="register.php">Zarejestruj się</a></li>
  14. </ul>';
  15. }
  16. ?>
askone
W poniższym zapytaniu SQL korzystasz z GET a powinieneś z SESSION
Kod
$check = $sql=mysql_query("SELECT * FROM `users` WHERE id='".$_GET['id']."'");


popraw na
Kod
$check = $sql=mysql_query("SELECT * FROM `users` WHERE id='".$_SESSION['id']."'");


lub lepiej na
Kod
$id = $_SESSION['id'];
$check = $sql=mysql_query("SELECT * FROM `users` WHERE id='".$id."'");


Pozdrawiam
modern-web
Spójrz na strukturę plików; Błąd leżał (już rozwiązany) po stronie skryptu logowania, a nie profilu. W logowaniu do sesji dodawany jest id, po czym w profilu wyciągana jest reszta danych na podstawie tego co znajduje się w sesji.
Gość
Tak modern ma rację dziękuje za pomoc temat do zamknięcia. Proszę moderatorów o przyznanie plusika modern-web'owi.
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.