Как создать домашнюю страницу пользователя, управляемую базой данных, на основе register in PHP
Я попал в затруднительное положение, и мне очень нужна ваша помощь, если у вас есть хоть какое-то понимание. Короче говоря, в настоящее время я занимаюсь проектом типа учебного портала и хочу, чтобы он полностью управлялся базой данных, чтобы при регистрации на модуль этот конкретный модуль появлялся в профиле пользователя, потому что на данный момент не имеет значения, войдет ли Том, Дик или Гарри, все они видят одни и те же три модуля для конкретного курса.
Таким образом, после регистрации пользователь выбирает курс, появляется список соответствующих модулей, а затем пользователь выбирает свои модули. Исходя из этого, их домашняя страница будет заполнена кодом html &CSS, прикрепленным к этому модулю.
Есть 3 таблицы, которые взаимодействуют с этим разделом. UserDemo, курс и модуль.
Вот код, который я должен сделать с регистрацией в качестве пользователя в настоящее время (курс & модули должны быть добавлены)
accounts\signup.php
<?php include '../inc/db.php'; include '../inc/functions.php'; if (isset($_POST['signup'])) { $fName = p_s($_POST['fName']); $lName = p_s($_POST['lName']); $email = p_s($_POST['email']); $password = p_s($_POST['password']); $rpassword = p_s($_POST['rpassword']); $contentID = p_s($_POST['contentID']); if (!empty($fName) && !empty($lName) && !empty($email) && !empty($password) && !empty($contentID)) { if (strlen($password) === strlen($rpassword)) { $options = [ 'cost' => 12, ]; $password = password_hash($password, PASSWORD_BCRYPT, $options); $created_at = date('Y-m-d G:i:s'); $sql = "INSERT INTO usersDemo (fName, lName, email, password, contentID, status, created_at) VALUES ('$fName','$lName', '$email', '$password', '$contentID', 'approved', '$created_at')"; if (mysqli_query($conn, $sql)) { header('Location: ../signup.php?suc');exit(); } }else{ header('Location: ../signup.php?fidpass');exit(); } }else{ header('Location: ../signup.php?fempt');exit(); } }
inc\signup.php
<form action="accounts/signup.php" method="POST"> <div id="fade-box"> <h2>Register</h2> <div class="form-group"> <input name="fName" type="text" class="form-control" id="fName" placeholder="Enter your first name" required> </div> <div class="form-group"> <input name="lName" type="text" class="form-control" id="lName" placeholder="Enter your last name" required> </div> <div class="form-group"> <input name="email" type="email" class="form-control" id="email" placeholder="Email" required> </div> <div class="form-group"> <input name="password" type="password" class="form-control" id="password" placeholder="Password" required> </div> <div class="form-group"> <input name="rpassword" type="password" class="form-control" id="rpassword" placeholder="Repeat Password" required> </div> <div class="form-group"> <input name="contentID" type="text" class="form-control" id="contentID" placeholder="Enter your contentID" required> </div> <button name="signup" type="submit" class="btn btn-success">Register</button> </div> </form>
Глобальные функции для проверки входа в систему
function checkIfEmailExist($email){ global $conn; $data[]=array(); $sql = "SELECT userID FROM usersDemo WHERE email ='$email'"; $run = mysqli_query($conn, $sql); $rows =mysqli_num_rows($run); if ($rows == 0) { return false; }else{ return true; } } function checkPassword($email, $password){ global $conn; $sql = "SELECT password FROM usersDemo WHERE email ='$email'"; $run = mysqli_query($conn, $sql); while ($rows = mysqli_fetch_assoc($run)) { $hashedDBPass = $rows['password']; } if (password_verify($password, $hashedDBPass)) { return true; }else{ return false; } }
Что я уже пробовал:
Это мой текущий план атаки:
Выберите имя модуля, описание модуля из БД
Дисплей на экране
Итерация по значениям и отображение
Скопируйте код для пользовательского интерфейса в цикл for
Каково было бы ваше мнение об этом плане нападения или кто-нибудь знает альтернативный (и, возможно, более простой) способ его осуществления.
Заранее спасибо за ваше время и помощь :)