Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]rejestracja, Tworzenie nowej tabeli podczas rejestracji
jaca121212
post 13.08.2015, 21:34:59
Post #1





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

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


Witam,
Jak zrobić żeby user który zarejestruje się utworzyła się w bazie danych nowa tabela z jego loginem wpisanym przy rejestracji
podam kod rejestracji nie wiem za bardzo gdzie wstawić kod z tworzeniem tabeli w bazie ktoś z was mógłby mnie nakierować jak to zrobić.
  1. <?php
  2.  
  3.  
  4. if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])) || (!isset($_POST['haslo1'])) || (!isset($_POST['email']))) {
  5. header('Location: index.php');
  6. exit();
  7. }
  8.  
  9. require_once "connect.php";
  10. $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
  11. if ($polaczenie->connect_errno != 0) {
  12. echo "Error: " . $polaczenie->connect_errno . "Opis: " . $polaczenie->connect_error;
  13. die();
  14. }
  15.  
  16. $login = trim($_POST['login']);
  17. $email = trim($_POST['email']);
  18. $haslo = trim($_POST['haslo']);
  19. $haslo1 = trim($_POST['haslo1']);
  20. $data = date('Y-m-d H:i:s');
  21. $ip = $_SERVER['REMOTE_ADDR'];
  22. $errors = array();
  23.  
  24. if (empty($login)) {
  25. $errors[] = 'Login jest pusty';
  26. $_SESSION['blad5'] = '<p class="komunikat">Login jest pusty.Nie podałeś loginu!</p>';
  27. header('Location: index.php');
  28. }
  29.  
  30. $resultat = $polaczenie->query(sprintf('SELECT `id` FROM uzytkownicy WHERE user= "%s" LIMIT 1', mysqli_real_escape_string($polaczenie, $login)));
  31. if ($resultat->num_rows == 1) {
  32. $errors[] = "Taki login już istnieje ";
  33. $_SESSION['blad6'] = '<p class="komunikat">Taki login już istnieje!</p>';
  34. header('Location: index.php');
  35.  
  36. }
  37.  
  38. if (empty($haslo) || empty($haslo1)) {
  39. $errors[] = 'Wpisz hasła';
  40. $_SESSION['blad7'] = '<p class="komunikat">Wpisz hasła!</p>';
  41. header('Location: index.php');
  42. }
  43.  
  44. if ($haslo != $haslo1) {
  45. $errors[] = "Wpisane hasła różnią się.";
  46. $_SESSION['blad8'] = '<p class="komunikat">Wpisane hasła różnią się!</p>';
  47. header('Location: index.php');
  48. }
  49.  
  50. if (empty($_POST['email'])) {
  51. $errors[] = "Adres E-mail jest pusty.";
  52. $_SESSION['blad9'] = '<p class="komunikat">Adres E-mail jest pusty.</p>';
  53. header('Location: index.php');
  54. }
  55. $resultat = $polaczenie->query(sprintf('SELECT `id` FROM uzytkownicy WHERE email= "%s" LIMIT 1', mysqli_real_escape_string($polaczenie, $email)));
  56. if ($resultat->num_rows == 1) {
  57. $errors[] = "Taki adres e-mail już istnieje ";
  58. $_SESSION['blad10'] = '<p class="komunikat">Taki adres e-mail już istnieje!</p>';
  59. header('Location: index.php');
  60. }
  61. if (count($errors) == 0) {
  62. // Brak błędów, to rejestrujemy
  63.  
  64. $sol = md5("192.168.0.1"); //sól użytkownika pobierana z bazy
  65. $sol2 = sha1("qOR8Dm1L"); //sól dodatkowa
  66. // Hasjujemy hasło
  67. $hash = hash('sha512', $haslo . $sol . $sol2);
  68.  
  69. $login = htmlentities($login, ENT_QUOTES, "UTF-8");
  70. $email = htmlentities($email, ENT_QUOTES, "UTF-8");
  71.  
  72. $resultat = $polaczenie->query(sprintf("INSERT INTO `uzytkownicy` (`id`, `user`, `pass`, `email`, `data`, `ip`) VALUES ('', '%s', '%s', '%s', '%s','%s')",
  73. mysqli_real_escape_string($polaczenie, $login),
  74. mysqli_real_escape_string($polaczenie, $hash),
  75. mysqli_real_escape_string($polaczenie, $email),
  76. mysqli_real_escape_string($polaczenie, $data),
  77. mysqli_real_escape_string($polaczenie, $ip)));
  78. $_SESSION['komunikat'] = '<p class="komunikat">Zostałeś/aś poprawnie zarejestrowany/na. Zaloguj się!</p>';
  79. $_SESSION['zarejestrowany'] = true;
  80. header('Location: index.php');
  81. } else {
  82. // Są błędy
  83. echo '<p class="komunikat">' . implode('<br>', $errors) . '</p>';
  84. }
  85.  
  86. $polaczenie->close();

