Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Profile użytkownika - nie pobiera ID
-Gość-
post
Post #1





Goście







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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
modern-web
post
Post #2





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Na pierwszy (bardzo szybki) rzut oka wnioskuję, że wartość tablicy $_GET['id'] wynosi NULL, a co to oznacza to chyba wiesz (IMG:style_emoticons/default/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... (IMG:style_emoticons/default/smile.gif)

Ten post edytował modern-web 24.02.2012, 00:52:41
Go to the top of the page
+Quote Post
-Gość-
post
Post #3





Goście







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ć.
Go to the top of the page
+Quote Post
basstone
post
Post #4





Grupa: Zarejestrowani
Postów: 40
Pomógł: 6
Dołączył: 20.12.2011

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


  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?

Ten post edytował basstone 24.02.2012, 01:26:25
Go to the top of the page
+Quote Post
-Gość-
post
Post #5





Goście







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 to the top of the page
+Quote Post
-Gość-
post
Post #6





Goście







Ref.
Go to the top of the page
+Quote Post
modern-web
post
Post #7





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Pokaż na czym stoimy (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-Gość-
post
Post #8





Goście







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. ?>
Go to the top of the page
+Quote Post
askone
post
Post #9





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


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
Go to the top of the page
+Quote Post
modern-web
post
Post #10





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


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 to the top of the page
+Quote Post
-Gość-
post
Post #11





Goście







Tak modern ma rację dziękuje za pomoc temat do zamknięcia. Proszę moderatorów o przyznanie plusika modern-web'owi.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 19:23