window.location.hash = '#$section';";
}
}
// Traitement de l'inscription
if (isset($_POST['action']) && $_POST['action'] == 'register') {
$nom = secure_input($_POST['nom']);
$prenom = secure_input($_POST['prenom']);
$email = secure_input($_POST['email']);
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
$errors = [];
// Validation
if (empty($nom) || empty($prenom) || empty($email) || empty($password)) {
$errors[] = "Tous les champs sont requis.";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Adresse email invalide.";
}
if ($password !== $confirm_password) {
$errors[] = "Les mots de passe ne correspondent pas.";
}
if (strlen($password) < 8) {
$errors[] = "Le mot de passe doit contenir au moins 8 caractères.";
}
// Vérifier si l'email existe déjà
$check_email = mysqli_query($conn, "SELECT id FROM users WHERE email = '$email'");
if (mysqli_num_rows($check_email) > 0) {
$errors[] = "Cette adresse email est déjà utilisée.";
}
if (empty($errors)) {
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$query = "INSERT INTO users (nom, prenom, email, password)
VALUES ('$nom', '$prenom', '$email', '$hashed_password')";
if (mysqli_query($conn, $query)) {
$_SESSION['success_message'] = "Compte créé avec succès ! Vous pouvez maintenant vous connecter.";
redirect('login');
} else {
$errors[] = "Erreur lors de la création du compte: " . mysqli_error($conn);
}
}
if (!empty($errors)) {
$_SESSION['error_message'] = implode(" ", $errors);
}
}
// Traitement de la connexion
if (isset($_POST['action']) && $_POST['action'] == 'login') {
$email = secure_input($_POST['email']);
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE email = '$email'";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) == 1) {
$user = mysqli_fetch_assoc($result);
if (password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['user_nom'] = $user['nom'];
$_SESSION['user_prenom'] = $user['prenom'];
$_SESSION['user_email'] = $user['email'];
$_SESSION['user_role'] = $user['role'] ?? 'student';
$_SESSION['success_message'] = "Connexion réussie !";
redirect('dashboard');
} else {
$_SESSION['error_message'] = "Mot de passe incorrect.";
}
} else {
$_SESSION['error_message'] = "Aucun compte trouvé avec cet email.";
}
}
// Traitement de la déconnexion
if (isset($_GET['logout'])) {
session_destroy();
session_start();
$_SESSION['success_message'] = "Déconnexion réussie.";
redirect('home');
}
// Traitement de l'inscription à un cours
if (isset($_POST['action']) && $_POST['action'] == 'enroll' && is_logged_in()) {
$course_id = intval($_POST['course_id']);
$user_id = $_SESSION['user_id'];
// Vérifier si déjà inscrit
$check = mysqli_query($conn, "SELECT id FROM inscriptions WHERE user_id = $user_id AND course_id = $course_id");
if (mysqli_num_rows($check) == 0) {
$date_fin = date('Y-m-d', strtotime('+20 days'));
$query = "INSERT INTO inscriptions (user_id, course_id, date_fin)
VALUES ($user_id, $course_id, '$date_fin')";
if (mysqli_query($conn, $query)) {
$_SESSION['success_message'] = "Inscription au cours réussie !";
redirect('dashboard');
} else {
$_SESSION['error_message'] = "Erreur lors de l'inscription: " . mysqli_error($conn);
}
} else {
$_SESSION['error_message'] = "Vous êtes déjà inscrit à ce cours.";
}
}
// Traitement du quiz
if (isset($_POST['action']) && $_POST['action'] == 'submit_quiz' && is_logged_in()) {
$quiz_id = intval($_POST['quiz_id']);
$module_id = intval($_POST['module_id']);
$responses = $_POST['responses'];
$user_id = $_SESSION['user_id'];
// Calculer le score
$score = 0;
$total = 0;
foreach ($responses as $question_id => $option_id) {
$total++;
$check_query = "SELECT is_correct FROM options WHERE id = $option_id AND question_id = $question_id";
$check_result = mysqli_query($conn, $check_query);
if ($check_result && $row = mysqli_fetch_assoc($check_result)) {
if ($row['is_correct']) {
$score++;
}
}
}
$percentage = $total > 0 ? round(($score / $total) * 100) : 0;
// Enregistrer le résultat
$query = "INSERT INTO quiz_results (user_id, quiz_id, score, total_questions)
VALUES ($user_id, $quiz_id, $percentage, $total)";
if (mysqli_query($conn, $query)) {
// Si le score est suffisant, marquer le module comme terminé
if ($percentage >= 70) {
$update_query = "UPDATE progress SET termine = 1, date_complete = NOW()
WHERE user_id = $user_id AND module_id = $module_id";
mysqli_query($conn, $update_query);
// Mettre à jour la progression globale
update_user_progression($user_id, $module_id);
}
$_SESSION['quiz_result'] = [
'score' => $percentage,
'total' => $total,
'correct' => $score,
'passed' => $percentage >= 70
];
$_SESSION['success_message'] = $percentage >= 70
? "Félicitations ! Vous avez réussi le quiz avec $percentage%."
: "Quiz terminé. Vous avez obtenu $percentage%. Un score de 70% minimum est requis.";
redirect('quiz_result');
}
}
// Fonction pour mettre à jour la progression
function update_user_progression($user_id, $module_id) {
global $conn;
// Récupérer le cours et le jour
$query = "SELECT m.course_id, m.jour FROM modules m WHERE m.id = $module_id";
$result = mysqli_query($conn, $query);
if ($result && $module = mysqli_fetch_assoc($result)) {
// Mettre à jour le jour actuel
$update_query = "UPDATE inscriptions
SET jour_actuel = GREATEST(jour_actuel, " . ($module['jour'] + 1) . ")
WHERE user_id = $user_id AND course_id = {$module['course_id']}";
mysqli_query($conn, $update_query);
}
}
// Récupération des données
$categories = [];
$courses = [];
$user_courses = [];
$current_course = null;
$current_module = null;
$quiz = null;
// Récupérer les catégories
$cat_query = "SELECT * FROM categories ORDER BY nom";
$cat_result = mysqli_query($conn, $cat_query);
if ($cat_result) {
while ($row = mysqli_fetch_assoc($cat_result)) {
$categories[] = $row;
}
}
// Récupérer les cours
$course_query = "SELECT c.*, cat.nom as categorie_nom, cat.couleur
FROM courses c
JOIN categories cat ON c.categorie_id = cat.id
WHERE c.is_published = 1
ORDER BY c.date_creation DESC";
$course_result = mysqli_query($conn, $course_query);
if ($course_result) {
while ($row = mysqli_fetch_assoc($course_result)) {
$courses[] = $row;
}
}
// Récupérer les cours de l'utilisateur connecté
if (is_logged_in()) {
$user_id = $_SESSION['user_id'];
$user_courses_query = "SELECT i.*, c.titre, c.slug, c.image_url, cat.nom as categorie_nom,
(SELECT COUNT(*) FROM modules m WHERE m.course_id = c.id) as total_modules,
(SELECT COUNT(*) FROM progress p
WHERE p.user_id = i.user_id AND p.course_id = i.course_id AND p.termine = 1) as modules_completes
FROM inscriptions i
JOIN courses c ON i.course_id = c.id
JOIN categories cat ON c.categorie_id = cat.id
WHERE i.user_id = $user_id
ORDER BY i.date_inscription DESC";
$user_courses_result = mysqli_query($conn, $user_courses_query);
if ($user_courses_result) {
while ($row = mysqli_fetch_assoc($user_courses_result)) {
$row['progression'] = $row['total_modules'] > 0
? round(($row['modules_completes'] / $row['total_modules']) * 100)
: 0;
$user_courses[] = $row;
}
}
}
// Récupérer le cours courant si demandé
if (isset($_GET['course_id'])) {
$course_id = intval($_GET['course_id']);
$current_course_query = "SELECT c.*, cat.nom as categorie_nom, cat.couleur
FROM courses c
JOIN categories cat ON c.categorie_id = cat.id
WHERE c.id = $course_id";
$current_course_result = mysqli_query($conn, $current_course_query);
if ($current_course_result && mysqli_num_rows($current_course_result) > 0) {
$current_course = mysqli_fetch_assoc($current_course_result);
// Récupérer les modules
$modules_query = "SELECT * FROM modules WHERE course_id = $course_id ORDER BY jour ASC";
$modules_result = mysqli_query($conn, $modules_query);
$modules = [];
if ($modules_result) {
while ($row = mysqli_fetch_assoc($modules_result)) {
$modules[] = $row;
}
}
// Récupérer le module courant
$current_module_id = isset($_GET['module_id']) ? intval($_GET['module_id']) : 0;
if ($current_module_id > 0) {
$module_query = "SELECT * FROM modules WHERE id = $current_module_id";
$module_result = mysqli_query($conn, $module_query);
if ($module_result && mysqli_num_rows($module_result) > 0) {
$current_module = mysqli_fetch_assoc($module_result);
// Récupérer le quiz du module
$quiz_query = "SELECT * FROM quizzes WHERE module_id = $current_module_id";
$quiz_result = mysqli_query($conn, $quiz_query);
if ($quiz_result && mysqli_num_rows($quiz_result) > 0) {
$quiz = mysqli_fetch_assoc($quiz_result);
// Récupérer les questions
$questions_query = "SELECT * FROM questions WHERE quiz_id = {$quiz['id']}";
$questions_result = mysqli_query($conn, $questions_query);
$questions = [];
if ($questions_result) {
while ($row = mysqli_fetch_assoc($questions_result)) {
// Récupérer les options
$options_query = "SELECT * FROM options WHERE question_id = {$row['id']}";
$options_result = mysqli_query($conn, $options_query);
$options = [];
if ($options_result) {
while ($opt = mysqli_fetch_assoc($options_result)) {
$options[] = $opt;
}
}
$row['options'] = $options;
$questions[] = $row;
}
}
$quiz['questions'] = $questions;
}
}
}
}
}
?>
FormTech - Formation en Informatique
Quiz terminé ! Score: %
Formez-vous aux métiers du numérique
Des formations complètes de 20 jours avec suivi personnalisé et évaluation continue
Accès restreint
Vous devez être connecté pour accéder à cette page.
Se connecter
Bonjour, ! 👋
Bienvenue sur votre tableau de bord. Continuez votre apprentissage.
Nouvelle formation
0) {
$average_progress = round($average_progress / $total_courses);
}
?>
Aucune formation
Vous n'êtes inscrit à aucune formation pour le moment.
Parcourir les formations
Jour actuel : /20
/20 modules
Continuer
Tableau de bord
Formations
Sélectionnez un module dans la barre latérale pour afficher son contenu.
Cours non trouvé
Le cours demandé n'existe pas ou n'est plus disponible.
Parcourir les formations
Quiz non disponible
Le quiz demandé n'est pas disponible pour le moment.
Retour au cours
%
Questions répondues:
Réponses correctes:
Score:
%
Résultat:
Réessayer le quiz
Retour au tableau de bord
Aucun résultat
Aucun résultat de quiz à afficher.
Retour au tableau de bord
Notre Vision
FormTech a été créé avec une vision simple : démocratiser l'accès à la formation informatique de qualité. Nous croyons que tout le monde devrait avoir la possibilité d'acquérir des compétences numériques essentielles, quelle que soit sa situation géographique ou son background.
Notre Méthodologie
Notre approche unique de formation sur 20 jours a été développée par des experts pédagogiques. Chaque programme est soigneusement structuré pour permettre une progression régulière et mesurable, avec des évaluations quotidiennes pour renforcer les acquis.
Nos Valeurs
Accessibilité : Des formations abordables pour tous
Qualité : Contenu créé par des experts du secteur
Pratique : Approche centrée sur la mise en pratique
Flexibilité : Apprenez à votre rythme, où que vous soyez
Support : Accompagnement continu tout au long de votre parcours
Notre Équipe
Notre équipe est composée de professionnels passionnés par l'éducation et la technologie. Des développeurs expérimentés, des administrateurs systèmes certifiés, des formateurs pédagogues et des designers UX/UI travaillent ensemble pour créer la meilleure expérience d'apprentissage possible.