a zapomniałem dodać kod do tabeli
  1. CREATE TABLE (nik usera podany przy rejestracji) (
  2. id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  3. firstname VARCHAR(30) NOT NULL,
  4. lastname VARCHAR(30) NOT NULL,
  5. email VARCHAR(50),
  6. reg_date TIMESTAMP
  7. )

z góry dziękuje za pomoc

Ten post edytował jaca121212 14.08.2015, 06:06:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
bobek358
post 14.08.2015, 07:00:47
Post #2





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Podstawowe pytanie po co dla każdego użytkownika chcesz tworzyć tabelę w bazie?
Go to the top of the page
+Quote Post
jaca121212
post 14.08.2015, 07:35:42
Post #3





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

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


chodzi o to że jak bd miał utorzoną tabele a w nim rekordy z np linkami do pobierania plików dla konkretnego usera tak aby inni nie mogli zobaczyć jakie on ma linki i co może pobrać.Myśle że to w miarę dobrze wytłumaczyłem chyba że jest lepszy i mniej skomplikowany sposób na to co wyżej napisałem.Też myślełem aby zrobić to tak żeby utworzył się folder z jego nikiem i w nim przechowywać pliki i wyświetlać je na ekranie tylko jemu a nazwy plików zapisywać do bazy danych tylko jest duży problem że ja z php jestem na prawie zerowym poziomie wiec nie bardzo bym to zrobil sam ale z waszą pomocą by się na pewno udało to zrobić.tylko wytłumaczenia jak zacząć to?
Go to the top of the page
+Quote Post
bobek358
post 14.08.2015, 08:10:22
Post #4





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Pliki trzymaj powyżej katalogu public_html aby ze strony przeglądarki nie było do nich dostępu.
Możesz śmiało tworzyć osobne katalogi dla konkretnych użytkowników.
Nie twórz w DB osobnych tabel tylko trzymaj informacje o plikach w jednej tabeli której będzie ID usera oraz nazwa czy ścieżka do pliku.
Utwórz plik php który będzie pobierał plik i wysyłał go do przeglądarki, oczywiście wcześniej sprawdzając, czy dany plik należy do zalogowanego usera.
Go to the top of the page
+Quote Post
grzes999
post 14.08.2015, 08:20:58
Post #5





Grupa: Zarejestrowani
Postów: 305
Pomógł: 29
Dołączył: 5.07.2011

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


Jeżeli tworzysz osobne katalogi dla każdego użytkownika to jaki jest sens zapisywanie jeszcze nazw tych plików w bazie danych? Można jedynie zapisać nazwę folderu, w którym znajdują się jego pliku, gdy by miał być inny niż login; a nawet lepiej żeby był inny niż login
Go to the top of the page
+Quote Post
jaca121212
post 14.08.2015, 08:22:02
Post #6





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

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


mam rozumieć że do utworzenia folderu jest taka funkcja
  1. <?php
  2. // Desired folder structure
  3. $structure = './depth1/depth2/depth3/';
  4.  
  5. // To create the nested structure, the $recursive parameter
  6. // to mkdir() must be specified.
  7.  
  8. if (!mkdir($structure, 0777, true)) {
  9. die('Failed to create folders...');
  10. }
  11.  
  12. // ...
  13. ?>

