Voici mon fichier Routeur, (dsl j'ai voulu mettre un minimum en code, malheureusement je peux pas rééditer mon 1er post étant donné que j'ai fais l'erreur d'avoir posté sans etre loggué au forum, donc je vais mettre toutes les infos sur ce post pour mieux comprendre l'intégralité de mon code.) Désolé par avance, il est assez long.
Fichier "Routeur" donc c'est mon index.php
<?php
require('controller/frontend.php');
try {
if ($_GET['action'] == 'register') {
register();
}
Fichier "controller" donc frontend.php
<?php
// Chargement des classes
require_once('model/Register.php');
function register()
{
require('view/frontend/registerView.php');
$registerManager = new Registers();
$controlUser = $registerManager->reqUsername();
$controlEmail = $registerManager->reqEmail();
$controlRegister = $registerManager->reqRegister();
$errors = array();
if(!empty($_POST))
{
if (empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username']))
{
$errors['username'] = "Votre pseudo n'est pas valide";
} else {
$controlUser;
if ($user)
{
$errors['username'] = "Ce pseudo est déjà pris";
}
}
if (empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
$errors['email'] = "Votre email n'est pas valide";
} else {
$controlEmail;
if ($user)
{
$errors['email'] = "Cet email est déjà pris";
}
}
if (empty($_POST['password']))
{
$errors['password'] = "Votre mot de passe n'est pas valide";
}
if ($_POST['password'] != $_POST['password_confirm'])
{
$errors['password'] = "Votre mot de passe est différent de celui de confirmation";
}
if(empty($errors))
{
$controlRegister;
}
}
}
Fichier "model" donc Register.php
<?php
require_once("model/Manager.php");
class Registers extends Manager
{
public function reqUsername()
{
$db = $this->dbConnect();
$req = $db->prepare('SELECT id FROM users WHERE username = ?');
$req->execute([$_POST['username']]);
$user = $req->fetch();
}
public function reqEmail()
{
$db = $this->dbConnect();
$req = $db->prepare('SELECT id FROM users WHERE email = ?');
$req->execute([$_POST['email']]);
$user = $req->fetch();
}
public function reqRegister()
{
$db = $this->dbConnect();
$success = "Votre compte a bien été crée";
$req = $db->prepare("INSERT INTO users set username = ?, password = ?, email = ?");
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$req->execute([$_POST['username'], $password, $_POST['email']]);
die($success);
}
}
?>
Fichier "View" donc registerView.php
<!DOCTYPE html>
<html lang="fr">
<head>
<!----Meta Tags---->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!----CSS files---->
<link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="css/signin.css">
<!----Js Lib---->
<script src="http://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<title><?= $title ?></title>
</head>
<body>
<?php if(!empty($errors)): ?>
<div class="alert alert-danger">
<p>Vous n'avez pas rempli le formulaire correctement</p>
<ul>
<?php foreach ($errors as $error): ?>
<li><?= $error; ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<form class="form-signin" method="POST">
<h1>Veuillez remplir le formulaire</h1>
<div class="form-group">
<label for="">Pseudo</label>
<input type="text" name="username" class="form-control">
</div>
<div class="form-group">
<label for="">Email</label>
<input type="email" name="email" class="form-control">
</div>
<div class="form-group">
<label for="">Mot de passe</label>
<input type="password" name="password" class="form-control">
</div>
<div class="form-group">
<label for="">Confirmez votre mot de passe</label>
<input type="password" name="password_confirm" class="form-control">
</div>
<button type="submit" class="btn btn-primary">Enregister</button>
<button type="button" class="btn btn-secondary"><a href="index.php">Annuler</a></button>
</form>
</div>
</body>
En ce qui concerne le fichier Manager.php c'est tou simplement là ou je stock ma fonction dbConnect() pour me connecter à ma base de donnée. Comme le code est très long j'ai voulu mettre jutre un minimum. Mais c'est sur que ça n'aidera pas. donc si on regarde mon HTML côté formulaire. Dans ma balise form, j'indique la méthode POST et les bouton du formulaire sont a l'interieur de ma balise form. je precise que le code en question n'avait aucun probleme lorsque c'était regroupé en 1 seul fichier, c'est depuis que je l'ai passé en MVC que ça ne va plus.
Code du modal qui contient le bouton pour m'envoyer sur la page de register
<form action="index.php?action=login" method="POST">
<div class="modal-body">
<div class="form-group">
<label for="">Email</label>
<input type="email" name="email" class="form-control" required/>
</div>
<div class="form-group">
<label for="">Mot de passe</label>
<input type="password" name="password" class="form-control" required/>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary" name="connexion" value="Connexion">Connexion</button>
<button type="button" class="btn btn-secondary"><a id="create-account" href="index.php?action=register">créer un compte</a></button>
</div>
</form>