Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Rejestracja
Deotho
post
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 2.05.2012
Skąd: Hogwart

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


  1. <?php
  2. ?>
  3.  
  4. <?php include('templates/header.php'); ?>
  5.  
  6. <?php
  7. include ("config/db.php");
  8.  
  9. //Flirtujemy dane.
  10. $login = addslashes($_POST['login']);
  11. $haslo = addslashes($_POST['haslo']);
  12. $email = addslashes($_POST['email']);
  13.  
  14. //Sprawdzamy czy użytkownik podał poprawne dane.
  15. if (isset($_POST['submit'])) {
  16. if (preg_match("/^[a-zA-Z0-9_ ]+$/" , $login)) {
  17. } else {
  18. echo "Nazwa użytkownika zawiera niedozwolone znaki!";
  19. }
  20. if (preg_match("/^[a-zA-Z0-9_ ]+$/" , $haslo)) {
  21. } else {
  22. echo "Hasło zawiera niedozwolone znaki!";
  23. }
  24. if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$_POST["userEmail"])) {
  25. } else {
  26. echo "Email zawiera niedozwolone znaki!";
  27. }
  28. if (empty($login)) die ('Pole z nazwą użytkonika nie może być puste!');
  29. if (empty($haslo)) die ('Pole z haslem nie może być puste!');
  30. if (empty($email)) die ('Pole z emailem nie może być puste!');
  31.  
  32. $db = mysql_query("SELECT * FROM users WHERE u_name='$_POST[login]' ");
  33. if (!$_POST['login'] OR !$_POST['haslo'] OR !$_POST['email']) {
  34. print "Nie wypełniono wszystkich pól formularza.";
  35. if (mysql_num_rows($db)==1) {
  36. print "Podana nazwa użytkownika jest już zajęta."; }
  37. else {
  38. $_POST["haslo"]=SHA1($_POST["haslo"]);
  39. $actCode=str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  40. $headers="MIME-Version: 1.0\r\n";
  41. $headers.="Content-type: text/html; charset=iso-8859-2\r\n";
  42. $content="<html><head><title>Aktywacja Konta</title</head>
  43. <body>
  44. Aby aktywować konto musisz kliknąć poniższy link aktywujący:<br>
  45. <a href=\"http://twojastrona.com/register.php?active=".$actCode."\"> <a href="http://twojastrona.com/register.php?active=&quot;.$actCode.&quot;" target="_blank">http://twojastrona.com/register.php?active...;actCode."</a> </a><br></body></html>";
  46. mail($_POST["email"], "Link Aktywacyjny", $content, $headers);
  47. mysql_query("INSERT INTO users (login, haslo, email, active_key) VALUES('$_POST[login]', '$_POST[haslo]', '$_POST[email]', '$actCode')");
  48. print"Na podany adres emailowy został wysłany klucz aktywacyjny.";
  49. }
  50. }
  51. elseif($_GET["active"])
  52. {
  53. mysql_query("UPDATE users SET active=1 WHERE active_key='$_GET[active]' ");
  54. {
  55. print"Twoje konto zostało aktywowane.";
  56. }
  57. else
  58. {
  59. print"Podany kod aktywacyjny jest nieprawidłowy.";
  60. }
  61. }
  62. }
  63. ?>
  64.  
  65. <form action="register.php" method="post">
  66. <input type="hidden" name="submit" value="true">
  67. Nazwa <input type="text" name="login" maxlength="20"><br>
  68. Hasło <input type="password" name="haslo" maxlength="30"><br>
  69. Podaj E-Mail <input type="text" name="email" maxlength="64"><br>
  70. <input type="submit" value="Rejestracja">
  71. </form>
  72.  
  73. <?php include('templates/footer.php'); ?>


Po kliknięciu na Rejestracja wszystko jest ok, ale nie tworzy konta w bazie.
Dodatkowo prosiłbym o ocenę kodu - to mój pierwszy.

Ten post edytował Deotho 13.05.2012, 16:54:24
Go to the top of the page
+Quote Post
Lwik
post
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 8
Dołączył: 11.05.2012

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


Przejrzałem wybiórczo bo napaćkane strasznie, mnie osobiściem mieszanie php z HTML'em strasznie denerwuje..
przy zapytaniu insertującym
  1. mysql_query(Tresc zapytania) or die(mysql_error());

