Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt aktywujący zmianę maila poprzez kod
Forum PHP.pl > Forum > Gotowe rozwiązania
unloco
Witam. Jestem w trakcie pisania strony w której po założeniu konta (podaje się tam login, adres mailowy i hasło) mamy możliwość przejścia do panelu administracyjnego. Tam z kolei mogę zmienić hasło (ten skrypt jest ok, działa) i również mogę zmienić adres mailowy.

Zmiana adresu e-mail polega na tym, że na zmieniany adres zostaje wysłany link aktywacyjny:

account_email_change.php:
  1. <?php
  2.  
  3. $czy_zalogowany = $_SESSION['zalogowany'];
  4.  
  5.  
  6.  
  7.  
  8. if ($czy_zalogowany == 1)
  9. {
  10. $nowy_adres_mailowy = $_POST['new_mail'];
  11. $stary_adres_mailowy = $_SESSION['zalogowany_mail'];
  12.  
  13. if (!empty($nowy_adres_mailowy)) { $wyslij_kod = 1; }
  14.  
  15. function rand_str($length = 10, $chars = '1234567890')
  16. {
  17. // Length of character list
  18. $chars_length = (strlen($chars) - 1);
  19.  
  20. // Start our string
  21. $string = $chars{rand(0, $chars_length)};
  22.  
  23. // Generate random string
  24. for ($i = 1; $i < $length; $i = strlen($string))
  25. {
  26. // Grab a random character from our list
  27. $r = $chars{rand(0, $chars_length)};
  28.  
  29. // Make sure the same two characters do not appear next to each other
  30. if ($r != $string{$i - 1}) $string .= $r;
  31. }
  32.  
  33. // Return the string
  34. return $string;
  35. }
  36.  
  37. $kod_zmiany_maila = rand_str();
  38.  
  39. include("config.php");
  40.  
  41. $dane_do_sprawdzenia = "select * from user_list WHERE user_mail = '$stary_adres_mailowy'";
  42. $sprawdzamy_dane = mysql_query($dane_do_sprawdzenia);
  43. $czy_wpisano_dobrze = mysql_num_rows($sprawdzamy_dane);
  44.  
  45. if ($czy_wpisano_dobrze>0)
  46. {
  47. $result = mysql_query("UPDATE user_list SET user_act_code='$kod_zmiany_maila' WHERE user_mail='$stary_adres_mailowy'") or die ("Problem z bazą danych. Przepraszamy. Próbujemy to rozwiązać jak najszybciej tylko się da.<br>");
  48. echo "Wysłano link aktywujący nowy adres.<br>";
  49.  
  50. echo "Kod do zmiany to: ".$kod_zmiany_maila." <br>";
  51. $emaill=$nowy_adres_mailowy;
  52. $title="Zmiana adresu e-mail";
  53. $wiadomosc=("Ten email zostal wyslany poniewaz uzyto tego adresu podczas rejestracji konta na naszej stronie. Jesli nie chciales dostac tej poczty to ja zignoruj.\n\nTwoj link aktywacyjny aby zatwierdzic zmiane adresu to: http://polish-chicks.net/email_verify.php?...y_adres_mailowy \n");
  54. mail($emaill, $title, $wiadomosc);
  55.  
  56. }
  57. }
  58.  
  59. ?>


Klikając na odsyłacz przeniesie nas na stronę "email_verify.php":

  1. <?php
  2.  
  3. $zmieniany_mail = $_REQUEST['deactivated_mail'];
  4. $kod_zmieniajacy = $_REQUEST['activation_code'];
  5. $zapisywany_mail = $_REQUEST['activated_mail'];
  6.  
  7. echo "Mail który zostanie zmieniony: ".$zmieniany_mail."<br>";
  8. echo "Mail który zostanie wprowadzony: ".$zapisywany_mail."<br>";
  9. echo "kod aktywujący nowego maila: ".$kod_zmieniajacy."<br>";
  10. // powyższe 3 linijki są celowo wyświetlone żeby sprawdzić czy odsyłacz przesyła wartość zmiennych na stronę. Docelowo tego tu nie będzie
  11.  
  12.  
  13. include("config.php"); // szczegóły są najmniej istotne gdyż poprawnie się łączy z bazą danych
  14.  
  15. $dane_do_sprawdzenia = "select * from user_list WHERE user_act_code = '$kod_zmieniajacy'";
  16. $sprawdzamy_dane = mysql_query($dane_do_sprawdzenia);
  17. $czy_wpisano_dobrze = mysql_num_rows($sprawdzamy_dane);
  18.  
  19. if ($czy_wpisano_dobrze>0)
  20. {
  21. $result = mysql_query("UPDATE user_list SET user_mail='$zapisywany_mail' WHERE user_mail='$zmieniany_mail'") or die ("Problem z bazą danych. Przepraszamy. Próbujemy to rozwiązać jak najszybciej tylko się da.<br>");
  22. echo "Adres mailowy został pomyślnie zmieniony.<br>";
  23. }
  24.  
  25. if ($czy_wpisano_dobrze == 0)
  26. {
  27. echo "Kliknięto w zły lub nieważny odsyłacz.<br>";
  28. }
  29. ?>


A gdy mimo wszystko kliknę na odsyłacz to powyższy kod pokazuje, że odsyłacz poprawnie przekazuje dane do strony jednakże wciąż pojawia się tekst, że kliknięto w zły lub nieważny odsyłacz i w konsekwencji zmiany nie są wprowadzane. Nie wiem czy jest zła składnia wywołania mysql czy to tylko php także w tym dziale zadaję pytanie.

Jestem w kropce. Proszę o pomoc. (PS. Pełna zasada działania skryptu jest na www.polish-chicks.net - strona pusta, można tylko się zarejestrować, tylko trzeba podać poprawny adres e-mail bo na niego jest wysyłany kod aktywujący który się wprowadza w pole do aktywacji konta i gdy konto już jest aktywne to po zalogowaniu można przejść do panelu administracyjnego konta skąd można wprowadzać zmiany).

Edit o 5:50: Problem udało się rozwiązać, przy jednej zmiennej było o jeden znak $ za dużo ale nadal muszę spróbować rozwiązać problem co zrobić gdy kliknę na odsyłacz, żebym był dalej zalogowany
GyniO
Popraw ostatnie linie na:
  1. $dane_do_sprawdzenia = "select * from user_list WHERE user_act_code = '$kod_zmieniajacy' LIMIT 1";
  2.  
  3. $czy_wpisano_dobrze = mysql_num_rows($dane_do_sprawdzenia);
  4.  
  5. if ($czy_wpisano_dobrze != 0)
  6. {
  7.  
  8. $result = mysql_query("UPDATE user_list SET user_mail='$zapisywany_mail' WHERE user_mail='$zmieniany_mail'") or die ("Problem z bazą danych. Przepraszamy. Próbujemy to rozwiązać jak najszybciej tylko się da.<br>");
  9. echo "Adres mailowy został pomyślnie zmieniony.<br>";
  10. }
  11.  
  12. if ($czy_wpisano_dobrze == 0)
  13. {
  14. echo "Kliknięto w zły lub nieważny odsyłacz.<br>";
  15. }
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.