Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Formularz rejestracji z aktwacją administratora/problem, problem z aktywacjami
hadzo
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.09.2013

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


Od kilku dni zacząłem zabawę z PHP napisałem swój system użytkowników, logowanie etc. Teraz moje pytanie jest takie: Chciałbym aby po rejestracji do użytkownika został wysłany mail: Twoje żądanie zalogowania się zostanie rozpatrzone przez administratora strony. Jak zrobić tak aby była możliwość aktywowania użytkowników po tym jak wpiszą swoje dane w formularz a drugie pytanie jak zabezpieczyć formularz ponieważ tak naprawdę łatwo znaleźć informacje jak zbudować formularz ale są to informacje sprzed paru lat a ja potrzebuje jakiegoś zabezpieczenia, na razię opiera się on o prosty skrypt php. Z góry dziękuję za pomoc wink.gif
  1. <?php
  2.  
  3. $db_host = 'localhost';
  4. $db_user = 'test';
  5. $db_pass = 'xxxxx';
  6. $db_name = 'users';
  7.  
  8. $con­nect = mysql_connect($db_host,$db_user,$db_pass) or die ('Nie udało się połączyć z bazą danych');
  9. mysql_select_db($db_name) or die('Nie znaleziono bazy !');
  10. mysql_set_charset('utf8', $con­nect);
  11.  
  12. $nick = trim($_POST["nick"]);
  13. $imie = trim($_POST["imie"]);
  14. $haslo = trim($_POST["haslo"]);
  15. $haslo2 = trim($_POST["haslo2"]);
  16.  
  17. if ($_POST['wyslij']) {
  18. if (empty($nick) or empty($haslo) or empty($haslo2)) {
  19. echo('Pola wyma­gane nie są wypełnione<br>');
  20. } elseif ($haslo !== $haslo2) {
  21. echo ("Wpisane hasła nie sa takie same !" . '<br>');
  22. } else {
  23.  
  24. $query = mysql_query("insert into reje­stra­cja (nick,imie,haslo,haslo2) values ('$nick','$imie','$haslo','$haslo2')");
  25.  
  26. if ($query = true) {
  27. echo ('Zosta­łeś popraw­nie zare­je­stro­wany <br>');
  28. } else {
  29. echo ("Wysta­pił‚ błąd pod­czas reje­stra­cji");
  30. }
  31. }
  32. }
  33.  
  34. ?>
Go to the top of the page
+Quote Post
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


http://www.php.net/manual/pl/function.htmlspecialchars.php
http://www.php.net/manual/pl/function.strip-tags.php
http://php.net/manual/en/function.mail.php

manual, manual wink.gif
Go to the top of the page
+Quote Post
hadzo
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.09.2013

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


Niestety nie bardzo rozumiem.. ;/
Chciałbym tylko dowiedzieć się jaka komenda pozwoli na tkz "uśpienie" nowego uzytkownika w bazie od samego początku żeby można było decydować który może się logować a który nie po weryfikacji danych z formularz?


Wchodzi ktoś na moją stronę i chce z niej coś pobrać ale żeby to zrobić musi się zarejestrować. Wpisuje swoje dane w formularz i te dane lądują u mnie w bazie mysql teraz ja patrze na dane tego osobnika (imie email itd) i chce decydować czy może pobierać pliki ze strony czy nie.

Ten post edytował hadzo 27.09.2013, 21:48:37
Go to the top of the page
+Quote Post
com
post
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no to przykład:
  1. $nick = trim(htmlspecialchars($_POST["nick"], ENT_QUOTES));


hasła w bazie danych trzymasz plain textem?

Cytat(hadzo @ 27.09.2013, 22:35:04 ) *
Chciałbym tylko dowiedzieć się jaka komenda pozwoli na tkz "uśpienie" nowego uzytkownika w bazie od samego początku żeby można było decydować który może się logować a który nie po weryfikacji danych z formularz?


A tak po polsku? smile.gif

zakładając że cie dobrze zrozumiałem dodajesz jeszcze jedno pole typu Boolean i ustawiasz w nim 0 dla nie potwierdzonych użytkowników i 1 dla potwierdzonych a potem sprawdzasz jeśli 1 może się logować jak nie to nie może smile.gif