Przeanalizuj to co Ci zwróci błąd.
  1. <?php
  2. ?>
  3.  
  4. <?php include('templates/header.php'); ?>
  5.  
  6. <?php
  7. include ("config/db.php");

Po co tak?
  1. <?php
  2. include_once('templates/header.php');
  3. include_once("config/db.php");


PS: Na start możesz poczytać o MYSQLi i PDO.

Ten post edytował Lwik 13.05.2012, 17:05:08
Go to the top of the page
+Quote Post
Niktoś
post
Post #3





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Cytat
$_POST["haslo"]=SHA1($_POST["haslo"]);
-To jest błędne, gdyż nie nadpiszesz zmiennej z tablicy $_POST, ani jej nie zmodyfikujesz.
Powinno być:
$haslo=SHA1($_POST["haslo"]); -czyli powinieneś utworzyć zmienną i przypisać do niej jakąś wartość $_POST.

Ten post edytował Niktoś 13.05.2012, 17:06:11
Go to the top of the page
+Quote Post
Kokoszz
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 28.03.2012

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


Cytat
Przejrzałem wybiórczo bo napaćkane strasznie, mnie osobiściem mieszanie php z HTML'em strasznie denerwuje..

a że wtrącę się w temat offtopickiem lekkim - jak to wg Ciebie powinno wyglądać? smile.gif

W ten sposób?
  1. <html>
  2. //kod strony
  3. </html>
  4. <?php
  5. // kod php
  6. ?>


czy raczej, osobno plik html i osobno plik php?
Go to the top of the page
+Quote Post
Deotho
post
Post #5





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 2.05.2012
Skąd: Hogwart

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


Cytat
Notice: Undefined index: userEmail in D:\Program Files\WebServ\httpd\register.php on line 24
Notice: Undefined index: active in D:\Program Files\WebServ\httpd\register.php on line 52


To wyskakuje po dodaniu kodu:
  1. ini_set('display_errors','1');


Wiem, że funkcja email nie będzie działała na localhost, ale konto i tak powinno tworzyć.

Całość koduje po edycji:
  1. <?php
  2. ini_set('display_errors','1');
  3. include_once('templates/header.php');
  4. include_once("config/db.php");
  5.  
  6. //Flirtujemy dane.
  7. $login = addslashes($_POST['login']);
  8. $haslo = md5($_POST['haslo']);
  9. $email = addslashes($_POST['email']);
  10.  
  11. //Sprawdzamy czy użytkownik podał poprawne dane.
  12. if (isset($_POST['submit'])) {
  13. if (preg_match("/^[a-zA-Z0-9_ ]+$/" , $login)) {
  14. } else {
  15. echo "Nazwa użytkownika zawiera niedozwolone znaki!";
  16. }
  17. if (preg_match("/^[a-zA-Z0-9_ ]+$/" , $haslo)) {
  18. } else {
  19. echo "Hasło zawiera niedozwolone znaki!";
  20. }
  21. if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$_POST["userEmail"])) {
  22. } else {
  23. echo "Email zawiera niedozwolone znaki!";
  24. }
  25. if (empty($login)) die ('Pole z nazwą użytkonika nie może być puste!');
  26. if (empty($haslo)) die ('Pole z haslem nie może być puste!');
  27. if (empty($email)) die ('Pole z emailem nie może być puste!');
  28.  
  29. $db = mysql_query("SELECT * FROM users WHERE u_name='$_POST[login]' ");
  30. if (!$_POST['login'] OR !$_POST['haslo'] OR !$_POST['email']) {
  31. print "Nie wypełniono wszystkich pól formularza.";
  32. if (mysql_num_rows($db)==1) {
  33. print "Podana nazwa użytkownika jest już zajęta."; }
  34. else {
  35. $_POST["haslo"]=md5($_POST["haslo"]);
  36. $actCode=str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  37. $headers="MIME-Version: 1.0\r\n";
  38. $headers.="Content-type: text/html; charset=iso-8859-2\r\n";
  39. $content="<html><head><title>Aktywacja Konta</title</head>
  40. <body>
  41. Aby aktywować konto musisz kliknąć poniższy link aktywujący:<br>
  42. <a href=\"http://twojastrona.com/register.php?active=".$actCode."\"> <a href="http://twojastrona.com/register.php?active=&quot;.$actCode.&quot;" target="_blank">http://twojastrona.com/register.php?active...;actCode."</a> </a><br></body></html>";
  43. mail($_POST["email"], "Link Aktywacyjny", $content, $headers);
  44. mysql_query("INSERT INTO users (login, haslo, email, active_key) VALUES('$_POST[login]', '$_POST[haslo]', '$_POST[email]', '$actCode')");
  45. mysql_query("INSERT INTO users (login, haslo, email, active_key) VALUES('$_POST[login]', '$_POST[haslo]', '$_POST[email]', '$actCode')") or die('BŁĄD:'.mysql_error());
  46. print"Na podany adres emailowy został wysłany klucz aktywacyjny.";
  47. }
  48. }
  49. elseif($_GET["active"])
  50. {
  51. mysql_query("UPDATE users SET active=1 WHERE active_key='$_GET[active]' ");
  52. {
  53. print"Twoje konto zostało aktywowane.";
  54. }
  55. else
  56. {
  57. print"Podany kod aktywacyjny jest nieprawidłowy.";
  58. }
  59. }
  60. }
  61. ?>
  62.  
  63. <form action="register.php" method="post">
  64. <input type="hidden" name="submit" value="true">
  65. Nazwa <input type="text" name="login" maxlength="20"><br>
  66. Hasło <input type="password" name="haslo" maxlength="30"><br>
  67. Podaj E-Mail <input type="text" name="email" maxlength="64"><br>
  68. <input type="submit" value="Rejestracja">
  69. </form>
  70.  
  71. <?php include_once('templates/footer.php'); ?>


