Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: identyfikacja usera w profilu po id
Forum PHP.pl > Forum > Gotowe rozwiązania
miszcz
Witam,

poszukuję skryptu, który identyfikuje na portalu po zalogowaniu użytkowników wg ich przydzielonego id np. profile.php?id=10 nie mogę dokładnie tego odnaleźć, w ZF podobno jest do tego skrypt ale nie znam zbytnio Zend więc się nie orientuję też.
Pozwólcie, że podam tu przykład:
posiadam kod, niestety po zalogowaniu zamiast w adresie profile.php?id= <numer id usera> znajduje się puste pole a w profilu pojawia się następujący błąd:
Cytat
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

po wpisaniu za id= jakiejkolwiek liczby uzyskuje zalogowanego użytkownika, ale niezależnie jaka to liczba będzie to ten login, który podawałem podczas logowania, poniżej zamieszczę główne pliki, które to zobrazują:

index.php
  1. <?php
  2. ?>
  3. <?php
  4. if(@$_GET['wyloguj']=='tak')
  5. {
  6. $uo_de_2=mysql_query("DELETE FROM users_online WHERE login = '".$_SESSION['login']."'");
  7. echo "Zostałeś wylogowany";
  8. echo "<br>";
  9. echo "<a href=\"logowanie.php\">Zaloguj się</a>";
  10. }
  11. else
  12. echo "Nie jesteś zalogowany"."<a href=\"logowanie.php\">Zaloguj się</a>";
  13. ?>


logowanie.php
  1. <?php
  2. if(@$_SESSION['zalogowany']==1)
  3. {
  4. header('Location: index.php ');
  5. }
  6. include('db_fns.php');
  7. @$login = $_POST['login'];
  8. @$pass = sha1($_POST['password']);
  9. $log = mysql_query("SELECT * FROM users WHERE login = '$login'") or die (mysql_error());
  10. $logi = mysql_fetch_assoc($log);
  11. ?>
  12. <div id="content">
  13. <h1 id="h1">Logowanie!</h1>
  14.  
  15. <?php
  16. if(@$_POST['form']==true){
  17. if(@$login==@$logi['login'] && @$pass==@$logi['password'] && $logi['potwierdzenie']==1)
  18. {
  19. $_SESSION['zalogowany']=1;
  20. $_SESSION['login']=$login;
  21. echo '<meta http-equiv="refresh" content="0;url=profil.php?id='.$id.'"/>';
  22. }
  23. elseif(@$login==@$logi['login'] && @$pass==@$logi['password'] && $logi['potwierdzenie']==0)
  24. {
  25. echo "<div id=\"blad\">";
  26. echo "Twoje konto nie zostało jeszcze aktywowane";
  27. echo "</div>";
  28. }
  29. else{
  30. echo "<div id=\"blad\">";
  31. echo "Podałeś błędny login lub hasło";
  32. echo "</div>";
  33. }
  34. }
  35. ?>
  36. <div id="logowanie">
  37. <form id="logowanie" name="logowanie" method="POST" action="logowanie.php" >
  38. Login: <input type="text" id="login" name="login" /><br />
  39. Hasło: <input type="password" id="password" name="password" /><br />
  40. <input type="hidden" name="form" id="form" value="true" />
  41. <br>
  42. <br>
  43. <input type="submit" value="&nbsp;&nbsp;Zaloguj!&nbsp;&nbsp;" />
  44. </form>
  45.  
  46. </div>
  47. <br />
  48. Nie masz konta? <a href="rejestruj.php">Zarejestruj się!</a>
  49. <br />
  50. Nie pamiętasz hasła? <a href="lostpass.php">Przypomnij teraz!</a>
  51. </div>


profil.php
  1. <?php
  2. ?>
  3. <?php
  4. $id=$_GET['id'];
  5. include('db_fns.php');
  6. $zap = mysql_query("SELECT * FROM users WHERE id = {$_GET['id']}") or die (mysql_error());
  7. $idzap = mysql_fetch_assoc($zap);
  8.  
  9.  
  10. if(@$_SESSION['zalogowany']==1)
  11. {
  12. echo "Witaj, ".$_SESSION['login']." jesteś zalogowany";
  13. echo "<br>";
  14. echo "<a href=\"index.php?wyloguj=tak\">"."Wyloguj się!"."</a>";
  15. echo " | ";
  16. echo "<a href=\"chnpass.php\">"."Zmień hasło!"."</a>";
  17. }
  18. ?>


PS. jeśli będzie problem to możecie wydzielić i przenieść, lecz nie chciałem zakładać kolejnego tematu, a i tutaj będzie bardziej wiadomo o co mi chodzi smile.gif
sebekzosw
błąd jest w linijce w pliku logowanie.php:
  1. echo '<meta http-equiv="refresh" content="0;url=profil.php?id='.$id.'"/>';


problem jest taki, że nigdzie wcześniej nie masz zmiennej $id

zakładam, że z tego pobierasz id:
  1. $logi = mysql_fetch_assoc($log);


więc po powyższej linijce możesz zrobić

  1. $id = $logi['id'];


ogólnie taki nie ład masz w tych plikach.

dodatkowo w index.php jest błąd przy wylogowywaniu - najpierw niszczysz sesje a potem do niej nawiązujesz aby usunąć rekord z bazy - powinno być odwrotnie:

index.php

  1. <?php
  2.  
  3.  
  4. if(@$_GET['wyloguj'] == 'tak')
  5. {
  6. $uo_de_2 = mysql_query("DELETE FROM users_online WHERE login = '".$_SESSION['login']."'");
  7. echo "Zostałeś wylogowany";
  8. echo "<br>";
  9. echo "<a href=\"logowanie.php\">Zaloguj się</a>";
  10. } else
  11. echo "Nie jesteś zalogowany"."<a href=\"logowanie.php\">Zaloguj się</a>";
  12.  
  13. ?>
miszcz
o dzięki smile.gif
a jest gotowy skrypt czy też z logowaniem w ZF? Bo w sumie po co rozwijać coś od nowa samemu, skoro można by wykorzystać jeśli są tongue.gif
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-2024 Invision Power Services, Inc.