Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Logowanie nie działa
Forum PHP.pl > Forum > Przedszkole
AuronDiel
Witam, od paru godzin próbuje naprawić skrypt logowania i rejestracji. Problem jest takie, że najzwyczajnie nie chce mnie zalogować, mało tego
kiedyś ten skrypt używałem i działał teraz cos idzie nie tak. Prosze o pomoc.
REJESTRACJA.php
  1. <?php
  2.  
  3. // rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
  4.  
  5.  
  6.  
  7. // połączenie z mysql
  8. mysql_connect('localhost', 'legbor_aurondiel', 'zaq1@WSX')
  9. or die('Nieudane polaczenie z baza danych...');
  10.  
  11. // wybór bazy danych
  12. mysql_select_db('legbor_konta')
  13. or die('Nie udalo sie wybrac bazy danych...');
  14.  
  15. // tworzymy prosty formularz
  16. echo '<br><div id="spac"><font face="Verdana" color="black" size="2" id="fontkontakt"><form action="register.php" method="POST">
  17. <div id="spac2">Imie<font color="red">*</font>&nbsp;&nbsp;&nbsp;
  18. <input type="text" name="imie" id="logtab2"></div><br />
  19. E-mail<font color="red">*</font>&nbsp;&nbsp;&nbsp;
  20. <input type="text" name="mail" id="logtab2"></div><br />
  21. Hasło<font color="red">*&nbsp;&nbsp;&nbsp;</font>
  22. <input type="password" name="pass" id="logtab">
  23. <br><br>
  24.  
  25. <br><input type="submit" name="ok" value="" id="zare"/>
  26. </form></font></div>';
  27.  
  28. // jeśli zostanie naciśnięty przycisk "Rejestruj"
  29. if(isset($_POST['ok']))
  30. {
  31. $imie = $_POST['imie'];
  32. $mail = $_POST['mail'];
  33. $pass = $_POST['pass'];
  34.  
  35. // sprawdzamy czy wszystkie dane zostały podane
  36. if(empty($imie) || empty($mail) || empty($pass)) echo 'Wpisz wszystkie pola!';
  37. // jeśli tak...
  38. else
  39. {
  40. // filtrujemy dane
  41.  
  42.  
  43. // sprawdzamy czy jest już użytkownik o takim loginie
  44. $resultmail = mysql_query("SELECT * FROM konta WHERE mail='$mail'");
  45.  
  46. // jeśli już istnieje
  47. if(mysql_num_rows($resultmail)!=0) echo 'Ten Email już został użyty podczas rejestracji.';
  48. // jeśli nie...
  49. else
  50. {
  51. // pobieramy aktualną datę
  52. $data = date("H.i d-m-Y");
  53.  
  54. // kodujemy hasło
  55. $pass = md5($pass);
  56.  
  57. // tworzymy zapytanie
  58. $query = "INSERT INTO `konta` (`imie`, `mail` , `pass`, `data_rejestracji`) VALUES ('$imie', '$mail', '$pass', '$data')";
  59.  
  60. // jeśli zapytanie wykona się poprawnie to zostanie wyświetlony stosowny komunikat
  61. if(mysql_query($query)) echo 'Zostałes poprawnie zarejestrowany! Możesz się teraz <a href="logowanie.php">zalogować</a>';
  62. }
  63. }
  64. }
  65.  
  66. // rozłączenie z bazą danych
  67.  
  68. // koniec buforowania
  69. ?>