Nie wyskakuje error, a co do mieszania HTML i PHP to HTML będzie potem w oddzielnym pliku.
Go to the top of the page
+Quote Post
Lwik
post
Post #6





Grupa: Zarejestrowani
Postów: 39
Pomógł: 8
Dołączył: 11.05.2012

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


Cytat(Kokoszz @ 13.05.2012, 18:10:36 ) *
a że wtrącę się w temat offtopickiem lekkim - jak to wg Ciebie powinno wyglądać? smile.gif

W ten sposób?
  1. <html>
  2. //kod strony
  3. </html>
  4. <?php
  5. // kod php
  6. ?>


czy raczej, osobno plik html i osobno plik php?

raczej opcja druga, ew jakiś system template'ów, gdzie będziemy wyświetlać php'owe szczątki. : )
  1. $login = addslashes($_POST['login']);
  2. $haslo = md5($_POST['haslo']);
  3. $email = addslashes($_POST['email']);

  1. mysql_query("INSERT INTO users (login, haslo, email, active_key) VALUES('$_POST[login]', '$_POST[haslo]', '$_POST[email]', '$actCode')") or die('BŁĄD:'.mysql_error());

albo $_POST albo zmienna.

Ten post edytował Lwik 13.05.2012, 17:21:02
Go to the top of the page
+Quote Post
Niktoś
post
Post #7





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Struktura html ogólnie źle zaprojektowana.Przy planowanym przerabianiu tego skryptu musisz zwrócić uwagę jaką strukturę html będzie Ci generował skrypt.Na razie to us ciebie wygląda tak:
  1. </head>
  2. </body>
  3. </html>
  4. </form>

no i przy okazji zauważyłem dobry błąd u ciebie:

Cytat
$content="<html><head><title>Aktywacja Konta</title</head>
powinno być:

  1. $content="<html><head><title>Aktywacja Konta</title></head>



Można robić to w ten sposób jak Ty to robisz, czyli mieszać html z PHP, aby dynamicznie(w locie) generować tagi w zależności od potrzeb aplikacji ,ale trzeba robić to z głową i zgodnie z normami html.

Ten post edytował Niktoś 13.05.2012, 17:25:27
Go to the top of the page
+Quote Post
Deotho
post
Post #8





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 2.05.2012
Skąd: Hogwart

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


