Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL]problem z klasą - logowanie uzytkownika
daker
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.03.2005

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


Otóż napisałem sobie klasę rejestrującą userów, jak i logującą.
Logowanie działa, ale:
mam formularz logowania i menu w jednym divie. Drugi div to treść. Jeżeli zaloguje się to w divie z treścią napisze mi 'zalogowano usera ...' , natomiast w divie, w którym jest formularz, nic się nie zmienia. Dopiero, kiedy odświeże stronę to mi wyświetli 'Zalogowano jako ...'. To samo jest z wylogowywaniem.
Nie wiem czy napisałem to dostatecznie zrozumiale.
Wszystko mozna zobaczyc TUTAJ
Login : test
Hasło : test11

klasa logowania
  1. <?php
  2. class login {
  3. public function __construct(){
  4. if (!empty($_GET['ac'])){
  5. $this->actions = $_GET['ac'];
  6. }
  7. else{
  8. $this->actions = '';
  9. }
  10. $this->action = array ('loguj' => 'loguj');
  11. if ($this->actions == $this->action['loguj']) $this->loguj();
  12. else $this->content();
  13. }
  14. function content(){
  15. if (isset($_SESSION['username'])){
  16. echo "Zalogowany jako ".$_SESSION['username']."<br />";
  17. echo "<a href='?action=mod&mod=logout'>wyloguj</a>";
  18. }
  19. else{
  20. echo "<form action='?action=mod&mod=login&ac=loguj' method='post'>
  21. <fieldset>
  22. <legend>Logowanie</legend>
  23. <label for='pyt1'>login:</label><br />
  24. <input type='text' name='login' id='pyt1' /><br />
  25. <label for='pyt2'>haslo:</label><br />
  26. <input type='password' name='pass' id='pyt2' /><br />
  27. <input type='submit' value='loguj' />
  28. </fieldset>
  29. </form>";
  30. }
  31. }
  32. function loguj(){
  33. if (isset($_POST['login']) AND isset($_POST['pass'])) {
  34. $login = $_POST['login'];
  35. $pass = $_POST['pass'];
  36. if (!empty($login) && !empty($pass)) {
  37. $login = addslashes($login);
  38. $pass = addslashes($pass);
  39. }
  40. $pass = sha1($pass);
  41. $query = "SELECT * FROM users where user='$login' and pass='$pass'";
  42. if (!@mysql_query($query)){
  43. echo '<p>Błąd logowania</p>';
  44. $this->content();
  45. }
  46. $result = mysql_query($query);
  47. if (mysql_num_rows($result)>0){
  48. if ($row = mysql_fetch_array($result)){
  49. $active = $row['active'];
  50. }
  51. if ($active=='1'){
  52. session_register("username");
  53. $_SESSION['username'] = $login;
  54. echo "Zalogowano usera $login";
  55. }
  56. else{
  57. echo "Nie aktywowales jeszcze konta";
  58. }
  59. }
  60. else {
  61. echo "Błędny login albo haslo";
  62. }
  63. }
  64. else {
  65. echo 'Nie wypepełniono wszystkich pól<br />';
  66. $this->content();
  67. }
  68. }
  69. }
  70. }
  71. new login;
  72. ?>

i klasa ktora jest w tym divie pod menu
  1. <?php
  2. class loginpanel {
  3. public function __construct(){
  4. if (isset($_SESSION['username'])){
  5. $username = $_SESSION['username'];
  6. $query = "SELECT avatar FROM users WHERE user='$username'";
  7. $res = mysql_query($query);
  8. if ($row = mysql_fetch_array($res)){
  9. $av = $row[0];
  10. }
  11. echo "<img src='./img/avatars/$av' /><br />";
  12. echo "Zalogowany jako ".$_SESSION['username']."<br />";
  13. echo "<a href='?action=mod&mod=logout'>Wyloguj się</a>";
  14. }
  15. else{
  16. echo "<form action='?action=mod&mod=login&ac=loguj' method='post'>
  17. <fieldset>
  18. <legend>Logowanie</legend>
  19. <label for='pyt1'>login:</label><br />
  20. <input type='text' name='login' id='pyt1' /><br />
  21. <label for='pyt2'>haslo:</label><br />
  22. <input type='password' name='pass' id='pyt2' /><br />
  23. <input type='submit' value='loguj' />
  24. </fieldset>
  25. </form>
  26. <a href='?action=mod&mod=new_password'>Zapomniałeś hasło ?</a>
  27. <a href='?action=mod&mod=register'>Zarejestruj się</a>";
  28. }
  29. }
  30. }
  31. ?>


Ogólnie klasa do dopracowania.

session_start(); mam w pliku z szablonem.
Jak trzeba to dam ten plik.
Jak sama nazwa działu wskazuje jestem początkujący więc proszę o wyrozumiałość.

edit: Sorry, musialo mi sie odhaczyć przypadkiem. Już jest tag.
edit2: Poradzilem sobie, mozna zamknac.

Ten post edytował daker 16.07.2008, 13:12:53
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 21.08.2025 - 16:07