pisz nowe posty wink.gif no to robisz tak samo jak powiedziałem, ale hasła to musisz zahaszować jakaś funkcją typu md5 , sha1 itp wink.gif

Ten post edytował com 27.09.2013, 22:00:09
Go to the top of the page
+Quote Post
hadzo
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.09.2013

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


ale jak to opisać w php questionmark.gif? Bo właśnie głowie się nad tym 3 dzień questionmark.gif? Bo właśnie o to mi chodzi wink.gif


a jeżeli chodzi o hash to można by jeszcze przez mysqli
tylko w 9 linijce mam jakis błąd ;/
  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST))
  3. {
  4.  
  5. $login = $_POST['login'];
  6. $password = $_POST['password'];
  7. $email = $_POST['email'];
  8.  
  9. if(empty($login) empty($password) empty($email))
  10. {
  11. die('Wypełnij wszystkie dane.');
  12. }
  13. elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
  14. {
  15. die('Nie poprawny adres E-mail.');
  16. }
  17. else
  18. {
  19. include_once('config.php');
  20.  
  21. $mysqli = new mysqli($db['host'], $db['user'], $db['password'], $db['database']);
  22.  
  23. if($mysqli -> connect_error)
  24. die('Problem z połączeniem się z bazą danych:'.$mysqli -> connect_error.'['.$mysqli -> connect_errno.']');
  25.  
  26.  
  27. $login = trim(htmlspecialchars($mysqli -> real_escape_string($login)));
  28. $password = hash('sha256', trim(htmlspecialchars($mysqli -> real_escape_string($password))));
  29. $email = trim(htmlspecialchars($mysqli -> real_escape_string($email)));
  30. $ip = $_SERVER['REMOTE_ADDR'];
  31.  
  32.  
  33. $stmt = $mysqli -> prepare("INSERT INTO `user`(`id_user`, `login`,`password`,`email`,`added`,`ip`) VALUES('', ? , ? , ? , now(), ?)");
  34. $stmt -> bind_param('ssss', $login, $password, $email, $ip);
  35. $stmt -> execute();
  36.  
  37. if($stmt -> affected_rows == 1)
  38. {
  39. echo 'Zostałeś pomyślnie zarejestrowany';
  40. }
  41. }
  42. }
  43.  
  44.  
  45. ?>




Ten post edytował hadzo 27.09.2013, 22:04:58
Go to the top of the page
+Quote Post
com
post
Post #6





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


1. po pierwsze dodaj sobie pole np verification typu Boolean do tabeli rejestracja
  1. <?php
  2.  
  3. $db_host = 'localhost';
  4. $db_user = 'test';
  5. $db_pass = 'xxxxx';
  6. $db_name = 'users';
  7.  
  8. $con­nect = mysql_connect($db_host,$db_user,$db_pass) or die ('Nie udało się połączyć z bazą danych');
  9. mysql_select_db($db_name) or die('Nie znaleziono bazy !');
  10. mysql_set_charset('utf8', $con­nect);
  11.  
  12. $nick = trim(htmlspecialchars($_POST["nick"], ENT_QUOTES)); // Convert special characters to HTML entities
  13. $imie = trim(htmlspecialchars($_POST["imie"], ENT_QUOTES));
  14. $haslo = trim(htmlspecialchars($_POST["haslo"], ENT_QUOTES));
  15. $haslo2 = trim(htmlspecialchars($_POST["haslo2"], ENT_QUOTES));
  16. $haslo = md5($haslo); // hash bo nie możesz mieć przecież jawnych haseł w bazie tongue.gif
  17. $haslo2 = md5($haslo2);
  18.  
  19. if ($_POST['wyslij']) {
  20. if (empty($nick) or empty($haslo) or empty($haslo2)) {
  21. echo('Pola wyma­gane nie są wypełnione<br>');
  22. } elseif ($haslo !== $haslo2) {
  23. echo ("Wpisane hasła nie sa takie same !" . '<br>');
  24. } else {
  25.  
  26. $query = mysql_query("insert into reje­stra­cja (nick,imie,haslo,haslo2,verification) values ('$nick','$imie','$haslo','$haslo2',0)");
  27.  
  28. if ($query = true) {
  29. echo ('Zosta­łeś popraw­nie zare­je­stro­wany <br>');
  30. } else {
  31. echo ("Wysta­pił? błąd pod­czas reje­stra­cji");
  32. }
  33. }
  34. }
  35.  
  36. ?>