Dobra poprawki:
  1. <?php
  2. ini_set('display_errors','1');
  3. include_once('templates/header.php');
  4. include_once("config/db.php");
  5.  
  6. //Flirtujemy dane.
  7. $login = addslashes($_POST['login']);
  8. $haslo = md5($_POST['haslo']);
  9. $email = addslashes($_POST['email']);
  10.  
  11. //Sprawdzamy czy użytkownik podał poprawne dane.
  12. if (isset($_POST['submit'])) {
  13. if (preg_match("/^[a-zA-Z0-9_ ]+$/" , $login)) {
  14. } else {
  15. echo "Nazwa użytkownika zawiera niedozwolone znaki!";
  16. }
  17. if (preg_match("/^[a-zA-Z0-9_ ]+$/" , $haslo)) {
  18. } else {
  19. echo "Hasło zawiera niedozwolone znaki!";
  20. }
  21. if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$_POST["email"])) {
  22. } else {
  23. echo "Email zawiera niedozwolone znaki!";
  24. }
  25. if (empty($login)) die ('Pole z nazwą użytkonika nie może być puste!');
  26. if (empty($haslo)) die ('Pole z haslem nie może być puste!');
  27. if (empty($email)) die ('Pole z emailem nie może być puste!');
  28.  
  29. $db = mysql_query("SELECT * FROM users WHERE u_name='$_POST[login]' ");
  30. if (!$_POST['login'] OR !$_POST['haslo'] OR !$_POST['email']) {
  31. print "Nie wypełniono wszystkich pól formularza.";
  32. if (mysql_num_rows($db)==1) {
  33. print "Podana nazwa użytkownika jest już zajęta."; }
  34. else {
  35. $_POST["haslo"]=md5($_POST["haslo"]);
  36. $actCode=str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  37. $headers="MIME-Version: 1.0\r\n";
  38. $headers.="Content-type: text/html; charset=iso-8859-2\r\n";
  39. $content="<html><head><title>Aktywacja Konta</title></head>
  40. <body>
  41. Aby aktywować konto musisz kliknąć poniższy link aktywujący:<br>
  42. <a href=\"http://twojastrona.com/register.php?active=".$actCode."\"> <a href="http://twojastrona.com/register.php?active=&quot;.$actCode.&quot;" target="_blank">http://twojastrona.com/register.php?active...;actCode."</a> </a><br></body></html>";
  43. mail($_POST["email"], "Link Aktywacyjny", $content, $headers);
  44. mysql_query("INSERT INTO users (login, haslo, email, active_key) VALUES('$login', '$haslo', '$email', '$actCode')");
  45. mysql_query("INSERT INTO users (login, haslo, email, active_key) VALUES('$login', '$haslo', '$email', '$actCode')") or die('BŁĄD:'.mysql_error());
  46. print"Na podany adres emailowy został wysłany klucz aktywacyjny.";
  47. }
  48. } else
  49. if($_GET["active"]) {
  50. mysql_query("UPDATE users SET active=1 WHERE active_key='$_GET[active]' ");
  51. if (mysql_affected_rows()==1) {
  52. print"Twoje konto zostało aktywowane.";
  53. } else {
  54. print"Podany kod aktywacyjny jest nieprawidłowy.";
  55. }
  56. }
  57. }
  58. ?>
  59.  
  60. <form action="register.php" method="post">
  61. <input type="hidden" name="submit" value="true">
  62. Nazwa <input type="text" name="login" maxlength="20"><br>
  63. Hasło <input type="password" name="haslo" maxlength="30"><br>
  64. Podaj E-Mail <input type="text" name="email" maxlength="64"><br>
  65. <input type="submit" value="Rejestracja">
  66. </form>
  67.  
  68. <?php include_once('templates/footer.php'); ?>


Z błędem numer jeden się uporałem po prostu źle wpisana zmienna = brak sprawdzenia emailu.
Teraz sprawdza email, ale gdy wpiszę test@interia.pl wyskakuje, że znaki nieprawidłowe, a @ musi być.
Co do mysql_error poprawiłem na zmienne wszędzie i nadal nie wyskakuje nic.
Go to the top of the page
+Quote Post
Niktoś
post
Post #9





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


<a href=\"http://twojastrona.com/register.php?active=".$actCode."\"> <a href="http://twojastrona.com/register.php?active=&quot;.$actCode.&quot;" target="_blank">http://twojastrona.com/register.php?active...;actCode."</a> </a><br></body></html>";

Zagnieżdżanie a href w a href?Doprawdy nie mam pojęcia czy taki odnośnik zadziała w ogóle.Pomijając usuń te tagi co pogrubione i dodaj je do liniki:

  1. <?php include_once('templates/footer.php');
  2. $content.="</body></html>";
  3. ?>

zamykając tym samym strukturę html.

Ten post edytował Niktoś 13.05.2012, 17:45:02
Go to the top of the page
+Quote Post
Deotho
post
Post #10





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 2.05.2012
Skąd: Hogwart

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


Nic to nie dało, a tylko wyskoczył błąd z content.
  1. <?php include_once('templates/footer.php');
  2. $content.="</body></html>";
  3. ?>


