Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]problem z klasą - logowanie uzytkownika
Forum PHP.pl > Forum > Przedszkole
daker
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.
Ociu
Proszę dodać tag do tematu.
daker
dodaje index.php w razie gdyby to coś mogło pomóc w rozwiązaniu problemu.
  1. <?php
  2. include_once 'modules/index.php';
  3. include_once 'addons/db.php';
  4. include_once 'modules/menu/index.php';
  5. include_once 'modules/login/panel.php';
  6. ?>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  8. <html xmlns="http://www.w3.org/1999/xhtml">
  9.  
  10. <head>
  11.  
  12. <title>Tytul strony</title>
  13. <meta name="keywords" content="" />
  14. <meta name="description" content="opis" />
  15. <meta name="author" content="autor" />
  16. <meta name="reply-to" content="" />
  17. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  18. <link rel="stylesheet" type="text/css" href="style.css" />
  19. </head>
  20. <body>
  21. <div class="b">
  22. <div id="top"><h1>Tytuł strony.</h1></div>
  23. <div class="lMenu">
  24. <h2>menu</h2>
  25. <?php new menu; ?><br />
  26. <?php new loginpanel; ?>
  27. </div>
  28. <div class="content">
  29. <?php
  30. new ModLoader;
  31. ?>
  32. </div>
  33. <div class="footer"><h5>hstopka</h5></div>
  34. </div>
  35. </body>
  36. </html>
  37. <?php
  38. exit();
  39. ?>
Pan Pawel
Witam sorry ze wam zaśmiecę temat.
Ale czy mógłbyś mi podrzucić parę skryptów z twojej strony?
Zarządzanie podstronami menu lub news? Na gg 1635124 z góry dziękuje
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.