Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Panel logownia a info z bazy danych
Forum PHP.pl > Forum > Bazy danych
inomi13
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ć.
olszam
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
inomi13
czyli trzeba było by dodawać nowe kolumny o nazwa domena 2, domena 3 i do tego cena_domeny 2, cena domeny 3 itd ?
Tomplus
Ź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?
inomi13
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.  
  4. if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
  5. {
  6. header('Location: index.php');
  7. exit();
  8. }
  9.  
  10. require_once "connect.php";
  11.  
  12. $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  13.  
  14. if ($polaczenie->connect_errno!=0)
  15. {
  16. echo "Error: ".$polaczenie->connect_errno;
  17. }
  18. else
  19. {
  20. $login = $_POST['login'];
  21. $haslo = $_POST['haslo'];
  22.  
  23. $login = htmlentities($login, ENT_QUOTES, "UTF-8");
  24.  
  25. if ($rezultat = @$polaczenie->query(
  26. sprintf("SELECT * FROM persons WHERE user='%s'",
  27. mysqli_real_escape_string($polaczenie,$login)))
  28. )
  29. {
  30. $ilu_userow = $rezultat->num_rows;
  31. if($ilu_userow>0)
  32. {
  33. $wiersz = $rezultat->fetch_assoc();
  34.  
  35. if (password_verify($haslo, $wiersz['pass']))
  36. {
  37. $_SESSION['zalogowany'] = true;
  38. $_SESSION['id'] = $wiersz['id'];
  39. $_SESSION['name'] = $wiersz['name'];
  40. $_SESSION['user'] = $wiersz['user'];
  41. $_SESSION['email'] = $wiersz['email'];
  42.  
  43.  
  44.  
  45. unset($_SESSION['blad']);
  46. $rezultat->free_result();
  47. header('Location: panel.php');
  48. }
  49. else
  50. {
  51. $_SESSION['blad'] = '<span style="color:#cc0000">Błędny login lub hasło!</span>';
  52. header('Location: index.php');
  53. }
  54.  
  55. } else {
  56.  
  57. $_SESSION['blad'] = '<span style="color:#cc0000">Błędny login lub hasło!</span>';
  58. header('Location: index.php');
  59.  
  60. }
  61.  
  62. }
  63.  
  64. $polaczenie->close();
  65. }
  66.  
  67. ?>
  68.  
Tomplus
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.
inomi13
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.

Tomplus
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 = ?;
inomi13
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
Tomplus
a co wstawiasz zamiast 1?

Przecież masz choćby $_SESSION['id'] które zawiera ID usera zalogowanego.
inomi13
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. 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. 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. }



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.