Tylko kolejne pytanie jak będziesz sprawdzał tych zarejestrowanych?

zdecyduj sie jakiego kodu używasz smile.gif
  1. if(empty($login) || empty($password) || empty($email)) {\\whatever }


  1. if ($query == true) { .. }
jak już pomijamy fakt ze mysql_query() nie zwraca true wink.gif

Ten post edytował com 27.09.2013, 22:32:07
Go to the top of the page
+Quote Post
hadzo
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.09.2013

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


Program z którego korzystam wywala mi komunikat, że mysql jest przestażały i że lepiej użyć mysqli i myślałem, że lepiej bedzie jednak mysqli ale gdy dopisuje więcej to wywala mi błędy w mojej bazie danych ma być: imię i nazwisko, email (jako login czego też nie mogę zrobić) firma, adres, tel. I im wiecej tych danych tym wiecej problemów.... a jeszcze ta weryfikacja właśnie próbuje to zrobić z tą komórką boolean ale to chyba ponad moje możliwości biggrin.gif

czyli co byś proponował zostać przy msql czy msqli ?

Ten post edytował hadzo 27.09.2013, 22:23:39
Go to the top of the page
+Quote Post
com
post
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


nie wiem z jakiego programu korzystasz, ale korzystaj z niego dalej bo mądrze Ci podpowiada, powoli mysql wycofują z php wink.gif mysqli oczywiscie.. ale dałeś kod z mysql to o nim rozwialiśmy smile.gif a co do reszty to musisz pokazać o co konkretnie chodzi bo nie jestem czarodziej.gif wink.gif
Go to the top of the page
+Quote Post
hadzo
post
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.09.2013

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


Więc dokładnie mówiąc mam taką tabelkę
i męczę się już 3 dzień jak napisać skrypt który mi to wrzyci w bazę
bo te które napisałem coś nie chcą...
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Dokument bez tytułu</title>
  5. </head>
  6.  
  7. <form id="form1" name="form1" method="post" action="">
  8. <table width="362" border="0" cellspacing="0" cellpadding="0">
  9. <tr>
  10. <td width="126">email:</td>
  11. <td width="303"><label for="email"></label>
  12. <input type="text" name="email" id="email" /></td>
  13. </tr>
  14. <tr>
  15. <td>hasło:</td>
  16. <td><label for="haslo"></label>
  17. <input type="text" name="haslo" id="haslo" /></td>
  18. </tr>
  19. <tr>
  20. <td>hasło (powtórz):</td>
  21. <td><label for="haslo1"></label>
  22. <input type="text" name="haslo1" id="haslo1" /></td>
  23. </tr>
  24. <tr>
  25. <td>imię i nazwisko:</td>
  26. <td><label for="nazwa"></label>
  27. <input type="text" name="nazwa" id="nazwa" /></td>
  28. </tr>
  29. <tr>
  30. <td>nazwa firmy:</td>
  31. <td><label for="firma"></label>
  32. <input type="text" name="firma" id="firma" /></td>
  33. </tr>
  34. <tr>
  35. <td>adres firmy:</td>
  36. <td><label for="adres"></label>
  37. <input type="text" name="adres" id="adres" /></td>
  38. </tr>
  39. <tr>
  40. <td>tel. kontaktowy:</td>
  41. <td><label for="haslo1"></label>
  42. <input type="text" name="tel" id="tel" /></td>
  43. </tr>
  44. <tr>
  45. <td>&nbsp;</td>
  46. <td align="right"><input type="submit" name="zarejestruj" id="zarejestruj" value="Zarejestruj" /></td>
  47. </tr>
  48. </table>
  49. </form>
  50. </body>
  51. </html>
