Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Logowanie
Forum PHP.pl > Forum > PHP
Mcek
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
Foxx
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.
Mcek
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 .
lwc
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.
Mcek
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.
Maveral
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";
}
Mcek
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
sebekzosw
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!
Mcek
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..
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.