Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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
 
Start new topic
Odpowiedzi
Deotho
post
Post #2





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

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 01:34