Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Logowanie, weryfikacja danych
Mcek
post 31.05.2009, 00:09:24
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.05.2009

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


Witam

Z php mam styczność dopiero dwa dni i być może to co robię teraz to za szybko jak na początek lecz się zawziąłem i chciałbym to skończyć, a mianowicie skrypt logowania.
Zdaję sobie sprawę, że skrypt ten nie ma najlepszej składni i zabezpieczeń lecz jest on stworzony na użytek własny a raczej naukę w php.

Mój główny problem polega na tym, że nie wiem jak sprawdzić czy login oraz hasło zgadzają się z loginem i hasłem w bazie danych.
Natknąłem się na pewną pomoc TUTAJ lecz w sumie akurat od tego momentu mam problem smile.gif .

Przedstawię cały mój skrypt może komuś innemu się przyda.
Mój problem jest w ostatnich linijkach w kodzie php

Rejestracja (formularz rejestracja.html)

  1. <form action="https://www.blablabla/adduser.php" method="post">
  2.  
  3. Imię:<BR>
  4. <input type=text name=imie maxlength=10><br>
  5. Nazwisko:<BR>
  6. <input type=text name=nazwisko maxlength=15><br>
  7. Login:<BR>
  8. <input type=text name=login maxlength=10><br>
  9. Hasło:<BR>
  10. <input type=password name=haslo maxlength=15><br><br>
  11.  
  12. <input type=submit value="Rejestruj">
  13. </form>


plik dodający użytkownika (adduser.php)
  1. <?php
  2. if(!$_POST[imie] || !$_POST[nazwisko] || !$_POST[login] || !$_POST[haslo])
  3. {
  4.    print " Nie podałes wszystkich danych<BR> ";
  5.    exit;
  6. }
  7.  
  8. @$db = mysql_connect('host','user','password');
  9. if(!$db)
  10. {
  11. echo " Nie polaczono ";
  12. }
  13. print " Polaczono ";
  14. print "<BR>";
  15.  
  16. mysql_select_db("php", $db);
  17.  
  18. $imie = addslashes($imie);
  19. $nazwisko = addslashes($nazwisko);
  20. $login = addslashes($login);
  21. $haslo = addslashes($haslo);
  22.  
  23. $query = "INSERT INTO user(imie, nazwisko, login, haslo) values('$_POST[imie]','$_POST[nazwisko]','$_POST[login]','$_POST[haslo]')";
  24.  
  25. if (!mysql_query($query,$db))
  26.  {
  27.  die('Error: ' . mysql_error());
  28.  }
  29. echo "Rejestracja zakończona pomyslnie<BR>";
  30.  
  31. ?>
  32. <style type=text/css>
  33. a {
  34. text-decoration: none;
  35. }
  36. </style>
  37. <a href="login.html"><input type=submit value="Zaloguj"></a>


Formularz do logowania (login.html)

  1. <form action="https://blabla/login.php" method="post">
  2. Login:<BR>
  3. <input type=text name=login maxlength=10><br>
  4. Hasło:<BR>
  5. <input type=password name=haslo maxlength=15><br>
  6.  
  7.  
  8. <input type=submit value="Zaloguj">
  9. <style type=text/css>
  10. a {
  11. text-decoration: none;
  12. }
  13. <a href="rejestracja.html"><input type=submit value="Rejestracja"></a>
  14. </form>

TUTAJ MÓJ PROBLEM
weryfikacja danych,logowanie (logowanie.php)

  1. <?php
  2. if (!$_POST[login] || !$_POST[haslo])
  3. {
  4.    print " Login i/lub hasło nie zostały podane.. ";
  5.    exit;
  6. }
  7.  
  8. @$db = mysql_connect("host","user","password");
  9. if (!$db)
  10. {
  11.    print "Nie połaczono z db";
  12.    exit;
  13. }
  14.  
  15.  
  16. mysql_select_db("php", $db);
  17.  
  18.  
  19. // TUTAJ PROBLEM :(
  20.  
  21. $result = mysql_query("SELECT * FROM `user` WHERE login='".$_POST[login]."' AND haslo='".$_POST[haslo]."'");
  22.  
  23. if (!$result) {
  24.    echo 'Nie można uruchomić zapytania: ' . mysql_error();
  25.    echo "Błedne login/hasło";
  26.    exit;
  27. }
  28. print "Zalogowałes sie poprawnie jako "."<B>".$_POST[login]."</B>";
  29.  
  30. ?>


Tutaj skrypt w przeglądarce www.php.home.pl/login.html
Proszę o wyrozumiałość dopiero drugi dzień styczność z php i jakąś pomoc lub nakierowanie smile.gif

Ten post edytował Mcek 31.05.2009, 00:16:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Foxx
post 31.05.2009, 04:27:48
Post #2





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Po pierwsze nie $_POST[login] tylko $_POST['login'].
Po drugie "// TUTAJ PROBLEM sad.gif" nie wystarczy. Dostajesz jakiś błąd? Nieoczekiwane dzialanie skryptu? Opisz dokładniej bo przecież nikt nie będzie eksplorował Twojej aplikacji w szukaniu błędów.
Go to the top of the page
+Quote Post
Mcek
post 31.05.2009, 10:45:57
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.05.2009

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


