Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]logowanie(mail), co wyslac na maila-problem
Mastersieciweb
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

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


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.

Ten post edytował Mastersieciweb 26.03.2014, 00:07:52
Go to the top of the page
+Quote Post
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


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óć.


--------------------
Go to the top of the page
+Quote Post
Mastersieciweb
post
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

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


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...

Ten post edytował Mastersieciweb 28.03.2014, 23:10:54
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


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!!!


--------------------
Go to the top of the page
+Quote Post
Mastersieciweb
post
Post #5





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

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


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..
Go to the top of the page
+Quote Post
ctom
post
Post #6





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


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


--------------------
Polecam MyDevil hosting idealny dla deweloperów
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 Aktualny czas: 20.08.2025 - 06:16