Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z klasą logowanie
Forum PHP.pl > Forum > Przedszkole
lukaszk
Witam, testuję jedną klasę logowania ale mam problem.

Utworzone jedno konto admin i login admin loguje się i wszystko ok.
Utworzyłem kolejne admin1 również z hasłem admin i nie loguje się tzn
Sprawdza warunek i jest spełniony tylko nie rozumiem dlaczego nie mogę się zalogować.

Może w funkcja jest ograniczenie tylko do jednego usera a może sprawdza w sesji czy nie jestem zalogowany (bądź nie byłem) na inne konto.

O to plik


  1. <?php
  2.  
  3.  
  4. class Login{
  5.  
  6. private $dbhost = 'localhost'; // host name
  7.  
  8. private $dbname = 'testdb'; // database name
  9.  
  10. private $dbuser = 'root'; // database username
  11.  
  12. private $dbpass = 'pass'; // database password
  13.  
  14. private $usertable = 'uzytkownicy';
  15.  
  16. private $connect;
  17.  
  18. private $result_to;
  19.  
  20. private $data;
  21.  
  22.  
  23.  
  24. public $dbresponse;
  25.  
  26. public $response;
  27.  
  28.  
  29. public function __construct(){
  30.  
  31. $this->connect = mysql_connect($this->dbhost, $this->dbuser, $this->dbpass);
  32.  
  33. if(!$this->connect){
  34.  
  35. echo "<h4>There is Database connectivity error. check your hostname, username or password</h4>";
  36.  
  37. }else{
  38.  
  39. mysql_select_db($this->dbname);
  40.  
  41. //echo "<h4>Database connect properly</h4>";
  42.  
  43. }
  44.  
  45. }
  46.  
  47.  
  48. public function __destruct() {
  49.  
  50. mysql_close($this->connect);
  51.  
  52. }
  53.  
  54.  
  55. public function query_execute($query){
  56.  
  57. $this->result_to = mysql_query($query);
  58.  
  59. if(!$this->result_to){
  60.  
  61. echo '<h4>query could not executed</h4';
  62.  
  63. }else{
  64.  
  65. return $this->result_to;
  66.  
  67. }
  68.  
  69. }
  70.  
  71.  
  72. public function fetch_data($result){
  73.  
  74. if(!$result){
  75.  
  76. $rows = NULL;
  77.  
  78. }else{
  79.  
  80. $row = mysql_fetch_array($result);
  81.  
  82. return $row;
  83.  
  84. }
  85.  
  86. }
  87.  
  88.  
  89. public function login_user($username, $password){
  90.  
  91. $username = mysql_real_escape_string($username);
  92. $password = mysql_real_escape_string($password);
  93.  
  94. $password = md5($password);
  95.  
  96. $sql = "select login, haslo from uzytkownicy where login = '$username' and haslo = '$password' limit 1";
  97.  
  98. $result = $this->query_execute($sql);
  99.  
  100. $this->data = $this->fetch_data($result);
  101.  
  102. if(!$this->data){
  103.  
  104. return 'Please enter correct username and password';
  105.  
  106. }else{
  107.  
  108. $_SESSION['username'] = $this->data['username']; // username
  109. $_SESSION['permission'] = 'yes';
  110. }
  111.  
  112. }
  113.  
  114. public function logout(){
  115. /*
  116.   if(isset($_SESSION['permission'])) {
  117. unset($_SESSION['permission']);
  118.  
  119. if(isset($_COOKIE[session_name()]))
  120. setcookie(session_name(), '', time() - 1000);
  121. session_destroy();
  122. }
  123.   * */
  124. return 'you are now logged out';
  125.  
  126. }
  127.  
  128. public function session_check() {
  129.  
  130.  
  131.  
  132. echo $_SESSION['username'];
  133.  
  134. if($_SESSION['permission'] != 'yes') {
  135.  
  136. // header("location: index.php");
  137.  
  138. return 'you have no permission to see this page';
  139.  
  140. }else{
  141. //header("location: securearea.php");
  142. return 'you are now logged in';
  143.  
  144. }
  145.  
  146. }
  147. }
  148.  
  149. ?>


i?


Nie widzę nic dziwnego w tej klasie i nie wiem gdzie leży błąd.
Loguje tylko jednego użytkownika
login admin
haslo admin