Dołączyłem skrypt żeby każdy mógł zobaczyć . STRONA
Chodzi o to, że nie wiem jak napisać tą weryfikacje z bazą danych, po wpisaniu czego kolwiek (login,haslo) i kliknięciu zaloguj piszę że zalogowałeś się jako "login" lecz nie zweryfikowało czy taki login i hasło faktycznie istnieją w bazie danych .
Go to the top of the page
+Quote Post
lwc
post 31.05.2009, 11:18:47
Post #4





Grupa: Zarejestrowani
Postów: 69
Pomógł: 11
Dołączył: 5.10.2008
Skąd: Wielkopolska

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


Tak patrzę na ten skrypt i według mnie problem tkwi w tym, że źle sprawdzasz poprawność danych, Ty ich w ogóle nie sprawdzasz. Dając if(!result) sprawdzasz tylko czy zapytanie się dobrze wykonały, jeśli nie to wywalasz błąd. Powinienes sprawdzać if'em czy mysql_num_rows zwraca 1, wtedy logujesz. Tyle tak na moje oko.
Go to the top of the page
+Quote Post
Mcek
post 31.05.2009, 11:24:51
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.05.2009

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


W ten sposób ?

  1. <?php
  2. $result = mysql_query("SELECT * FROM `user` WHERE login='".$_POST[login]."' AND haslo='".$_POST[haslo]."'");
  3. $num_rows = mysql_num_rows($result);
  4.  
  5. if ($num_rows)
  6. {
  7.    print "Zalogowales sie";
  8. }
  9.    print "nie zalogowano";
  10. ?>


Jest już tak lepiej i jak wprowadzam złe dane to faktycznie występuje błąd "nie zalogowano" . Jednak jeśli wprowadzę dane poprawnie to wyskakują obie wiadomości.

Ten post edytował Mcek 31.05.2009, 11:27:46
Go to the top of the page
+Quote Post
Maveral
post 31.05.2009, 12:14:11
Post #6





Grupa: Zarejestrowani
Postów: 45
Pomógł: 8
Dołączył: 30.07.2005

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


Ja to zrobiłem tak i działa:

Kod
$zapytanie = "SELECT login, haslo FROM user WHERE login = '" .$_POST['login']. "' AND haslo = '" .$_POST['haslo']. "'";
$idzapytania = mysql_query($zapytanie);

$czy_jest = mysql_num_rows($idzapytania);

if ($czy_jest == 0)
{
echo "Niepoprawny login lub haslo";
echo "<BR /><BR />";
//tutaj ponownie wyświetlamy formularz
}
else
{
echo "Jestes zalogowany";
}


Ten post edytował Maveral 31.05.2009, 12:15:43
Go to the top of the page
+Quote Post
Mcek
post 31.05.2009, 12:28:49
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.05.2009

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


Już rozwiązałem problem dzięki pomocy lwc

skrypt login.php

  1. <?php
  2.  
  3. if(isset($_POST['submit'])) {
  4.  
  5. @$db = mysql_connect("host","user","pass");
  6. if (!$db)
  7. {
  8.    print "Nie połaczono z db";
  9.    exit;
  10. }
  11.  
  12. mysql_select_db("php", $db);
  13.  
  14.  
  15. $login = $_POST['login'];
  16. $haslo = $_POST['haslo'];
  17.  
  18. $result = mysql_query("SELECT * FROM user WHERE login='$login' AND haslo='$haslo'");
  19.  
  20. if(mysql_num_rows($result))
  21. {
  22.    echo "Zalogowales sie!";
  23. } else {
  24.    echo "Nie zalogowano!";
  25. }
  26. }
  27. ?>


Lecz dzięki za pomoc tak czy owak smile.gif

Teraz muszę pomyśleć jak wprowadzić haszowanie md5 oraz sesje $_SESSION hehe

Ten post edytował Mcek 31.05.2009, 12:29:36
Go to the top of the page
+Quote Post
sebekzosw
post 31.05.2009, 14:36:48
Post #8





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


najpierw naucz się standardów z html!

  1. <form action="https://www.blablabla/adduser.php" method="post">
  2.  
  3. Imię:<BR>
  4. <input type=text name=imie maxlength=10><br>
  5. Nazwisko:<BR>
  6. <input type=text name=nazwisko maxlength=15><br>
  7. Login:<BR>
  8. <input type=text name=login maxlength=10><br>
  9. Hasło:<BR>
  10. <input type=password name=haslo maxlength=15><br><br>
  11.  
  12. <input type=submit value="Rejestruj">
  13. </form>


to nie jest poprawne!
Go to the top of the page
+Quote Post
Mcek
post 1.06.2009, 13:37:38
Post #9





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.05.2009

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


Nie bulwersuj się tak..
Wiem, że jest źle. Pewnie chodzi o brakujące " " .
Ja się nauczę standardów, a Ty się naucz pisać pomocne posty, bo nie wiem co miałeś na celu pisząc tamtą wypowiedź.

Pozdrawiam..
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: 14.08.2025 - 07:27