Go to the top of the page
+Quote Post
Turson
post
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Coś w ten deseń
  1. <?php
  2.  
  3. $db_host = 'localhost';
  4. $db_user = 'test';
  5. $db_pass = 'xxxxx';
  6. $db_name = 'users';
  7.  
  8. $con­nect = mysql_connect($db_host,$db_user,$db_pass) or die ('Nie udało się połączyć z bazą danych');
  9. mysql_select_db($db_name) or die('Nie znaleziono bazy !');
  10. mysql_set_charset('utf8', $con­nect);
  11.  
  12. $nick = trim(htmlspecialchars($_POST["nick"], ENT_QUOTES));
  13. $imie = trim(htmlspecialchars($_POST["imie"], ENT_QUOTES));
  14. $haslo = trim(htmlspecialchars($_POST["haslo"], ENT_QUOTES));
  15. $haslo2 = trim(htmlspecialchars($_POST["haslo2"], ENT_QUOTES));
  16. $haslo = md5($haslo);
  17. $haslo2 = md5($haslo2);
  18.  
  19. if (isset($_POST['wyslij']))
  20. {
  21. if (empty($nick) or empty($haslo) or empty($haslo2))
  22. {
  23. echo'Pola wyma­gane nie są wypełnione<br>';
  24. }
  25. elseif ($haslo !== $haslo2)
  26. {
  27. echo "Wpisane hasła nie sa takie same !" . '<br>';
  28. }
  29. else
  30. {
  31. $query = mysql_query("insert into reje­stra­cja (nick,imie,haslo,haslo2,verification) values ('$nick','$imie','$haslo','$haslo2',0)");
  32. }
  33. if($query)
  34. {
  35. echo 'Zosta­łeś popraw­nie zare­je­stro­wany <br>';
  36. }
  37. else
  38. {
  39. echo ("Wysta­pił? błąd pod­czas reje­stra­cji");
  40. }
  41. }
  42.  
  43.  
  44. ?>
Go to the top of the page
+Quote Post
com
post
Post #11





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no bo pola z formularza się nie zgadzają ze skryptem ... a tak konkretnie wyskakuje jakiś błąd? czy nie dodaje sie wszystko co ma czy o co chodzi? wink.gif
Go to the top of the page
+Quote Post
Turson
post
Post #12





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


com myślałem, że jesteś wróżką i wiesz co nie działa kiedy ktoś powie, że ma problem tongue.gif
Można wałkować to 100x dziennie wink.gif


hadzo przestaw się na mysqli lub pdo póki jeszcze się uczysz



@down
Dobra, moje niedopatrzenie bo jest kilka wersji skryptu i pomieszałem biggrin.gif

Ten post edytował Turson 27.09.2013, 23:09:12
Go to the top of the page
+Quote Post
com
post
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Turson czym to się niby rożni od tego co było wcześniej?
  1. if($query)
questionmark.gif to przecież już napisałem , ale nie w tym tkwił problem bo rozmawiamy już nie o tej wersji tylko tej z mysqli tongue.gif

Turson wiem w co drugim poście dziś wróże ale cóż zrobić biggrin.gif
Go to the top of the page
+Quote Post
hadzo
post
Post #14





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.09.2013

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


