Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] logowanie z wykorzystaniem bazy danych
Forum PHP.pl > Forum > Przedszkole
em-ba
Witam, nie wiem jak uzyskać taki system logowania, żeby mi sprawdzał login i hasło z danymi w bazie. Do tej pory korzystałem z góry zdefiniowanych loginów i haseł w skrypcie.
Kombinowałem różnymi sposobami: z początku połączenie z baza, kolejnie sprawdzanie danych ale wiem, że jest jeszcze potrzebne cookie
Kod
       <?php
            if(isset($_GET['akcja']) && ($_GET['akcja'] == "wyloguj"))
            {
               $_SESSION['zalogowany'] = 0;
               echo "Wylogowano<a href='index.php'> | Odśwież</a>";
            }
      
            $a = 1800;
      
            if ($_SESSION['zalogowany'] == 1)
            {
               if (time() - $_SESSION['czas'] > $a)
               {
                  $_SESSION['zalogowany'] = 0;
                  echo "Sesja zakończona. Nieczynność dłuższa niż $a
       <a href='index.php'>Odśwież</a>";
               }
            }
      
            if ((isset($_POST['login']) && isset($_POST['haslo'])) || ($_SESSION['zalogowany'] == 1))
            {
               $_POST['login'] = addslashes(strip_tags($_POST['login']));
               $_POST['haslo'] = addslashes(strip_tags($_POST['haslo']));
      
               if ((!empty($_POST['login']) && !empty($_POST['haslo'])) || ($_SESSION['zalogowany'] == 1))
               {
                  if ((($_POST['login'] == 'jan') && ($_POST['haslo'] == 'kowalski')) || ($_SESSION['zalogowany'] == 1))
                  {
                      echo "Zalogowano jako: " .$_POST['login'];
      
                       $_SESSION['zalogowany'] = 1;
                       $_SESSION['czas'] = time();
      
                      echo "Co chcesz teraz zrobić?? <br/>
       <a href='index.php'>Odśwież</a> | <a href='index.php?akcja=wyloguj'>Wyloguj się</a>";
                  }
                  else
                      echo "Zły login lub hasło, spróbuj <a href='index.php'>ponownie</a>";
               }
               else
                   echo "Nie został podany login lub haslo, spróbuj <a href='index.php'>ponownie</a>";
            }
       /*   else
                echo "Nie zostały przysłane żadne zmienne, spróbuj <a href='odbior.php'>ponownie</a>";
       */
       ?>
