Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Logowanie
ejmen
post 28.08.2013, 10:01:15
Post #1





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

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


Cześć,korzystając poradnika mam takie coś:


Kod
        
<?php
// rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
ob_start();

// start sesji
session_start();

// połączenie z mysql
mysql_connect('localhost', 'xxxxx', 'xxxxx')
    or die('Nieudane polaczenie z baza danych...');

// wybór bazy danych
mysql_select_db('xxxx')    
    or die('Nie udalo sie wybrac bazy danych...');

// nagłówek
echo '<center><h2>Logowanie</h2></center>';

// sprawdzamy czy user jest już zalogowany
if($_SESSION['logged']) echo 'Już jestes zalogowany!';
else
{
    // tworzymy prosty formularz
    
    echo '<center><form action="index.php" method="POST">
    Nick: <br />
    <input type="text" name="nick"><br />
    Hasło: <br />
    <input type="password" name="pass"><br />
    <input type="submit" name="ok" value="Zaloguj">
    </form></center>';
     // jeśli zostanie naciśnięty przycisk "Zaloguj"
     if(isset($_POST['ok']))
     {
        $nick = trim($_POST['nick']);
        $pass = trim($_POST['pass']);
      
        // sprawdzamy czy wszystkie dane zostały podane
        if(empty($nick) || empty($pass)) echo 'Wpisz wszystkie pola!';
      
         // jeśli tak...
        else
        {
            // filtrujemy dane
            $nick = strip_tags( mysql_real_escape_string( HTMLSpecialChars($nick)));
            $pass = strip_tags( mysql_real_escape_string( HTMLSpecialChars($pass)));
          
             // kodujemy hasło
            $pass = md5($pass);
            
            // sprawdzamy czy istnieje użytkownik z takim loginem i hasłem
            $result = mysql_query ("SELECT * FROM 'players' WHERE 'nick' = '{$nick}' AND 'password' ='{$pass}'");
                            
             // jeśli nie istnieje
            if(mysql_num_rows($result)==0) echo 'Niestety podałes niepoprawne dane!';
        
             // jeśli tak...
            else
            {
                // dodajemy wynik zapytania do tablicy
                $row = mysql_fetch_array($result);
          
                 // ustawianie sesji że użytkownik jest zalogowany
                $_SESSION['logged'] = true;

                // dodawanie do sesji id użytkownika, login oraz datę rejestracji
                $_SESSION['nick'] = $row['nick'];

              
                 // wyświetlenie komunikatu oznaczającego poprawne logowanie
                echo 'Zostałes poprawnie zalogowany! Możesz teraz przejsć na <a href="index.php">stronę główna</a>';
                }
            }
        }
    }
// rozłączenie z bazą danych
mysql_close();

// koniec buforowania
ob_end_flush();
?>



Tylko teraz gdy wpisuję poprawny login i hasło piszę że są niepoprawne dane. W bazie mam tak w tabeli players:
Nick Password
Test 6F56E9B0A9ADE2FEBFC78EC7370EA165

Nie wczytuje danych. Pomoże ktoś to poprawić?

Ten post edytował ejmen 28.08.2013, 10:11:33
Go to the top of the page
+Quote Post
!*!
post 28.08.2013, 10:08:06
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  1. $pass = md5($pass);
  2.  
  3. // sprawdzamy czy istnieje użytkownik z takim loginem i hasłem
  4. $result = mysql_query ("SELECT * FROM 'players' WHERE 'nick' = '{$nick}' AND 'pass' = '{$password}'");

Popraw nazwy zmiennych dotyczących hasła.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
nospor
post 28.08.2013, 10:08:52
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Uzywaj bbocde PHP a nie CODE
2) Nazwy tabel oraz pol nie bierze sie w apostrofy ' tylko bierze sie w ciapki `
3) Zapoznaj sie z tym tematem i stosuj sie do jego wskazowek a zycie stanie sie piekniejsze zarowno dla Ciebie jak i dla nas
Temat: Jak poprawnie zada pytanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ejmen
post 28.08.2013, 10:24:25
Post #4





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

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


Cytat(!*! @ 28.08.2013, 11:08:06 ) *
  1. $pass = md5($pass);
  2.  
  3. // sprawdzamy czy istnieje użytkownik z takim loginem i hasłem
  4. $result = mysql_query ("SELECT * FROM 'players' WHERE 'nick' = '{$nick}' AND 'pass' = '{$password}'");

Popraw nazwy zmiennych dotyczących hasła.




Tak powinno być?

  1. $result = mysql_query ("SELECT * FROM `players` WHERE `nick` = `{$nick}` AND `pass` = `{$password}`");

Go to the top of the page
+Quote Post
nospor
post 28.08.2013, 10:26:50
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Powiedzialem ze tylko nazwy tabel i pol.... wartosci maja zostac jak zostaly.
Ale masz jeszcze inne bledy o ktorych mowil moj poprzednik oraz nie zastosowales sie do tematu do ktorego cie odeslalem


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ejmen
post 28.08.2013, 10:34:02
Post #6





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

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


Dodałem to

  1. ini_set('display_errors','1');


na górze skryptu i pokazało mi

Kod
ndex.php on line 42


