Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Bazy danych _ Panel logownia a info z bazy danych

Napisany przez: inomi13 9.07.2019, 08:32:52

Witam, posiadam zrobiony panel logowania który po zalogowaniu pokazuje informacje takie jak na zdjęciu i wszystko ładnie działa ale tylko w sytuacji jeżeli jeden użytkownik posiada jedną domenę jednak co w sytuacji gdyby użytkownik posiadał kilka domen? Drugi problem to chciał bym zrobić coś takiego żeby użytkownik otrzymywał e-maila z informacją że ważność domeny wygasa. Proszę o jakieś sugestię jak się do tego wszystkiego zabrać.

Napisany przez: olszam 9.07.2019, 09:17:40

1. najlepiej wyjdzie jak dla domen zrobisz drugą tabelę wraz z cenną itd.
2. ustawić CRON by odpalał cyklicznie skrypt sprawdzający czy ma wysłać przypomnienie czy nie.

ja tu tylko takie rozwiązanie widzę, choć nie wiem co inni mogą doradzić smile.gif

Napisany przez: inomi13 9.07.2019, 09:21:27

czyli trzeba było by dodawać nowe kolumny o nazwa domena 2, domena 3 i do tego cena_domeny 2, cena domeny 3 itd ?

Napisany przez: Tomplus 9.07.2019, 10:05:10

Źle zrozumiałeś. Chodzi o nową tabelę. Nawet nowe tabele.

Jedna tabela zawiera nazwy użytkownika, hasło i inne dane.

Druga to lista domen które są w systemie i każda z nich jest przypisana do użytkownika, z informacją kiedy wygasa.

Trzecia domena to np. historia płatności. itd.


Bo z Twojego pomysłu co jeżeli użytkownik postanowi u Ciebie kupić 100 domen.
Będziesz miał 100 dodatkowych kolumn?

Napisany przez: inomi13 9.07.2019, 13:42:40

