Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] wygrawerowanie i przesłanie nowego hasła, problem
Lejto
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


Mam kod który graweruje nowe hasło updatuje do bazy przesyła je na danego maila.
Kod był wiele razy modyfikowany więc niektóre elementy mogą być niepotrzebne.
Raz kod zadziałał zupdatował nowe hasło do bazy ale nie wysłał mailem wiadomość doszła ale bez hasła winksmiley.jpg
Teraz ani to ani to nie działa.
Kody: (kody formularza nie podaje bo chyba nie ma po co)
  1. <?php
  2. tworz_naglowek_html('Ustawianie hasła');
  3.  
  4. // utworzenie krótkiej nazwy zmiennej
  5. $user = $_POST['user'];
  6.  
  7. try
  8. {
  9.  $haslo=ustaw_haslo($user);
  10.  powiadom_haslo($user, $haslo);
  11.  echo 'Nowe hasło zostało przesłane na adres poczty elektronicznej.<br />';
  12. }
  13. catch (Exception $e)
  14. {
  15.  echo 'Hasło nie mogło zostać ustawione. Proszę spróbować póĽniej.';
  16. }
  17. tworz_HTML_URL('?co=log', 'Logowanie');
  18. tworz_stopke_html();
  19. ?>

i grawerowanie
  1. <?php
  2. function pobierz_losowe_slowo($dlugosc_min, $dlugosc_max)
  3. //pobranie losowego słowa ze słownika o okre?lonej długo?ci zwrócenie go
  4. {
  5.  global $haslo;
  6.  
  7. $ile_liter = 4; // Ile liter ma mieć losowany ciąg
  8. $litery = 'qwertyuiopasdfghjklzxcvbnm1234567890'; // Zestaw liter z jakich ma być zbudowany ciąg
  9.  
  10. // 'Zamieszanie komory losującej'
  11. // UWAGA: od wersji 4.2.0 PHP nie jest to juz konieczne
  12. srand((double)microtime()*1000000);
  13.  
  14. $haslo = ''; // Ustawienie początkowe hasła
  15. for ($i=0;$i<$ile_liter;$i++)
  16.  { $haslo .= substr($litery,(rand()%(strlen($litery))),1); };
  17. }
  18.  
  19.  
  20.  
  21. function ustaw_haslo($user)
  22. // ustawienie hasła użytkownika na losowš warto?ć 
  23. // zwraca nowe hasło lub false w przypadku niepowodzenia
  24. { 
  25.  echo $haslo;
  26. $wynik = mysql_query("update uzytkownik
  27.  set haslo = sha1('$haslo')
  28.  where user = '$user'");
  29. if (!$wynik)
  30.  echo 'Zmiana hasła nie powiodła się.'; // hasło nie zmienione
  31. else
  32. return $haslo; // hasło zmienione pomyślnie
  33. }
  34.  
  35. function powiadom_haslo($user, $haslo)
  36. // powiadomienie użytkownika o zmianie hasła
  37. {
  38.  
  39. $wynik = mysql_query("select email from uzytkownik
  40.  where user='$user'");
  41. if ($wynik == false)
  42. {
  43. echo 'Nie znaleziono adresu e-mail<br>';
  44. }
  45. else
  46. {
  47. $wiersz = mysql_fetch_object($wynik);
  48. $email = $wiersz->email;
  49. $od = "From: admin@admin.pl r\n";
  50. $wiad = "Hasło na stronie ddd zostało zmienione na:r\n"
  51. ."--------------------r\n"
  52. .$haslo
  53. ."r\n--------------------r\n"
  54. ."Proszę zmienić je przy następnym logowaniu. r\n"
  55. ."W razie niedziałania hasła lub jakiego kolwiek błędu proszę powiadomić administratora strony r\n";
  56. echo 'elo';
  57. echo $haslo;
  58.  
  59. if (mail($email, 'Przesłanie nowego hasła', $wiad, $od))
  60. return true;
  61. else
  62. echo 'Wysłanie e-maila nie powiodło się';
  63. }
  64. }
  65. ?>


Ten post edytował Lejto 2.05.2008, 17:10:28


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
artega
post
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Twój skrypt nie wysyła hasła, ponieważ takiego nie tworzy przez funkcje ustaw_haslo - chyba taka jest idea, prawda?
Go to the top of the page
+Quote Post
marcio
post
Post #3





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


W funkcji pobierz_losowe_haslo masz global po co ono ma byc w ustaw haslo bo z tamdat pobierasz zmienna $haslo a ja tworzysz w 1 funckji wiec jest zbedne
Sproboj tak
  1. <?php
  2. function pobierz_losowe_slowo($max) { //tak nie szybciej i latwiej??
  3.  
  4. $nowe_haslo = substr(md5(time()), 0, $max);
  5. return $nowe_haslo;
  6. }
  7.  
  8.  
  9. function powiadom_haslo($user, $pass) {
  10.  
  11. if($wynik = mysql_query('select email from uzytkownik where user = "'.$user.'" limit 1')) {
  12.  
  13. $wiersz = mysql_fetch_assoc($wynik);
  14. $email = $wiersz['email'];
  15. $od = "From: admin@admin.pl r\n";
  16. $wiad = 'Hasło na stronie 2c-nowe.com zostało zmienione na: '.$pass.'
  17. Proszę zmienić je przy następnym logowaniu
  18. W razie niedziałania hasła lub jakiego kolwiek błędu proszę powiadomić administratora strony';
  19.  
  20. if(mail($email, 'Przesłanie nowego hasła', $wiad, $od)) echo('Email z nowym haslem zostal wyslany');
  21. else echo('Wysłanie e-maila nie powiodło się');
  22. }
  23. else echo('Nie znaleziono email'a');
  24. }
  25.  
  26.  
  27. function ustaw_haslo($user, $new_pass){ 
  28.  
  29. if($wynik = mysql_query('update uzytkownik set haslo = "'.sha1($new_pass).'" where user = "'.$user.'"')) echo('Zmieniono haslo')
  30. else echo('Blad przy zmianie hasla');
  31.  
  32. }
  33.  
  34. $login = $_POST['login'];
  35.  
  36. $haslo = pobierz_losowe_haslo(8); // tu masz nowe haslo
  37. ustaw_haslo($login, $haslo);
  38. powiadom_haslo($login, $haslo);
  39. ?>

Powiedz ewentualnie co nie dziala pisalem z palca moze sa jakies bledy ogolnie tez w CMS tak zrobilem zapomniane haslo ale uwierz mi to nie jest dobry sposob zabezpiecz to sobie bo mozna walki robic chyba ze sprawdzasz dane z form'a ale nigdzie tu tego nie widze

W kodzie miales cos takiego
  1. <?php
  2. echo $haslo;
  3. ?>

W 2 funkcjach z zmienna $haslo tworzysz w funkcji pobierz_losowe_haslo() i to nie mialo prawa dzialac bo po
1.to u ciebie ta funkcja nic nie zwraca
2.to nie echo() ale jak juz ta zmienna ma byc widoczna w inne funckji to
  1. <?php
  2. global $haslo;
  3. ?>

3.
  1. <?php
  2. sha1('$haslo')
  3. ?>

Zmienna to nie string i chyba tak sie jej nie przekazuje

Ten post edytował marcio 2.05.2008, 13:56:06


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Lejto
post
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


thx @marcio wszystko działa


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





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


hehe jednak na cos sie przydaje smile.gif jednak zabezpiecz to sobie zeby zmienialo haslo tylko jesli sie kliknie na link bo ktos komus zmieni i ta osoba nie wiedziac o tym pomysli ze byl hack tez to musialem zmieniac


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Lejto
post
Post #6





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


w mailu link tak?
podaj twój kod jak to masz zrobione winksmiley.jpg za każdym razem jest grawerowany nowy link czy po ip jak to działa?


--------------------
Go to the top of the page
+Quote Post
marcio
post
Post #7





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Przy rejestracji generuje jakis kod kazdemu user'ow potem wysylam link z tym kodem i zakodowanym haslem bo tym jak ktos na niego kliknie haslo sie zmienia
  1. <?php
  2. if(!empty($_POST['log']) && !empty($_POST['email']) && isset($_POST['wyslij'])) {
  3.  
  4.  if($db = mysql_connect($pasy['host'], $pasy['login'], $pasy['haslo'])) {
  5. mysql_select_db($pasy['baza']);
  6.  
  7.  $query = ('select * from users where login = "'.mysql_real_escape_string($_POST['log']).'"');
  8.  $result = mysql_query($query, $db);
  9.  $info = mysql_fetch_assoc($result);
  10.  $log = $_POST['log'];
  11.  $code = $info['code'];
  12.  $db_email = $info['email'];
  13.  $post_email = $_POST['email'];
  14.  $new_pass = substr(md5(rand(1, 99999)), 0,10);
  15.  $hash_haslo = md5($new_pass);
  16.  $tyt = 'Nowe haslo';
  17.  $smtp = 'smtp.szu.pl';
  18.  $port = 25;
  19.  $nick = 
  20.  $haslo = 
  21.  $from = 'marcio@szu.pl';
  22.  $headers = "MIME-Version: 1.0r\n";
  23.  $headers .= "Content-type: text/html; charset=iso-8859-2r\n";
  24.  $content = "Witaj ".$log." twoje haslo zostalo zmienione na takie: ".$new_pass."
  25.  Aby je aktywowac musisz kliknac na ten link:
  26. http://".$strona."?log=".$log."&code=".$code."&pass=".$hash_haslo."";
  27.  
  28. if($info['login'] == $log && $info['email'] == $email) {
  29.  
  30.  if(my_mail($smtp, $port, $nick, $haslo, $from, $db_email, $tyt, $content)) {
  31.  
  32. echo('<script>alert("Email z nowym haslem zostal wyslany na email podany przy rejestracji aby je
     zmienic prosze kliknac na link podany w tresc email'a");</script>'
    );
  33. }
  34. else echo('<table align="center"><tr><td class="contents" align="center"><b style="color:#f00">Blad przy wysylaniu email'a</b></td></tr></table>');
  35. }
  36. else echo('<table align="center"><tr><td class="contents" align="center"><b style="color:#f00">Dane nie sa poprawne</b></td></tr></table>');
  37. }
  38. else echo('<table align="center"><tr><td class="contents" align="center"><b style="color:#f00">Blad przy laczeniu z baza</b></td></tr></table>');
  39. }
  40.  
  41. if(isset($_GET['log']) && isset($_GET['code']) && isset($_GET['pass'])) {
  42.  
  43.  if($db = mysql_connect($pasy['host'], $pasy['login'], $pasy['haslo'])) {
  44. mysql_select_db($pasy['baza']);
  45.  
  46.  if(mysql_query('update users set haslo = "'.mysql_real_escape_string($_GET['pass']).'" where login = "'.mysql_real_escape_string($_GET['log']).'" and code = "'.mysql_real_escape_string($_GET['code']).'"', $db)) {
  47.  
  48.  if(mysql_affected_rows() > 0) {
  49.  
  50. echo('<table align="center"><tr><td class="contents" align="center"><b style="color:#f00">Haslo zostalo zmienione teraz morzesz sie logowac</b></td></tr></table>');
  51.  
  52. }
  53.  
  54. else echo('<table align="center"><tr><td class="contents" align="center"><b style="color:#f00">Podano zly kod aktywacyjny</b></td></tr></table>');
  55. }
  56.  
  57. else echo('<table align="center"><tr><td class="contents" align="center"><b style="color:#f00">Nie mozna polaczyc z baza</b></td></tr></table>');
  58.  
  59. }
  60. ?>

Masz nie wiem czy nie brakuje jakiejs klamry skopiowalem na szybko

HEhe sorki za pasy smile.gif

Ten post edytował marcio 2.05.2008, 19:30:19


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Lejto
post
Post #8





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


@marcio a kod code zmieniasz userowi np. przy zalogowaniu czy jest cały czas taki sam?


--------------------
Go to the top of the page
+Quote Post
marcio
post
Post #9





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Ustawiam go raz przy rejestracji

P.S podsunoles mi teraz fajna idee zmieniac za kazdym logowaniem wtedy bedzie bardziej bezpieczne to smile.gif tylko nie bedzie dobrze dzialac zapomniane haslo bo co jesli ktos sie zaloguje a w email'u przyjdzie stary klucz smile.gif wiec raczej zmieniac nie bede


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Lejto
post
Post #10





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


a jak tworzysz ten kod? Bo ja przy użyciu md5


--------------------
Go to the top of the page
+Quote Post
marcio
post
Post #11





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Tak jak ci tu napisalem
  1. <?php
  2. $nowe_haslo = substr(md5(time()), 0, $max);
  3. ?>

MNiej wiecej


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
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: 19.08.2025 - 07:32