Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]logowanie(mail)
Forum PHP.pl > Forum > Przedszkole
Mastersieciweb
witam mam panel logowania i rejestracje uzytkownika, sprawnie mi zapisuje w bazie danych login i haslo szyfrowane sha1 ale nie wiem co wyslac na maila uzytkownikowi ktory sie rejestruje w celu dalszego potwierdzenia rejestracji.. co tam się wysyla i jaki link ma ten ktos odebrac tak zeby sesja sie zaczela dopiero gdy uzytkownik z swojej poczty odbierze maila i wejdzie w link.
Z góry dziękuje. Jesli jest to możliwe to prosiłbym o kod który bezposrednio bede mógł przerobić go na własnej stronie, i ewentualnie sprawdzenie czy w bazie danych nie ma tego samego maila juz ale to sam dam rade, to przy okazji.
viking
Wygeneruj losowy hash który przypisz do konta. Hash może mieć ważność kilku dni. Na użytkowniku flaga aktywny/nieaktywny. Hash wysyłasz mailem do użytkownika. Po tym jak wchodzi na stronę potwierdzenia sprawdzasz czy hash jest w bazie i nie minął jego termin ważności. Ustawiasz flagę aktywny, hash kasujesz. Jak będziesz miał problem z konkretnym już kodem - wróć.
Mastersieciweb
nie wiem jak się ustawia flage aktywny/nieaktywny ale zrobilem to w ten sposób ze najpierw zapisuje dane wraz z generowanym kodem do bazy danych o tabeli UZYTKOWNIK_REJ i wysyłam maila z linkiem do strony rejestracji gdzie uzytkownik podaje dane w tym ten kod, jesli sie zgadza kod z nazwa uzytkownika to rejestruje go w bazie danych w tabeli UZYTKOWNIK, ale coś nie działa... gdzie tu błąd.. Jesli to mozliwe to chciałbym w ten sposób to zrobic tylko poprawic jakis błąd.. oto pliki...

najpierw tutaj wpisuje dane:

  1. <?php
  2. function wyswietl_form_rej() {
  3. ?>
  4. <div id="rejestracja_uzytkownika_wyglad">
  5. <form method="post" action="../logowanie_uzytkownika/nowa_rejestracja.php">
  6. <tr>
  7. <td>Adres poczty elektronicznej:</td>
  8. <td><input type="text" name="email" size="30" maxlength="100"></td></tr>
  9. <tr>
  10. <td>Preferowana nazwa użytkownika <br />(maksymalnie 16 znaków):</td>
  11. <td valign="top"><input type="text" name="nazwa_uz"
  12. size="16" maxlength="16"/></td></tr>
  13. <tr>
  14. <td>Hasło <br />(pomiędzy 6 i 16 znaków):</td>
  15. <td valign="top"><input type="password" name="haslo"
  16. size="16" maxlength="16"/></td></tr>
  17. <tr>
  18. <td>Potwierdź hasło:</td>
  19. <td><input type="password" name="haslo2" size="16" maxlength="16"/></td></tr>
  20. <tr>
  21. <td colspan="2" align="center">
  22. <input type="submit" value="Rejestracja"></td></tr>
  23. </table></form> </div>
  24.  
  25. #rejestracja_uzytkownika_wyglad{background-color:rgba(0,0,0,0.4);position:absolute; margin-top:180px; margin-left:300px}
  26.  
  27. </style>
  28. <?php
  29.  
  30. }
  31.  