pobrane z phpmanual
Jeśli tak to gdzie to wstawić w powyższym kodzie rejestracji
Go to the top of the page
+Quote Post
Mega_88
post 14.08.2015, 08:50:44
Post #7





Grupa: Zarejestrowani
Postów: 360
Pomógł: 34
Dołączył: 20.08.2011

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


No folder tworzysz jak użytkownik się rejestruje więc nawet komentarz masz w kodzie:

  1. if (count($errors) == 0) {
  2. // Brak błędów, to rejestrujemy
Go to the top of the page
+Quote Post
bobek358
post 14.08.2015, 09:30:24
Post #8





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Cytat(grzes999 @ 14.08.2015, 09:20:58 ) *
Jeżeli tworzysz osobne katalogi dla każdego użytkownika to jaki jest sens zapisywanie jeszcze nazw tych plików w bazie danych? Można jedynie zapisać nazwę folderu, w którym znajdują się jego pliku, gdy by miał być inny niż login; a nawet lepiej żeby był inny niż login


Ja zawsze zapisuje w bazie do mam tam dodatkowe informacje i czasami sama nazwa mi się przydaje i nie muszę czytać zawartości katalogu aby mieć nazwy.


jaca121212, tak do tworzenia katalogów jest funkcja mkdir(),
Go to the top of the page
+Quote Post
jaca121212
post 16.08.2015, 09:18:31
Post #9





Grupa: Zarejestrowani
Postów: 256
Pomógł: 16
Dołączył: 21.12.2014

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


Dzieki pany udało mi się to zrobić tworzy folder tak jak chciałem może lepiej utorzę nowy temat odnośnie uploadu i downloadu pliku do folderu i zapisanie nazwy pliku do bazy danych i wyświetlanie z bazy danych nawy i możliwość pobrania go. CZy tworzyć nowy temat czy kontynuować tutaj to.

do uploadu mam taki plik jak zapisać nazwę pliku przesyłanego do bazy danych i do tego folderu co user właśnie utworzył przy rejestracji
  1. <?php
  2.  
  3. $target_dir = "foto/";
  4. $target_file = $target_dir .basename($_FILES["fileToUpload"]["name"]);
  5. $uploadOk = 1;
  6. $FileType = pathinfo($target_file,PATHINFO_EXTENSION);
  7. // Sprawdź, czy plik muzyką
  8. if(isset($_POST["submit"])) {
  9. $check = filesize($_FILES["fileToUpload"]["tmp_name"]);
  10. if($check !== false) {
  11. echo "";
  12. $uploadOk = 1;
  13. } else {
  14. echo "
  15. ";
  16. $uploadOk = 0;
  17. }
  18. }
  19. // Sprawdź, czy plik istnieje
  20. if (file_exists($target_file)) {
  21. echo "";
  22. $uploadOk = 0;
  23. }
  24. // Sprawdź rozmiar pliku
  25. if ($_FILES["fileToUpload"]["size"] >1000) {
  26. echo "Niestety, plik jest zbyt duży.";
  27. $uploadOk = 0;
  28. }
  29. // Umożliwienia niektórych formatów plików
  30. if($FileType == "mp3" ) {
  31. echo "Niestety, tylko plik mp3 jest dozwolony.";
  32. $uploadOk = 0;
  33. }
  34.  
  35. if ($uploadOk == 0) {
  36. echo "Niestety, plik nie został przesłany.";
  37.  
  38. } else {
  39. if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
  40. echo "Plik". basename( $_FILES["fileToUpload"]["name"]). " został przesłany.";
  41. } else {
  42. echo "Niestety, plik jest zbyt duży, plik nie został przesłany.";
  43. }
  44. }
  45. ?>

sorry pomyliłem temat nie w rejestracji a w uloat to miało być i dlatego teraz to zmieniam

Ten post edytował jaca121212 16.08.2015, 09:32:58
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:01