Notice: Undefined index: active in D:\Program Files\WebServ\httpd\register.php on line 52
Notice: Undefined variable: content in D:\Program Files\WebServ\httpd\register.php on line 72

  1. <?php
  2. ini_set('display_errors','1');
  3. include_once('templates/header.php');
  4. include_once("config/db.php");
  5.  
  6. //Flirtujemy dane.
  7. $login = addslashes($_POST['login']);
  8. $haslo = md5($_POST['haslo']);
  9. $email = addslashes($_POST['email']);
  10.  
  11. //Sprawdzamy czy użytkownik podał poprawne dane.
  12. if (isset($_POST['submit'])) {
  13. if (preg_match("/^[a-zA-Z0-9_ ]+$/" , $login)) {
  14. } else {
  15. echo "Nazwa użytkownika zawiera niedozwolone znaki!";
  16. }
  17. if (preg_match("/^[a-zA-Z0-9_ ]+$/" , $haslo)) {
  18. } else {
  19. echo "Hasło zawiera niedozwolone znaki!";
  20. }
  21. if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$_POST["email"])) {
  22. } else {
  23. echo "Email zawiera niedozwolone znaki!";
  24. }
  25. if (empty($login)) die ('Pole z nazwą użytkonika nie może być puste!');
  26. if (empty($haslo)) die ('Pole z haslem nie może być puste!');
  27. if (empty($email)) die ('Pole z emailem nie może być puste!');
  28.  
  29. $db = mysql_query("SELECT * FROM users WHERE u_name='$_POST[login]' ");
  30. if (!$_POST['login'] OR !$_POST['haslo'] OR !$_POST['email']) {
  31. print "Nie wypełniono wszystkich pól formularza.";
  32. if (mysql_num_rows($db)==1) {
  33. print "Podana nazwa użytkownika jest już zajęta."; }
  34. else {
  35. $_POST["haslo"]=md5($_POST["haslo"]);
  36. $actCode=str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  37. $headers="MIME-Version: 1.0\r\n";
  38. $headers.="Content-type: text/html; charset=iso-8859-2\r\n";
  39. $content="<html><head><title>Aktywacja Konta</title></head>
  40. <body>
  41. Aby aktywować konto musisz kliknąć poniższy link aktywujący:<br>
  42. <a href=\"http://twojastrona.com/register.php?active=".$actCode."\"> <a href="http://twojastrona.com/register.php?active=&quot;.$actCode.&quot;" target="_blank">http://twojastrona.com/register.php?active...;actCode."</a> </a>";
  43. mail($_POST["email"], "Link Aktywacyjny", $content, $headers);
  44. mysql_query("INSERT INTO users (login, haslo, email, active_key) VALUES('$login', '$haslo', '$email', '$actCode')");
  45. mysql_query("INSERT INTO users (login, haslo, email, active_key) VALUES('$login', '$haslo', '$email', '$actCode')") or die('BŁĄD:'.mysql_error());
  46. print"Na podany adres emailowy został wysłany klucz aktywacyjny.";
  47. }
  48. } else
  49. if($_GET["active"]) {
  50. mysql_query("UPDATE users SET active=1 WHERE active_key='$_GET[active]' ");
  51. if (mysql_affected_rows()==1) {
  52. print"Twoje konto zostało aktywowane.";
  53. } else {
  54. print"Podany kod aktywacyjny jest nieprawidłowy.";
  55. }
  56. }
  57. }
  58. ?>
  59.  
  60. <form action="register.php" method="post">
  61. <input type="hidden" name="submit" value="true">
  62. Nazwa <input type="text" name="login" maxlength="20"><br>
  63. Hasło <input type="password" name="haslo" maxlength="30"><br>
  64. Podaj E-Mail <input type="text" name="email" maxlength="64"><br>
  65. <input type="submit" value="Rejestracja">
  66. </form>
  67.  
  68. <?php include_once('templates/footer.php');
  69. $content.="</body></html>";
  70. ?>


Ten post edytował Deotho 13.05.2012, 17:50:18
Go to the top of the page
+Quote Post
Lwik
post
Post #11





Grupa: Zarejestrowani
Postów: 39
Pomógł: 8
Dołączył: 11.05.2012

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


Powiem tak.. raz używasz jednej zmiennej raz drugiej.. IFy masz cholernie dziwnie ułożone.
  1. $db = mysql_query("SELECT * FROM users WHERE u_name='$_POST[login]' ");