linijka 42

  1. // sprawdzamy czy user jest już zalogowany
  2. if($_SESSION['logged']) echo 'Już jestes zalogowany!';
  3. else
  4. {
  5. // tworzymy prosty formularz



poprawiłem na to

  1. $result = mysql_query ("SELECT * FROM `fs_players` WHERE `nick`='{$nick}' AND `password`='{$pass}'");


Jak te zmienne od hasła mam poprawić?

Ten post edytował ejmen 28.08.2013, 10:34:47
Go to the top of the page
+Quote Post
Turson
post 28.08.2013, 10:59:19
Post #7





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Już kolega wcześniej podał co z tym hasłem.
Jeśli w bazie zakodowane w md5 to także przy logowaniu musisz je zakodować inaczej będzie zawsze złe, nieprawdaż?

Ten post edytował TursoN 28.08.2013, 10:59:50
Go to the top of the page
+Quote Post
ejmen
post 28.08.2013, 11:18:20
Post #8





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

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


Czyli muszę użyć

  1. $pass = md5(strtoupper(md5($pass)));
,tak?


Tylko dalej nie wiem co z tymi zmiennymi,pokaże ktoś co jest źle?;/
Go to the top of the page
+Quote Post
Turson
post 28.08.2013, 11:22:34
Post #9





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Po co strupper(); ? To zmienia ciąg znaków na wielkie litery.

Zapytanie wystarczy tak:
  1. $result = mysql_query ("SELECT * FROM `fs_players` WHERE `nick`='$nick' AND `password`='$pass'");
Go to the top of the page
+Quote Post
ejmen
post 28.08.2013, 11:49:19
Post #10





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

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


O,dziękuje. Jest jeszcze problem z tym kodowaniem dalej ,bo dalej pokazuje mi że błędne dane,ale gdy zmieniłem hasło w bazie na tekstowe test123 to normalnie odczytało. Tutaj kod ;


  1. // sprawdzamy czy user jest już zalogowany
  2. if($_SESSION['logged']) echo 'Już jestes zalogowany!';
  3. else
  4. {
  5. // tworzymy prosty formularz
  6.  
  7. echo '<center><form action="index.php" method="POST">
  8. Nick: <br />
  9. <input type="text" name="nick"><br />
  10. Hasło: <br />
  11. <input type="password" name="pass"><br />
  12. <input type="submit" name="ok" value="Zaloguj">
  13. </form></center>';
  14. // jeśli zostanie naciśnięty przycisk "Zaloguj"
  15. if(isset($_POST['ok']))
  16. {
  17. $nick = trim($_POST['nick']);
  18. $pass = trim($_POST['pass']);
  19.  
  20.  
  21. // sprawdzamy czy wszystkie dane zostały podane
  22. if(empty($nick) || empty($pass)) echo 'Wpisz wszystkie pola!';
  23.  
  24. // jeśli tak...
  25. else
  26. {
  27. // filtrujemy dane
  28.  
  29. // kodujemy hasło
  30. $pass = md5($pass)
  31.  
  32.  
  33. // sprawdzamy czy istnieje użytkownik z takim loginem i hasłem
  34.  
  35.  
  36. $result = mysql_query ("SELECT * FROM `fs_players` WHERE `nick`='$nick' AND `password`='$pass'");
  37.  
  38. // jeśli nie istnieje
  39. if(mysql_num_rows($result)==0) echo 'Niestety podałes niepoprawne dane!';
  40.  
  41. // jeśli tak...
  42. else
  43. {
  44. // dodajemy wynik zapytania do tablicy
  45. $row = mysql_fetch_array($result);
  46.  
  47. // ustawianie sesji że użytkownik jest zalogowany
  48. $_SESSION['logged'] = true;
  49.  
  50. // dodawanie do sesji id użytkownika, login oraz datę rejestracji
  51. $_SESSION['nick'] = $row['nick'];
  52.  
  53.  
  54. // wyświetlenie komunikatu oznaczającego poprawne logowanie
  55. echo 'Zostałes poprawnie zalogowany! Możesz teraz przejsć na <a href="index.php">stronę główna</a>';
  56. }
  57. }
  58. }
  59. }
  60. // rozłączenie z bazą danych
  61.  
  62. // koniec buforowania
  63. ?>


Ten post edytował ejmen 28.08.2013, 11:50:14
Go to the top of the page
+Quote Post
Turson
post 28.08.2013, 11:59:32
Post #11





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. // kodujemy hasło
  2. $pass = md5($pass)

Gdzie się podział średnik
Go to the top of the page
+Quote Post
--ejmen--
post 28.08.2013, 12:26:13
Post #12





Goście







Faktycznie,z tym że dalej informacja " Niestety podałes niepoprawne dane! " Macie jeszcze jakieś pomysły co jest nie tak? ;/
Go to the top of the page
+Quote Post
Turson
post 28.08.2013, 12:34:48
Post #13





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Wyświetl po kolei zmienne $nick, $password i zapytanie. Sprawdź czy wszystko wygląda tak jak oczekujesz
Go to the top of the page
+Quote Post
!*!
post 28.08.2013, 12:42:59
Post #14





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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



Wywal to, jest zbędne.

Użyj var_dump na zmiennych.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 25.07.2025 - 00:07