Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Aktywacja
Forum PHP.pl > Forum > Przedszkole
nansss
Witam.
Mam mały problem.
Posiadam skrypt rejestracji, lecz chcę go udoskonalić w aktywację przez email.
Mam problem, bo nie uaktualnia mi w bazie danych tabeli kod i nie dodaje tam kodu, oraz nie uaktualnia tabeli access i nie zmienia z 0 na 1.

rejestracja.php

  1. <?php
  2. $connect = mysql_connect('localhost', 'root', 'password') or die('Nie mo&#x17C;na po&#x142;&#x105;czyc si&#x119; z baz&#x105; danych. Przepraszamy za k&#x142;opoty');
  3. $db = mysql_select_db(db') or die('Nie mo&#x17C;na wybra&#x107; bazy danych. Przepraszamy za k&#x142;opoty');
  4. $login = $_POST['login'];
  5. $access = $_POST['0'];
  6. $email = $_POST['email'];
  7. $haslo = md5('haslo');
  8. $haslo2 = md5('haslo2');
  9. $data = date('Y-m-d-G:i:s');
  10. $zapytanie = mysql_query("SELECT COUNT(*) FROM user WHERE login='$login' LIMIT 1");
  11. $zajete = mysql_fetch_row($zapytanie);
  12. $zapytanie = mysql_query("SELECT COUNT(*) FROM user WHERE email='$email' LIMIT 1");
  13. $zajete1 = mysql_fetch_row($zapytanie);
  14. if (empty($_POST["login"]) || empty($_POST["email"]) || empty($_POST["haslo"]) || empty($_POST["haslo2"]))
  15. {
  16. echo '<center>Nie wype&#x142;niono wszystkich pól.</center> <meta http-equiv="Refresh" content="3; url=index.php" />';
  17. }
  18. elseif($_POST["haslo"]!=$_POST["haslo2"])
  19. {
  20. echo '<center>Podane hasła nie s&#x105; identyczne.</center> <meta http-equiv="Refresh" content="3; url=index.php" />';
  21. }
  22. elseif($zajete[0] != 0)
  23. {
  24. echo '<center>Podana nazwa u&#x17C;ytkownika jest ju&#x17C; zaj&#x119;ta.</center> <meta http-equiv="Refresh" content="3; url=index.php" />';
  25. }
  26. elseif($zajete1[0] != 0)
  27. {
  28. echo '<center>Podany email jest zaj&#x119;ty przez innego u&#x17C;ytkownika.</center> <meta http-equiv="Refresh" content="3; url=index.php" />';
  29. }
  30. elseif(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
  31. {
  32. echo '<center>Podany email jest nieprawid&#x142;owy.</center> <meta http-equiv="Refresh" content="3; url=index.php" />';
  33. }
  34. else
  35. {
  36. $zapytanie = "INSERT INTO `user` (`login`, `access`, `email`, `haslo`, `data`) VALUES ('".$login."', '".$access."', '".$email."', '".$haslo."', '".$data."')";
  37. $zap= "SELECT `email` FROM `user` ORDER BY `id` DESC";
  38. $idzap = mysql_query($zap);
  39. $naglowki = "Content-type: text/html; charset=iso-8859-2\r\n";
  40. $naglowki .= "Reply-to: nansss@boo.pl <nansss@boo.pl>\r\n";
  41. $naglowki .= "From: nansss@boo.pl <nansss@boo.pl>\r\n";
  42. }
  43. if ( ! mysql_query($zapytanie))
  44. {
  45. }
  46. else
  47. {
  48. echo '<center>Twoje konto zosta&#x142;o za&#x142;o&#x17C;one.<br>
  49. W ci&#x105;gu 10 minut otrzymasz email z następnymi instrukcjami.</center> <meta http-equiv="Refresh" content="5; url=index.php" />';
  50. $wiersz = mysql_fetch_row($idzap);
  51. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  52. mail($email, 'Aktywacja konta na xxx.pl', '<b>Witaj na xxx.pl!</b><br>Konto <b>'.$login.'</b> zostało zarejestrowane na podany adres e-mail.<br>W celu potwierdzenia rejestracji konta kliknij w poniższy odnośnik:<br><a href="http://sampo.boo.pl/rejestracja.php?active='.$kod.'"> xxx.pl/rejestracja.php?active='.$kod.' </a><br><br>Jeśli nie rejestrowałeś konta o nazwie <b>'.$login.'</b> po prostu zignoruj tego maila.<br><br><br>------<br>Wiadomość wygenerowana automatycznie<br>przez serwis xxx.pl', $naglowki);
  53. $zapy = "UPDATE `user` SET `klucz` =('".$kod."') WHERE `access` =1";
  54. $idzapy = mysql_query($zapy);
  55. }
  56. if($_GET["active"])
  57. {
  58. mysql_query("UPDATE `user` SET `access` =1 WHERE `klucz` ='$_GET[active]' ");
  59. {
  60. echo '<center>Aktywacja uko&#x144;czona pomy&#x15B;lnie. Mo&#x17C;esz ju&#x17C; korzysta&#x107; z naszego serwisu.</center>';
  61. }
  62. else
  63. {
  64. echo '<center>Podano nieistniej&#x105;cy kod aktywacyjny.</center>';
  65. }
  66. }
  67. mysql_close($connect);
  68. ?>


Najpradopodobniej z tym kodem coś jest nie tak, ale nie jestem pewien.

  1. $zapy = "UPDATE `user` SET `klucz` =('".$kod."') WHERE `access` =1";
  2. $idzapy = mysql_query($zapy);
  3. }
  4. if($_GET["active"])
  5. {
  6. mysql_query("UPDATE `user` SET `access` =1 WHERE `klucz` ='$_GET[active]' ");


Proszę o pomoc
Cysiaczek
Czy nie możesz się wysilić i wyświetlić sobie informacji jakie są zwracane przez mysql_error() ?
Czy nie możesz chociaż pokazać co zawiera $_GET['active']?
To są podstawowe rzeczy, które się robi, jeśli coś nie działa tak, jak nam się wydaje, że powinno.

Podzdrawiam
cojack
  1. "UPDATE `user` SET `klucz` =('".$kod."') WHERE `access` =1";


a tu access nie powinno być 0 ?

Nie znam struktury bazy danych, więc nie wiem co Ty masz w access jako default. Strzelam.
Spawnm
Ten kod jest bez sensu,
$zapy = "UPDATE `user` SET `klucz` =('".$kod."') WHERE `access` =1";
po where daj id dodanego pola


Cojack -> wtedy by ustawiło wszystkim userom nowy klucz, czyli ich linki aktywacyjne by nie działały
cojack
Spawn, o tym samym chciałem napisać, ale przemyślałem pierw, i zobacz że on ma idzap, więc nie wiem dlaczego pomyliło mi się z id wiersza biggrin.gif Ale masz rację.
nansss
Problem został z tym:

  1. if($_GET["active"])
  2. {
  3. mysql_query("UPDATE user SET access = '1' WHERE klucz= 'nie wiem co tutaj dać'");
  4. {
  5. echo '<center>Aktywacja uko&#x144;czona pomy&#x15B;lnie. Mo&#x17C;esz ju&#x17C; korzysta&#x107; z naszego serwisu.<br><a href="zaloguj.php>Przejd&#x17A; do logowania</a></center>';
  6. }
  7. else
  8. {
  9. echo '<center>Podano nieistniej&#x105;cy kod aktywacyjny.</center>';
  10. }
  11. }
  12. mysql_close($connect);
  13. ?>


Wyrzuca, że podano nieistniejący kod aktywacyjny
Spawnm
Zapewne dajesz tam klucz z geta active...
Zobacz w bazie czy taki istnieje, może wcześniejszy kod go zmienił i już nie pasuje.
cojack
Tutaj akurat miałeś dobrze:
  1. mysql_query("UPDATE `user` SET `access` =1 WHERE `klucz` ='$_GET[active]' ");


@Spawnm
Cytat
Zobacz w bazie czy taki istnieje, może wcześniejszy kod go zmienił i już nie pasuje.

nie ma już nic, nic już nie ma haha.gif

@nansss dropnij baze i utwórz ponownie.
nansss
Już działa. Dzięki waszej pomocy i mojego kolegi z miejscowości działa.

Dzięki wielkie smile.gif
Spawnm
  1. "UPDATE `user` SET `access` =1 WHERE `klucz` ='$_GET[active]' ");

filtruj dane .
nansss
Nastąpił według mnie ostatni problem.

Tworzę konto wyskakuje komunikat Twoje konto zostało założone.
W ciągu 10 minut otrzymasz email z następnymi instrukcjami.

Przychodzi email, klikam w link aktywacyjny i pokazuje: Nie wypełniono wszystkich pól. Aktywacja ukończona pomyślnie. Możesz już korzystać z naszego serwisu.
Przejdź do logowania

Zamiast Aktywacja ukończona pomyślnie. Możesz już korzystać z naszego serwisu.
Przejdź do logowania
. Ma nie wyskakiwać Nie wypełniono wszystkich pól.

Nie wiem jak to naprawić. Najprawdopodobniej jest to błąd w warunkach if. Takty wszystko działa.

rejestracja.php

  1. <?php
  2. $connect = mysql_connect('localhost', 'root', 'password') or die('Nie mo&#x17C;na po&#x142;&#x105;czyc si&#x119; z baz&#x105; danych. Przepraszamy za k&#x142;opoty');
  3. $db = mysql_select_db('db') or die('Nie mo&#x17C;na wybra&#x107; bazy danych. Przepraszamy za k&#x142;opoty');
  4. $login = $_POST['login'];
  5. $access = $_POST['0'];
  6. $email = $_POST['email'];
  7. $haslo = md5(md5('haslo'));
  8. $haslo2 = md5(md5('haslo2'));
  9. $data = date('Y-m-d-G:i:s');
  10. $zapytanie = mysql_query("SELECT COUNT(*) FROM user WHERE login='$login' LIMIT 1");
  11. $zajete = mysql_fetch_row($zapytanie);
  12. $zapytanie = mysql_query("SELECT COUNT(*) FROM user WHERE email='$email' LIMIT 1");
  13. $zajete1 = mysql_fetch_row($zapytanie);
  14. if (empty($_POST["login"]) || empty($_POST["email"]) || empty($_POST["haslo"]) || empty($_POST["haslo2"]))
  15. {
  16. echo '<center>Nie wype&#x142;niono wszystkich pól.</center>';
  17. }
  18. elseif($_POST["haslo"]!=$_POST["haslo2"])
  19. {
  20. echo '<center>Podane hasła nie s&#x105; identyczne.</center> <meta http-equiv="Refresh" content="3; url=index.php" />';
  21. }
  22. elseif($zajete[0] != 0)
  23. {
  24. echo '<center>Podana nazwa u&#x17C;ytkownika jest ju&#x17C; zaj&#x119;ta.</center> <meta http-equiv="Refresh" content="3; url=index.php" />';
  25. }
  26. elseif($zajete1[0] != 0)
  27. {
  28. echo '<center>Podany email jest zaj&#x119;ty przez innego u&#x17C;ytkownika.</center> <meta http-equiv="Refresh" content="3; url=index.php" />';
  29. }
  30. elseif(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
  31. {
  32. echo '<center>Podany email jest nieprawid&#x142;owy.</center> <meta http-equiv="Refresh" content="3; url=index.php" />';
  33. }
  34. else
  35. {
  36. $zapytanie = "INSERT INTO `user` (`login`, `access`, `email`, `haslo`, `data`) VALUES ('".$login."', '".$access."', '".$email."', '".$haslo."', '".$data."')";
  37. $zap= "SELECT `email` FROM `user` ORDER BY `id` DESC";
  38. $idzap = mysql_query($zap);
  39. $naglowki = "Content-type: text/html; charset=iso-8859-2\r\n";
  40. $naglowki .= "Reply-to: xxx@boo.pl <xxx@boo.pl>\r\n";
  41. $naglowki .= "From: xxx@boo.pl <xxx@boo.pl>\r\n";
  42. }
  43. if ( ! mysql_query($zapytanie))
  44. {
  45. }
  46. else
  47. {
  48. echo '<center>Twoje konto zosta&#x142;o za&#x142;o&#x17C;one.<br>
  49. W ci&#x105;gu 10 minut otrzymasz email z następnymi instrukcjami.</center> <meta http-equiv="Refresh" content="5; url=index.php" />';
  50. $wiersz = mysql_fetch_row($idzap);
  51. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  52. mail($email, 'Aktywacja konta na xxx.pl', '<b>Witaj na xxx.pl!</b><br>Konto <b>'.$login.'</b> zostało zarejestrowane na podany adres e-mail.<br>W celu potwierdzenia rejestracji konta kliknij w poniższy odnośnik:<br><a href="http://xxx.pl/rejestracja.php?active='.$kod.'"> <a href="http://xxx.pl/rejestracja.php?active='.$kod.'" target="_blank">http://xxx.pl/rejestracja.php?active='.$kod.'</a> </a><br><br>Jeśli nie rejestrowałeś konta o nazwie <b>'.$login.'</b> po prostu zignoruj tego maila.<br><br><br>------<br>Wiadomość wygenerowana automatycznie<br>przez serwis sampo.boo.pl', $naglowki);
  53. $zapy = "UPDATE user SET klucz = ('".$kod."') WHERE access = 0";
  54. $idzapy = mysql_query($zapy);
  55. }
  56. if($_GET["active"])
  57. {
  58. mysql_query("UPDATE user SET access = '1' WHERE klucz = '$_GET[active]'");
  59. {
  60. echo '<center>Aktywacja uko&#x144;czona pomy&#x15B;lnie. Mo&#x17C;esz ju&#x17C; korzysta&#x107; z naszego serwisu.<br><a href="zaloguj.php>Przejd&#x17A; do logowania</a></center>';
  61. }
  62. else
  63. {
  64. echo '<center>Podano nieistniej&#x105;cy kod aktywacyjny.</center>';
  65. }
  66. }
  67. mysql_close($connect);
  68. ?>

Spawnm
Skoro wiesz gdzie błąd to go popraw.
Jelenia szukasz? Zamykam bo znowu jaja sobie robisz.
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.