u_name?
później
  1. mysql_query("INSERT INTO users (login, haslo, email, active_key) VALUES('$login', '$haslo', '$email', '$actCode')") or die('BŁĄD:'.mysql_error());


Tak szybko w edytorze forumowym:
  1. if (isset($_POST['login'])) {
  2. $login = addslashes($_POST['login']);
  3. $haslo = md5($_POST['haslo']);
  4. $email = addslashes($_POST['email']);
  5. if (preg_match("/^[a-zA-Z0-9_ ]+$/" , $login)) {
  6. } else {
  7. echo "Nazwa użytkownika zawiera niedozwolone znaki!";
  8. }
  9. if (preg_match("/^[a-zA-Z0-9_ ]+$/" , $haslo)) {
  10. } else {
  11. echo "Hasło zawiera niedozwolone znaki!";
  12. }
  13.  
  14. if (empty($login)) die ('Pole z nazwą użytkonika nie może być puste!');
  15. if (empty($haslo)) die ('Pole z haslem nie może być puste!');
  16. if (empty($email)) die ('Pole z emailem nie może być puste!');
  17.  
  18. $db = mysql_query("SELECT * FROM users WHERE login=' ".$login."' ") or die(mysql_error());
  19. if (!$_POST['login'] || !$_POST['haslo'] || !$_POST['email']) die ("Nie wypełniono wszystkich pól formularza.");
  20. if (mysql_num_rows($db)==1) {
  21. print "Podana nazwa użytkownika jest już zajęta."; }
  22. else {
  23. $actCode=str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  24.  
  25. mysql_query("INSERT INTO users (`login`, `haslo`, `email`, `active_key`) VALUES('$login', '$haslo', '$email', '$actCode')") or die('BŁĄD:'.mysql_error());
  26. echo"Na podany adres emailowy został wysłany klucz aktywacyjny.";
  27. }
  28.  
  29. }
  30.  
  31. ?>
  32.  
  33. <form action="index.php" method="post">
  34. Nazwa <input type="text" name="login" maxlength="20"><br>
  35. Hasło <input type="password" name="haslo" maxlength="30"><br>
  36. Podaj E-Mail <input type="text" name="email" maxlength="64"><br>
  37. <input type="submit" value="Rejestracja">
  38. </form>
  39.  


@niktos, a może domyka to w pliku footer'a? Nigdy nic nie wiadomo, więc ja byłbym daleki od takich poprawek, skoncentrujmy się na błędzie który znalazł.

Ten post edytował Lwik 13.05.2012, 17:51:11
Go to the top of the page
+Quote Post
Deotho
post
Post #12





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 2.05.2012
Skąd: Hogwart

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


Faktycznie Lawik nie zauwazyłem tego.

Wszystko już działa, ale duplikuje mi wpisy w bazie jak wpisze takie same dane kilka razy.
Można jakoś zrobić, aby nie można było na ten sam login oraz email się zarejestrować?

Ten post edytował Deotho 13.05.2012, 18:02:16
Go to the top of the page
+Quote Post
Niktoś
post
Post #13





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Ok ,drobna poprawka ,powinno działać.
  1. <?php
  2.  
  3. include_once('templates/footer.php');
  4. if (isset($content)){
  5. $content.="</body></html>";
  6. }
  7. ?>


Ten post edytował Niktoś 13.05.2012, 18:09:51
Go to the top of the page
+Quote Post
Lwik
post
Post #14





Grupa: Zarejestrowani
Postów: 39
Pomógł: 8
Dołączył: 11.05.2012

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


Odpaliłem sobie z ciekawości to na localhoście tworząc przykładową bazę:
  1. CREATE TABLE IF NOT EXISTS `users` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(20) NOT NULL,
  4. `haslo` varchar(64) NOT NULL,
  5. `email` varchar(25) NOT NULL,
  6. `active_key` varchar(50) NOT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

działa poprawnie.
Co do unikalności rekordów
  1. $db = mysql_query("SELECT * FROM users WHERE login=' ".$login."' or email = '".$email."' ") or die(mysql_error());

i jakiś klucz w mysql.
Go to the top of the page
+Quote Post
Deotho
post
Post #15





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 2.05.2012
Skąd: Hogwart

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


Wszystko działa jak należy. Dziękuje panowie.

Ten post edytował Deotho 13.05.2012, 18:07:34
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 - 13:31