lobopol
A jak zapisane jest hasło w bazie danych? 21232f297a57a5a743894a0e4a801fc3 czy admin?
lukaszk
Problem jest rozwiązany było tak

  1. if(isset ($_POST[submit])) {
  2. $response = $obj->login_user($_POST['password'],$_POST['password']);
  3. $log_rej_wiadomosc='Zostałeś zalogowany';
  4. $klasa="success";
  5. ?>
  6. <META HTTP-EQUIV="Refresh" CONTENT="1;URL=index.php?dzial=rejestracja">
  7. <?
  8. }


Mam teraz taki oto problem. Logowanie działa znakomicie ale zrobiłem sobie na stronie głównej index.php wysuwane menu z opcją logowanie.

Kiedy wysyłam dane metodą GET nie loguje (jestem pewien że zrobiłem to dobrze) kiedy wysyłam metodą post i w pasku adresu podam ścieżkę do pliku gdzie jest kod loguje ale nie mam dostępu do danych ( i jestem dodatkowo zalogowany )
  1. Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in H:\Program Files\VertrigoServ\www\blog\rejestracja.php on line 351
  2.  
  3. Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in H:\Program Files\VertrigoServ\www\blog\rejestracja.php on line 351



Kiedy w pliku index.php dodam
  1. include_once 'class/login.class.php';
  2. $obj = new Login();
  3. if(isset ($_POST[submit])) {
  4. $response = $obj->login_user($_POST['username'],$_POST['password']);
  5. $log_rej_wiadomosc='Zostałeś zalogowany';
  6. $klasa="success";
  7. ?>
  8. <META HTTP-EQUIV="Refresh" CONTENT="1;URL=index.php?dzial=rejestracja">
  9. <?
  10. }
  11.  
  12.  
  13.  



i wysyłam dane w tym samym pliku mam to samo loguje ale kiedy chcę dobrać się dodanych pokazuje takie coś.

Nie wiem co jest nie tak
CuteOne
namieszałeś.... sprawdź czy w pliku, który ma się dobrać do danych jest session_start();
lukaszk
Tak namieszałem problem był taki że plik index.php zawierał

  1.  
  2. include_once 'class/login.class.php';
  3. $obj = new Login();
  4. include "config/db.php";
  5. if(isset($_GET['val']) && $_GET['val'] == '0') {
  6. $obj->logout();
  7. ?>
  8. <META HTTP-EQUIV="Refresh" CONTENT="1;URL=index.php?dzial=rejestracja">
  9. <?
  10. }
  11.  
  12. if(isset ($_POST[submit])) {
  13. $response = $obj->login_user($_POST['username'],$_POST['password']);
  14. $log_rej_wiadomosc='Zostałeś zalogowany';
  15. $klasa="success";
  16. ?>
  17. <META HTTP-EQUIV="Refresh" CONTENT="1;URL=index.php?dzial=rejestracja">
  18. <?
  19. }


a także podstrona rejestracja.php zawierała to samo.




Mam tai problem w pliku index.php mam to co mam i kiedy staram się zalogować z pliku rejestracja.php działa jak powinno (mimo że na początku pliku index.php mam kod odpowiadający za połączenie z funkcją. I teraz zrobiłem sobie na stronie głównej menu wysuwane i chcę zrobić logowanie również tu i mam problem bo nie chcę mnie zalogować. Może funkcja ma jakieś zabezpieczenia? dodam że są to te same formularze a tylko z podstrony rejestracja mogę się zalogować.

Dodam również że warunek jest spełniony

if(isset ($_POST[submit])) {

gdyż pojawia się info
$log_rej_wiadomosc='Zostałeś zalogowany';
$klasa="success";

niestety nie jestem zalogowany logując się z index.php nie wiem dlaczego.

Proszę o pomoc
CuteOne
  1. if(isset ($_POST['submit'])) {
  2.  
  3. $response = $obj->login_user($_POST['username'],$_POST['password']);
  4.  
  5. if($response) {
  6.  
  7. $log_rej_wiadomosc='Zostałeś zalogowany';
  8. $klasa="success";
  9. }
  10.  
  11. }


i klasa logowania
  1. if(!$this->data){
  2.  
  3. return false;
  4. }
  5. else{
  6. $_SESSION['username'] = $this->data['username']; // username
  7. $_SESSION['permission'] = 'yes';
  8. return true;
  9. }
lukaszk
i nic nie rozumiem
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.