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ć.
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ć
czyli trzeba było by dodawać nowe kolumny o nazwa domena 2, domena 3 i do tego cena_domeny 2, cena domeny 3 itd ?
Ź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?
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
<?php http://www.php.net/session_start(); if ((!http://www.php.net/isset($_POST['login'])) || (!http://www.php.net/isset($_POST['haslo']))) { http://www.php.net/header('Location: index.php'); http://www.php.net/exit(); } require_once "connect.php"; $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name); if ($polaczenie->connect_errno!=0) { http://www.php.net/echo "Error: ".$polaczenie->connect_errno; } else { $login = $_POST['login']; $haslo = $_POST['haslo']; $login = http://www.php.net/htmlentities($login, ENT_QUOTES, "UTF-8"); if ($rezultat = @$polaczenie->query( http://www.php.net/sprintf("SELECT * FROM persons WHERE user='%s'", mysqli_real_escape_string($polaczenie,$login))) ) { $ilu_userow = $rezultat->num_rows; if($ilu_userow>0) { $wiersz = $rezultat->fetch_assoc(); if (password_verify($haslo, $wiersz['pass'])) { $_SESSION['zalogowany'] = true; $_SESSION['id'] = $wiersz['id']; $_SESSION['name'] = $wiersz['name']; $_SESSION['user'] = $wiersz['user']; $_SESSION['email'] = $wiersz['email']; http://www.php.net/unset($_SESSION['blad']); $rezultat->free_result(); http://www.php.net/header('Location: panel.php'); } else { $_SESSION['blad'] = '<span style="color:#cc0000">Błędny login lub hasło!</span>'; http://www.php.net/header('Location: index.php'); } } else { $_SESSION['blad'] = '<span style="color:#cc0000">Błędny login lub hasło!</span>'; http://www.php.net/header('Location: index.php'); } } $polaczenie->close(); } ?>
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.
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.
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:
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 = ?;
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
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
a co wstawiasz zamiast 1?
Przecież masz choćby $_SESSION['id'] które zawiera ID usera zalogowanego.
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.
require_once "connect.php"; $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name); $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']."'"); if($wynik->num_rows > 0) { while($wiersz = $wynik->fetch_assoc()) { http://www.php.net/echo '<div class="col-sm-6 col-md-4 col-lg-2"> <div class="box"><b>Nazwa Domeny</b></div> <div class="box2">'.$wiersz['domain_name'].'<br></div></div>'; } http://www.php.net/echo '<div class="col-sm-6 col-md-4 col-lg-2"> <div class="box"><b>Nazwa Domeny</b></div> <div class="box2"> '.$_SESSION["name"].'</div></div>'; }
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)