John
Wszystko pięknie, ale gdzie w tym skrypcie jest to porównywanie hasła/loginu z bazą danych to raz a dwa. Jeśli masz sesje to po co Ci ciasteczka ?
em-ba
tak próbowałem:
Kod
<?php
  $polaczenie = @mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  mysql_select_db('fi_kur') or die ("Nie mozna zlokalizowac bazy danych");
      
       if(isset($_GET['akcja']) && ($_GET['akcja'] == "wyloguj"))
       {
          $_SESSION['zalogowany'] = 0;
          echo "Wylogowano<a href='index.php'> | Odśwież</a>";
       }
  
       $a = 1800;
  
       if ($_SESSION['zalogowany'] == 1)
       {
          if (time() - $_SESSION['czas'] > $a)
          {
             $_SESSION['zalogowany'] = 0;
             echo "Sesja zakończona. Nieczynność dłuższa niż $a <br /><a href='index.php'>Odśwież</a>";
          }
       }
  
       if ((isset($_POST['login']) && isset($_POST['haslo'])) || ($_SESSION['zalogowany'] == 1))
       {
          $_POST['login'] = addslashes(strip_tags($_POST['login']));
          $_POST['haslo'] = addslashes(strip_tags($_POST['haslo']));
  
          $a = mysql_query("SELECT * FROM uzytkownicy WHERE login = '".$_POST['login']."' AND haslo = '".$_POST['haslo]."' LIMIT 1");
          if(!mysql_num_rows($a)) {
                  echo 'Niepoprawne Login lub Hasło'; exit;
              return 0;
  
          if ((!empty($_POST['login']) && !empty($_POST['haslo'])) || ($_SESSION['zalogowany'] == 1))
          {
             if ((($_POST['login'] == '') && ($_POST['haslo'] == '')) || ($_SESSION['zalogowany'] == 1))
             {
                 echo "Zalogowano jako: " .$_POST['login'];
  
                  $_SESSION['zalogowany'] = 1;
                  $_SESSION['czas'] = time();
  
                 echo "Co chcesz teraz zrobić<img src="style_emoticons/<#EMO_DIR#>/questionmark.gif" style="vertical-align:middle" emoid="??" border="0" alt="questionmark.gif" /> <br/><br /><a href='index.php'>Odśwież</a> | <a href='index.php?akcja=wyloguj'>Wyloguj się</a>";
             }
             else
                 echo "Zły login lub hasło, spróbuj <a href='index.php'>ponownie</a>";
          }
          else
              echo "Nie został podany login lub haslo, spróbuj <a href='index.php'>ponownie</a>";
       }
  /*   else
           echo "Nie zostały przysłane żadne zmienne, spróbuj <a href='odbior.php'>ponownie</a>";
  */
  ?>
a o ciasteczkach wyczytałem widocznie źle
potreb
  1. <?php
  2. $login = addslashes(strip_tags($_POST['login']));
  3. $haslo = addslashes(strip_tags($_POST['haslo']));
  4. $a = mysql_query("SELECT * FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo' LIMIT 1");
  5. ?>
em-ba
z tagami spoko - niedawno dolaczylem do forum i nie zauwazylem ze zle robie :-)

pytal sie mnie
Cytat
Wszystko pięknie, ale gdzie w tym skrypcie jest to porównywanie hasła/loginu
nie wiem czy chodzi Ci o to, że logowanie było login:jan, hasło:kowalski i na takiej podstawie było "porównywanie" hasła i loginu

Cytat
a o ciasteczkach wyczytałem widocznie źle

Cytat
  1. <?php
  2. $login = addslashes(strip_tags($_POST['login']));
  3. $haslo = addslashes(strip_tags($_POST['haslo']));
  4. $a = mysql_query("SELECT * FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo' LIMIT 1");
  5. ?>

też nie działa
John
Za dużo if'ów i się pogubiłeś :
ten fragment popatrz
  1. <?php
  2. if ((isset($_POST['login']) && isset($_POST['haslo'])) || ($_SESSION['zalogowany'] == 1))
  3.  {
  4. $_POST['login'] = addslashes(strip_tags($_POST['login']));
  5. $_POST['haslo'] = addslashes(strip_tags($_POST['haslo']));
  6.  
  7. $a = mysql_query("SELECT * FROM uzytkownicy WHERE login = '".$_POST['login']."' AND haslo = '".$_POST['haslo]."' LIMIT 1");
  8. /* 
  9.  ta linijka poniżej z ifem
  10.  po Polsku brzmi tak : jesli uzytkownik nie istnieje to go zaloguj.
  11.  dlatego jak wpisujesz poprawne hasło i login to Cię nie loguje
  12. */
  13. if(!mysql_num_rows($a)) {
  14. echo 'Niepoprawne Login lub Hasło'; exit;
  15. return 0;
  16.  
  17. if ((!empty($_POST['login']) && !empty($_POST['haslo'])) || ($_SESSION['zalogowany'] == 1))
  18. {
  19.  if ((($_POST['login'] == '') && ($_POST['haslo'] == '')) || ($_SESSION['zalogowany'] == 1))
  20.  {
  21.  echo "Zalogowano jako: " .$_POST['login'];
  22.  
  23. $_SESSION['zalogowany'] = 1;
  24. $_SESSION['czas'] = time();
  25. ?>
em-ba
tak wpisałem i z tego co widze to chyba jest ok
  1. <?php
  2. $login = addslashes(strip_tags($_POST['login']));
  3. $haslo = addslashes(strip_tags($_POST['haslo']));
  4. $b = mysql_query("SELECT * FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo' LIMIT 1");
  5.  
  6. if(mysql_num_rows($b)) {
  7. echo 'Niepoprawne Login lub Hasło'; exit;
  8. }
  9. return 0;
  10. ?>
potreb
Trochę ci skróciłem kod:
  1. <?php
  2. $polaczenie = @mysql_connect ('localhost', 'root', '') or die ("nie udało sie połączyć");
  3. mysql_select_db('test2') or die ("Nie mozna zlokalizowac bazy danych");
  4. echo $_SESSION['zalogowany']."<br>";
  5. echo $_SESSION['czas'];  
  6.  
  7. if($_SESSION['zalogowany'] == 0)
  8. {
  9. echo ' <form action="aaa.php" method="POST">
  10.  <table border="0">
  11. <tr><td>login</td><td> <input type="text" name="login" maxlenght="30" size="30"></td></tr>
  12. <tr><td>hasło</td><td> <input type="password" name="haslo" maxlenght="30" size="30"></td></tr>
  13. <tr><td colspan="2"><input type="submit" value="dodaj" name="send">
  14.  </table>
  15.  </form>';
  16.  
  17. if (isset($_POST['login']) && isset($_POST['haslo']))
  18. {
  19. $login = addslashes(strip_tags($_POST['login']));
  20. $haslo = addslashes(strip_tags($_POST['haslo']));
  21. $sql = mysql_query("SELECT * FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo' LIMIT 1");
  22. if(mysql_num_rows($sql) == 1) {
  23. echo "zostałeś zalogowany jako: $login";
  24. $_SESSION['zalogowany'] = 1;
  25. $_SESSION['czas'] = time();
  26. return true;
  27. } else {
  28. echo "Twoje dane nie zgadzają się!";
  29. }
  30. } 
  31. } else {
  32. echo "dane po zalogowaniu";
  33. }
  34.  
  35.  
  36. $a = 2;
  37. if ($_SESSION['zalogowany'] == 1)
  38. {
  39. if (time() - $_SESSION['czas'] > $a)
  40. {
  41. $_SESSION['zalogowany'] = 0;
  42. echo "Sesja zakończona. Nieczynność dłuższa niż $a <br /><a href='index.php'>Odśwież</a>";
  43. }
  44. }
  45.  
  46. ?>


Z resztą sobie poradzisz już. Pisane z palca więc mogą być błędy smile.gif
em-ba
<a href=\"index.php\">


nie działa dalej..
mam taki plik: index.php
  1. <div id="top">
  2. <div id="NAGLOWEK">naglowek</div>
  3. <div id="LOGOWANIE"><h2>Zaloguj się:</h2>
  4.  <form id='' method='post' action='index.php' enctype='multipart/form-data'>
  5. <div>
  6. <p>Login:<br />
  7. <input id ='login' type='text' name='login' maxlength='15'/><br /><br />
  8. Hasło:<br />
  9. <input id ='haslo' type='password' name='haslo' maxlength='10'/><br /><br />
  10. <input id ='zaloguj' type='submit' name='zaloguj' value='Zaloguj'/>
  11. <a href='form_rej.php'><input id ='zarejestruj' type='submit' name='zarejestruj' value='Zarejestruj'/></a></p>
  12. </div>
  13. </form>
  14. <div id='inf'>
  15. <?php include("logow.php"); ?>
  16. </div>
  17. </div>
  18. </div>

do indexu includuje logow.php
  1. <?php
  2. $polaczenie = @mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi_kur') or die ("Nie mozna zlokalizowac bazy danych");
  4. echo $_SESSION['zalogowany']."<br>";
  5. echo $_SESSION['czas'];  
  6.  
  7. if($_SESSION['zalogowany'] == 0)
  8. {
  9. echo ' <form action="aaa.php" method="POST">
  10.  <table border="0">
  11. <tr><td>login</td><td> <input type="text" name="login" maxlenght="30" size="30"></td></tr>
  12. <tr><td>hasło</td><td> <input type="password" name="haslo" maxlenght="30" size="30"></td></tr>
  13. <tr><td colspan="2"><input type="submit" value="dodaj" name="send">
  14.  </table>
  15.  </form>';
  16.  
  17. if (isset($_POST['login']) && isset($_POST['haslo']))
  18. {
  19. $login = addslashes(strip_tags($_POST['login']));
  20. $haslo = addslashes(strip_tags($_POST['haslo']));
  21. $sql = mysql_query("SELECT * FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo' LIMIT 1");
  22. if(mysql_num_rows($sql) == 1) {
  23. echo "zostałeś zalogowany jako: $login";
  24. $_SESSION['zalogowany'] = 1;
  25. $_SESSION['czas'] = time();
  26. return true;
  27. } else {
  28. echo "Twoje dane nie zgadzają się!";
  29. }
  30. } 
  31. } else {
  32. echo "dane po zalogowaniu";
  33. }
  34.  
  35.  
  36. $a = 2;
  37. if ($_SESSION['zalogowany'] == 1)
  38. {
  39. if (time() - $_SESSION['czas'] > $a)
  40. {
  41. $_SESSION['zalogowany'] = 0;
  42. echo "Sesja zakończona. Nieczynność dłuższa niż $a <br /><a href='index.php'>Odśwież</a>";
  43. }
  44. }
  45.  
  46. ?>


poki co sa dwa panele logowania ale korzystam z tego logow.php
i jak wpisze login i hasło to mi wyrzuca inf:</a href=\"index.php\"> Twoje dane nie zgadzają się!
<a href=\"index.php\">
</a href=\"index.php\">
Neeke
  1. <div id="top">
  2. <div id="NAGLOWEK">naglowek</div>
  3. <!-- <div id="LOGOWANIE"><h2>Zaloguj się:</h2>
  4. <form id='' method='post' action='index.php' enctype='multipart/form-data'>
  5. <div>
  6. <p>Login:<br />
  7. <input id ='login' type='text' name='login' maxlength='15'/><br /><br />
  8. Hasło:<br />
  9. <input id ='haslo' type='password' name='haslo' maxlength='10'/><br /><br />
  10. <input id ='zaloguj' type='submit' name='zaloguj' value='Zaloguj'/>
  11. <a href='form_rej.php'><input id ='zarejestruj' type='submit' name='zarejestruj' value='Zarejestruj'/></a></p>
  12. </div>
  13. </form>-->
  14. <div id='inf'>
  15. <?php include("logow.php"); ?>
  16. </div>
  17. </div>
  18. </div></SPAN>


jezeli nieuzywasz to wylacz bo dane ida z tego formulaza... a i zmien nazwe pliku w tym logow.php action="index.php" na przyklad taki
em-ba
już jest lepiej :-)
..tzn jest jeszcze taki problem..

jak chce się zalogować to defaultowo, zanim cokolwiek zrobie, nad panelem logowania mam taki ciąg liczb:

0
1200910420 //nie mam pojęcia o co z tym chodzi

druga sprawa to: jak wpisze login/hasło do bazy i sie na niego loguje to jest ok, a jak wpisze login/hasło do fomularza to dodaje do bazy ok, ale potem nie moge sie zalogować na ten login/hasło co podałem w formularzu

//nie wiem czy to nie jest wina kodowania

trzecia sprawa: jeżeli chcę, aby po zalogowaniu przeniosło mnie na lol.php to gdzie mam to zadeklarować? wpisać to jako w <form action> czy tu:

  1. <?php
  2. else {
  3. echo &#092;"dane po zalogowaniu\";
  4. }
  5. ?>


dodam, ze jezeli w formularzu wykasuje kodowanie hasła md5 to wszystko jest ok

temat zamkniety, juz działa..
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.