potem te dane przechwytuje ten plik:
(jesli chodzi o baze danych to polaczenie jest ok, wszystko mi zapisuje itp wiec nie wrzucam juz funkcji z laczeniem z baza

  1. <?php
  2. require_once('../logowanie_uzytkownika/wszystkie_funkcje.php');
  3.  
  4. // utworzenie krótkich nazw zmiennych
  5. $email=$_POST['email'];
  6. $nazwa_uz=$_POST['nazwa_uz'];
  7. $haslo=$_POST['haslo'];
  8. $haslo2=$_POST['haslo2'];
  9. $adresdo = $email;
  10. $kod_rej = uniqid('');
  11. $lacz = lacz_bd();
  12.  
  13. $wynik = $lacz->query("insert into uzytkownik_rej values
  14. ('".$nazwa_uz."', sha1('".$haslo."'), '".$email."','".$kod_rej."')");
  15.  
  16. $temat = "Kontynuacja rejestracji";
  17.  
  18. $zawartosc = "Twoj login to:".$nazwa_uz.
  19. " Twoje haslo to:".$haslo.".".
  20. "Aby kontynuowac proces logowania kliknij na ten link http://xxxxxxxxx.cba.pl/strona/logowanie_u...rejestracji.php i przepisz ten kod ".$kod_rej.".";
  21.  
  22. $adresod = "xxxxxxxx.cba.pl";
  23.  
  24. try {
  25. // sprawdzenia wypełnienia formularzy
  26. if (!wypelniony($_POST)) {
  27. throw new Exception('Formularz wypełniony nieprawidłowo - proszę wrócić i spróbować ponownie.');
  28. }
  29.  
  30. // nieprawidłowy adres poczty elektronicznej
  31. if (!prawidlowy_email($email)) {
  32. throw new Exception('Nieprawidłowy adres poczty elektronicznej — proszę wrócić i spróbować ponownie.');
  33. }
  34.  
  35. // różne hasła
  36. if ($haslo != $haslo2) {
  37. throw new Exception('Niepasujące do siebie hasła — proszę wrócić i spróbować ponownie.');
  38. }
  39.  
  40. // sprawdzenie długości nazwy użytkownika
  41. if ((strlen($nazwa_uz) > 16)) {
  42. throw new Exception('Nazwa uzytkownika nie może mieć więcej niż 16 znaków — proszę wrócić i spróbować ponownie.');
  43. }
  44.  
  45. // sprawdzenie długości hasła
  46. // nazwę użytkownika można skrócić, lecz zbyt długiego
  47. // hasła skrócić nie można
  48. if ((strlen($haslo) < 6) || (strlen($haslo) > 16)) {
  49. throw new Exception('Hasło musi mieć co najmniej 6 i maksymalnie 16 znaków — proszę wrócić i spróbować ponownie.');
  50. }
  51.  
  52.  
  53. // stworzenie łącza do strony członkowskiej
  54. tworz_naglowek_html('Rejestracja udana');
  55. info_pod_naglowkiem_html('Rejestracja zakonczyla sie sukcesem, wlasnie zostala wyslana wiadomosc na Twojego maila');
  56.  
  57.  
  58. // wywołanie funkcji mail() wysyłającej wiadomość pocztową
  59. mail($adresdo, $temat, $zawartosc, $adresod);
  60. // koniec strony
  61.  
  62. }
  63. catch (Exception $e) {
  64. tworz_naglowek_html('Problem z rejestracja');
  65.  
  66.  
  67.  
  68. ?>
  69. <div id="wiadomosc">
  70. <?php echo
  71. $e->getMessage();
  72. ?>
  73. </div>
  74. <style>
  75. #wiadomosc{color:black; margin-top:140px; font-size:15px;margin-left:10px;position:absolute;}
  76.  
  77. </style>
  78. <?php
  79. }
  80.  



w mailu otrrzymuje wszystkie dane i ten link w ktorym mam potwierdzic kod i wpisac dane jeszcze raz zeby przeslac je do bazy danych tabeli UZYTKOWNIK gdzie stad bedzie podczas logowania pobierac dane


  1.  
  2. <?php
  3. require_once('../logowanie_uzytkownika/wszystkie_funkcje.php');
  4. tworz_naglowek_html('Potwierdzenie rejestracji');
  5.  
  6. wyswietl_potwierdzenie_rej();
  7.  
  8.  
  9.  
  10.  
  11. ?>
  12.  


i funkcja wyswietl_potwierdzenie_rej();

  1. <?php
  2. function wyswietl_potwierdzenie_rej() {
  3. ?>
  4. <div id="rejestracja_uzytkownika_potwierdzenie">
  5. <form method="post" action="../logowanie_uzytkownika/zarejestrowano.php">
  6. <tr>
  7. <td>Wpisz swój login:</td>
  8. <td><input type="text" name="nazwa_uz" size="30" maxlength="100"></td></tr>
  9. <tr>
  10. <td>Wpisz kod dostępu otrzymany mailem: </td>
  11. <td><input type="text" name="kod_dostepu" size="30" maxlength="30"/></td></tr>
  12. <tr>
  13. <td>Adres poczty elektronicznej:</td>
  14. <td><input type="text" name="email" size="30" maxlength="100"></td></tr>
  15. <tr>
  16. <td>Hasło <br />(pomiędzy 6 i 16 znaków):</td>
  17. <td valign="top"><input type="password" name="haslo"
  18. size="16" maxlength="16"/></td></tr>
  19. <td colspan="2" align="center">
  20. <input type="submit" value="Rejestracja"></td></tr>
  21. </table></form> </div>
  22.  
  23. #rejestracja_uzytkownika_potwierdzenie{background-color:rgba(0,0,0,0.4);position:absolute; margin-top:180px; margin-left:300px}
  24.  
  25. </style>
  26. <?php
  27.  
  28. }
  29.  



gdzie uruchamiamy po zatwierdzeniu ostatni plik:

  1.  
  2. <?php
  3. require_once('../logowanie_uzytkownika/wszystkie_funkcje.php');
  4. tworz_naglowek_html('Potwierdzenie rejestracji');
  5. $haslo=$_POST['haslo'];
  6. $email=$_POST['email'];
  7. $nazwa_uz = $_POST['nazwa_uz'];
  8. $kod_rej = $_POST['kod_rej'];
  9. $lacz = lacz_bd();
  10.  
  11.  
  12. $wynikk = $lacz->query("select * from uzytkownik_rej
  13. where nazwa_uz ='".$nazwa_uz."'
  14. and kod_rej = '".$kod_rej."'");
  15.  
  16.  
  17. if ($wynikk) {
  18.  
  19. rejestruj($nazwa_uz, $email, $haslo);
  20. // rejestracja zmiennej sesji
  21. $_SESSION['prawid_uzyt'] = $nazwa_uz;
  22.  
  23.  
  24.  
  25.  
  26. wyswietl_menu_uzyt();
  27. }
  28. else {
  29. echo('Problem z rejestracja');
  30.  
  31. }
  32.  
  33.  
  34. ?>
  35.  
  36.  



jesli chodzi o funkcje $lacz = lacz_bd(); to ona dziala w 100% wszystkie dane mi zapisuje ale problem jest taki w tym co zrobilem ze obojetnie jakie dane wpisze w ostatnim formie czyli function wyswietl_potwierdzenie_rej() to zalogowuje sie na jakiekolwiek konto ktore wpisze.. zamiast wyswietlic komunikat ze Problem z rejestracja.. nie rozumiem...
viking
Co zwraca twoja funkcja query? Wyżej też trochę bez sensu. Najpierw wstawiasz dane do bazy a później sprawdzasz dopiero czy są one prawidłowe. SQL Injection!!!
Mastersieciweb
bo chcialem wstawic dane wraz z kodem do bazy do tabeli uzytkownik_rej po czym wyslac ten kod do uzytkownika ktory potwierdzi te dane a następnie zarejestruje sie w innej tabeli w bazie uzytkownik.. Czyli beznadziejny pomysl? ale jak to chociaz poprawic zeby dzialalo tak jak napisalem.. bo prawie wszystko dziala oprócz rejestracji gdzie podajac byle jakie haslo i login zalogowuje mi sie pod ten byle jaki login pomimo ze go w bazie nie ma..
ctom
1 /do bazy zapisz : login | haslo ( zakodowane) | mail | vHash (jakiś ciąg znaków) | activ = 0 ( 0 - new; 1 - potwierdzony)
2 / na maila wyślij link z odpowiednim linkiem, w którym dasz parametr ( vHash)
3/ user z linku przejdzie do serwisu a Ty go poddasz zweryfikowaniu vHash ( and active = 0 ) i robisz update : activ =1
4/ teraz dopiero user może się zalogować ( tylko z activ =1 )

dokładnie tak samo ( no prawie tak samo) robisz gdy user chce odzyskać hasło
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.