LOGOWANIE.php
  1. <?php
  2.  
  3. // rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
  4.  
  5. // start sesji
  6.  
  7. // połączenie z mysql
  8. mysql_connect('localhost', 'legbor_aurondiel', 'zaq1@WSX')
  9. or die('Nieudane polaczenie z baza danych...');
  10.  
  11. // wybór bazy danych
  12. mysql_select_db('legbor_konta')
  13. or die('Nie udalo sie wybrac bazy danych...');
  14.  
  15.  
  16.  
  17. // sprawdzamy czy user jest już zalogowany
  18. if($_SESSION['logged']) echo 'Już jestes zalogowany!';
  19. else
  20. {
  21. // tworzymy prosty formularz
  22. echo '<br><div id="spac"><font face="Verdana" color="black" size="2" id="fontkontakt"><form action="logowanie.php" method="POST">
  23. E-mail<font color="red">*&nbsp;&nbsp;&nbsp;</font>
  24. <input type="text" name="mail" id="logtab"><br><br>
  25. Hasło<font color="red">*&nbsp;&nbsp;&nbsp;</font>
  26. <input type="password" name="pass" id="logtab"><br /><br>
  27. <div class="fb-login-button" data-show-faces="false" data-width="250" data-max-rows="1" id="face">Połącz YourSound</div><input type="submit" name="ok" value="" id="zalog"/>
  28. </form></font></div>';
  29.  
  30. // jeśli zostanie naciśnięty przycisk "Zaloguj"
  31. if(isset($_POST['ok']))
  32. {
  33. $mail = $_POST['mail'];
  34. $pass = $_POST['pass'];
  35.  
  36. // sprawdzamy czy wszystkie dane zostały podane
  37. if(empty($mail) || empty($pass)) echo '<center><b><font color="white" size="4">Proszę wypisać wszystkie pola!</font></b></center>';
  38. // jeśli tak...
  39. else
  40. {
  41. // filtrujemy dane
  42.  
  43. // kodujemy hasło
  44. $pass = md5($pass);
  45.  
  46. // sprawdzamy czy istnieje użytkownik z takim loginem i hasłem
  47. $result = mysql_query("SELECT * FROM konta WHERE mail='$mail' AND pass='$pass'");
  48.  
  49. // jeśli nie istnieje
  50. if(mysql_num_rows($result)==0) echo 'Niestety podałes niepoprawne dane!';
  51. // jeśli tak...
  52. else
  53. {
  54. // dodajemy wynik zapytania do tablicy
  55. $row = mysql_fetch_array($result);
  56.  
  57. // ustawianie sesji że użytkownik jest zalogowany
  58. $_SESSION['logged'] = true;
  59.  
  60. // dodawanie do sesji id użytkownika, login oraz datę rejestracji
  61. $_SESSION['id'] = $row['id'];
  62. $_SESSION['nick'] = $row['nick'];
  63. $_SESSION['data_rejestracji'] = $row['data_rejestracji'];
  64.  
  65. // wyświetlenie komunikatu oznaczającego poprawne logowanie
  66. echo 'Zostałes poprawnie zalogowany! Możesz teraz przejsć na <a href="index.php">stronę główna</a>';
  67. }
  68. }
  69. }
  70. }
  71.  
  72. // rozłączenie z bazą danych
  73.  
  74. // koniec buforowania
  75. ?>


Jaki jest efekt? Wypisuje mi w logowaniu ,,Niestety podałes niepoprawne dane!" a są prawidłowe.

Szymciosek
Jak sprawdzałeś czy dane są poprawne?

Sugeruję np.

var_dump($email) i dla innych zmiennych tak samo, wtedy zobaczysz co otrzymujesz.
AuronDiel
Nie sprawdzałem liczyłem, że wszystko będzie oki.
Wpisałem var_dump
  1. // sprawdzamy czy wszystkie dane zostały podane
  2. if(empty($mail) || empty($pass)) echo '<center><b><font color="white" size="4">Proszę wypisać wszystkie pola!</font></b></center>';
  3. // jeśli tak...
  4. else
  5. {
  6. // filtrujemy dane
  7.  
  8. // kodujemy hasło
  9. $pass = md5($pass);
  10.  
  11.  
  12. var_dump($mail);
  13. var_dump($pass);
  14. // sprawdzamy czy istnieje użytkownik z takim loginem i hasłem
  15. $result = mysql_query("SELECT * FROM konta WHERE mail='$mail' AND pass='$pass'");
  16.  

Wypluło coś takiego:
string(10) "abc@abc.pl" string(32) "900150983cd24fb0d6963f7d28e17f72" Niestety poda�es niepoprawne dane!

Olśniło mnie w tabeli wpisałem varchar(30) co było zbyt małe dlatego nie chciał mnie zalogować, kod był skrócony. Plus za pomoc bez var_dump nie olśniłoby mnie. smile.gif
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.