Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]rejestracja
Forum PHP.pl > Forum > Przedszkole
jaca121212
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
bobek358
Podstawowe pytanie po co dla każdego użytkownika chcesz tworzyć tabelę w bazie?
jaca121212
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?
bobek358
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.
grzes999
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
jaca121212
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
Mega_88
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
bobek358
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(),
jaca121212
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
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.