Zgodnie z sugestią założyłem tabelę "persons" oraz "domain". Relację między tabelami połączyłem kolumną "id_domeny" jednak mam problem z zaczytaniem wiersza z drugiej tabeli. Poniżej kod logujący do bazy danych

  1. <?php
  2.  
  3. http://www.php.net/session_start();
  4.  
  5. if ((!http://www.php.net/isset($_POST['login'])) || (!http://www.php.net/isset($_POST['haslo'])))
  6. {
  7. http://www.php.net/header('Location: index.php');
  8. http://www.php.net/exit();
  9. }
  10.  
  11. require_once "connect.php";
  12.  
  13. $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  14.  
  15. if ($polaczenie->connect_errno!=0)
  16. {
  17. http://www.php.net/echo "Error: ".$polaczenie->connect_errno;
  18. }
  19. else
  20. {
  21. $login = $_POST['login'];
  22. $haslo = $_POST['haslo'];
  23.  
  24. $login = http://www.php.net/htmlentities($login, ENT_QUOTES, "UTF-8");
  25.  
  26. if ($rezultat = @$polaczenie->query(
  27. http://www.php.net/sprintf("SELECT * FROM persons WHERE user='%s'",
  28. mysqli_real_escape_string($polaczenie,$login)))
  29. )
  30. {
  31. $ilu_userow = $rezultat->num_rows;
  32. if($ilu_userow>0)
  33. {
  34. $wiersz = $rezultat->fetch_assoc();
  35.  
  36. if (password_verify($haslo, $wiersz['pass']))
  37. {
  38. $_SESSION['zalogowany'] = true;
  39. $_SESSION['id'] = $wiersz['id'];
  40. $_SESSION['name'] = $wiersz['name'];
  41. $_SESSION['user'] = $wiersz['user'];
  42. $_SESSION['email'] = $wiersz['email'];
  43.  
  44.  
  45.  
  46. http://www.php.net/unset($_SESSION['blad']);
  47. $rezultat->free_result();
  48. http://www.php.net/header('Location: panel.php');
  49. }
  50. else
  51. {
  52. $_SESSION['blad'] = '<span style="color:#cc0000">Błędny login lub hasło!</span>';
  53. http://www.php.net/header('Location: index.php');
  54. }
  55.  
  56. } else {
  57.  
  58. $_SESSION['blad'] = '<span style="color:#cc0000">Błędny login lub hasło!</span>';
  59. http://www.php.net/header('Location: index.php');
  60.  
  61. }
  62.  
  63. }
  64.  
  65. $polaczenie->close();
  66. }
  67.  
  68. ?>
  69.  

Napisany przez: Tomplus 9.07.2019, 22:31:04

Zamiast dawać nam kod logowania który nic nie wnosi, przedstaw jak wygląda kod zapytania SQL.

Bo w tej chwili nie wiem, czy ma być lista domen z użytkownikami, czy lista użytkowników z domenami.

Napisany przez: inomi13 10.07.2019, 07:46:59

Nie wiem czy to dobrze zrobiłem ale obie tabele są połączone kolumną "id_domain". Na zdjęciu pokazałem jaki ma być efekt finalny.


Napisany przez: Tomplus 10.07.2019, 09:51:36

1.
Po co Ci w `domains` kolumna `id_domain` ? Przecież już masz, jest to kolumna ID.
W tym miejscu powinna być kolumna `id_person`

2.
W kolumnie `persons` nie potrzebna jest kolumne `id_domains` - usuń to.

Chyba że to jakieś grupowanie?

Teraz aby wyświetlić wszystkie domeny to masz zapytanie:

  1. SELECT p.name, d.domain_name, d.domain_expired FROM domains d LEFT JOIN persons p ON d.id_person = p.id WHERE p.id = ?;

Napisany przez: inomi13 10.07.2019, 12:11:45

Poprawiłem tabele żeby to miało ręce i nogi, teraz zastanawiam się czy zapytania do bazy danych zrobić w pliku login.php czy po weryfikacji danych logowania i po przeniesieniu na stronę panel.php?



Poprawnie działa zapytanie dla "id=1" natomiast nie wiem jak zrobić żeby wypisywało dane dla "id" które jest aktualnie zalogowany

  1. SELECT p.name, d.domain_name, d.end FROM domain d LEFT JOIN persons p ON d.id_person = p.id WHERE p.id = 1

Napisany przez: Tomplus 10.07.2019, 14:05:10

a co wstawiasz zamiast 1?

Przecież masz choćby $_SESSION['id'] które zawiera ID usera zalogowanego.

Napisany przez: inomi13 11.07.2019, 08:38:38

Kod działa, jednak został ostatni problem tzn. chciałbym aby móc wyciągnąć dane za pętli while aby wyglądało tak jak na zdjęciu.

  1. require_once "connect.php";
  2.  
  3. $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  4. $wynik = $polaczenie->query("SELECT p.name, d.domain_name, d.domain_price, d.domain_end FROM domain d LEFT JOIN persons p ON d.id_person = p.id WHERE p.id = '".$_SESSION['id']."'");
  5.  
  6. if($wynik->num_rows > 0)
  7. {
  8. while($wiersz = $wynik->fetch_assoc())
  9. {
  10.  
  11. http://www.php.net/echo '<div class="col-sm-6 col-md-4 col-lg-2">
  12. <div class="box"><b>Nazwa Domeny</b></div>
  13. <div class="box2">'.$wiersz['domain_name'].'<br></div></div>';
  14.  
  15.  
  16.  
  17. }
  18. http://www.php.net/echo '<div class="col-sm-6 col-md-4 col-lg-2">
  19. <div class="box"><b>Nazwa Domeny</b></div>
  20. <div class="box2"> '.$_SESSION["name"].'</div></div>';
  21.  
  22.  
  23.  
  24. }




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)