więc tak biggrin.gif chyba jestem coraz bliżej biggrin.gif linijka 41 problem ;/

  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST))
  3. {
  4.  
  5. $email = $_POST['email'];
  6. $haslo = $_POST['haslo'];
  7. $haslo1 = $_POST['haslo1'];
  8. $nazwa = $_POST['nazwa'];
  9. $firma = $_POST['adres'];
  10. $tel = $_POST['tel'];
  11.  
  12.  
  13. if(empty($email) || empty($haslo) || empty($haslo1) || empty($nazwa) || empty($firma) || empty($tel))
  14. {
  15. die('Wypełnij wszystkie dane.');
  16. }
  17. elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
  18. {
  19. die('Nie poprawny adres E-mail.');
  20. }
  21. else
  22. {
  23. include_once('config.php');
  24.  
  25. $mysqli = new mysqli($db['host'], $db['user'], $db['password'], $db['database']);
  26.  
  27. if($mysqli -> connect_error)
  28. die('Problem z połączeniem się z bazą danych:'.$mysqli -> connect_error.'['.$mysqli -> connect_errno.']');
  29.  
  30.  
  31. $email = trim(htmlspecialchars($mysqli -> real_escape_string($email)));
  32. $haslo = hash('sha256', trim(htmlspecialchars($mysqli -> real_escape_string($haslo))));
  33. $haslo1 = hash('sha256', trim(htmlspecialchars($mysqli -> real_escape_string($haslo1))));
  34. $nazwa = trim(htmlspecialchars($mysqli -> real_escape_string($nazwa)));
  35. $firma = trim(htmlspecialchars($mysqli -> real_escape_string($firma)));
  36. $tel = trim(htmlspecialchars($mysqli -> real_escape_string($tel)));
  37. $ip = $_SERVER['REMOTE_ADDR'];
  38.  
  39.  
  40. $stmt = $mysqli -> prepare("INSERT INTO `user`(`id_user`,`email`,`haslo`,`haslo1`,`nazwa`,`firma`,`adres`,`tel`,`added`,`i
    p`) VALUES('', ? , ? , ? , now(), ?)"
    );
  41. $stmt -> bind_param('sssd', $email, $haslo, $ip);
  42. $stmt -> execute();
  43.  
  44. if($stmt -> affected_rows == 1)
  45. {
  46. echo 'Zostałeś pomyślnie zarejestrowany';
  47. }
  48. }
  49. }
  50.  
  51.  
  52. ?>



plik config

  1. <?php
  2.  
  3. $db['host'] = 'localhost';
  4. $db['user'] = 'test';
  5. $db['password'] = 'test';
  6. $db['database'] = 'test';
  7.  
  8.  
  9. ?>
Go to the top of the page
+Quote Post
com
post
Post #15





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


  1. VALUES('', ? , ? , ? , now(), ?)");
za mało parametrów za dużo pól to pierwsze , tu tak samo
  1. $stmt -> bind_param('sssd', $email, $haslo, $ip);
Go to the top of the page
+Quote Post
hadzo
post
Post #16





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.09.2013

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


coś pomieszałem z tym biggrin.gif co tam mógłbym wpisać w pola ;/ no i czy z w. wrzuconą tabelką ma prawo to zadziałać :
a no właśnie i jak w mysqli porównać hasła bo chyba nie elseif questionmark.gif czy się myle?


Trochę się już gubię w tym.. ;/ dlatego tyle pytań a chciałbym po 5 dniach w końcu skończyć bo już mi się śnią te komendy biggrin.gif

Ten post edytował hadzo 27.09.2013, 23:37:07
Go to the top of the page
+Quote Post
com
post
Post #17





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


każdy przecinek w values to kolejna pozycja stad wiec skoro jest tu (`id_user`,`email`,`haslo`,`haslo1`,`nazwa`,`firma`,`adres`,`tel`,`added`,`ip`) 10 to tam też musi być 10 im odpowiadających pól i w kolejnym tak samo.. nie wiem bo nie znam struktury tabeli smile.gif
Go to the top of the page
+Quote Post
hadzo
post
Post #18





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.09.2013

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


tabela

Mówisz masz biggrin.gif marze żeby to już działało smile.gif jak to zoptymalizować zeby już mi wrzucało do bazy
Go to the top of the page
+Quote Post
Turson
post
Post #19





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Nie no przesadzasz. Tak ciężko pozamieniać wartości jakie podał com na te, które masz w bazie...?
Go to the top of the page
+Quote Post
hadzo
post
Post #20





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.09.2013

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


Ale to wciąż nie działa

Fatal error: Call to a member function bind_param() on a non-object in line 41

$stmt = $mysqli -> prepare("INSERT INTO `user`(`id_user`,`email`,`haslo`,`haslo1`,`nazwa`,`firma`,`adres`,`tel`,`added`,`ip`) VALUES('$email','$haslo','$haslo1',$nazwa','$firma','$adres',$tel',now(),'$ip')");
$stmt -> bind_param('sssd', $email, $haslo, $ip);
$stmt -> execute();

Albo najwyraźniej ja tu czegoś nie rozumiem ;/

Ten post edytował hadzo 28.09.2013, 00:27:36
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 - 17:31